Stu Mason
Stu Mason

Activity

StuMason/cleanconnect
TidyLinker.com
TypeScript
Pull Request Merged

PR #126 merged: feat: shareable public job pages + re-notify cleaners on job update

Summary

Two features Adele requested:

Shareable public job pages:

  • New public route /jobs/{jobPosting} — no login required
  • Only shows open jobs (404 for draft/cancelled/completed)
  • Full OG meta tags for Facebook/social sharing (title, description, image, twitter cards)
  • Share button with copy-to-clipboard
  • Shows services, masked postcode, property details, schedule, budget type
  • CTA sidebar: "Sign up as a cleaner" / "Post a job"
  • Uses landing header/footer layout

Re-notify cleaners on job update:

  • When a job is edited and saved, matching cleaners are notified again
  • New RenotifyMatchingCleaners listener handles JobUpdated event
  • Matching logic extracted to NotifyMatchingCleaners::notifyMatching() static method (shared, not duplicated)
  • Same criteria: services, location, service area radius

Also confirmed: DBS is NOT required for cleaner visibility — only ID + RTW. Already correct in scopeSearchable().

Note: OG image at /images/tidylinker-og.png (1200x630) needs creating separately.

Test plan

  • Visit /jobs/{uid} as guest — job page renders with details
  • Draft/cancelled jobs return 404
  • Postcode is masked (CB1 2AB shows as CB1)
  • Copy the URL and paste in Facebook — OG tags render title + description
  • Edit a job as a client — matching cleaners receive notification
  • Share button copies URL to clipboard
+533
additions
-2
deletions
7
files changed