Every job on Tour Dash was only visible to the people who could take it. Right for a marketplace, wrong for a shop window: with no contractors on the live database, nobody could see the handyman job Carey posted except Carey. tourdash.io/jobs now shows what agents are posting to anyone, at town level, and every job has its own page, built to be sent to the person who should take it.
A demand feed, not a third board. It shows the work exists and points at the account that can take it. Applying still happens in the app.
The function was created on the live database the same afternoon, and the first job on the public board is the one that started this: the handyman job in Seaside Heights. The page shows its town, its date, "by quote", the brokerage and who takes it, and none of the address, the time or the poster's name. A link to a job id that does not exist says the job is not on the board any more rather than erroring.
Town and brokerage names arrive in whatever case the poster typed them ("Seaside heights", "Signature realty"). The feed shows them as entered rather than guessing at capitalisation, which would get names like McLean wrong.
| File | What it is |
|---|---|
| supabase/job-feed-migration.sql | job_feed(limit, job_id): the public read, security definer, granted to anon and authenticated. |
| src/hooks/useJobFeed.ts | The feed and one-job queries, with the demo store's twin. |
| src/lib/job-feed.ts | Who takes it, town and pay labels, posted-ago, grouping by day, the figures. |
| src/components/marketing/MarketingShell.tsx | The still version of the landing's chrome, shared by both pages. |
| src/pages/Jobs.tsx, src/pages/Job.tsx | The feed and a job's page. |
| src/components/NearbyWorkCard.tsx | The board's card for work this account cannot take. |
| src/pages/FindOpportunities.tsx | The For you / All nearby scope. |
| src/lib/hosts.ts | marketingHref(), the link from the app back out to the public page. |
| src/App.tsx, src/demo/DemoApp.tsx | The two routes, on either host, signed in or out, and under /demo. |