Source of truth
Full master plan (schema, actions, routes, components, search, i18n, implementation order, out-of-scope, open questions): docs/job-listing.md
Status in doc: Draft (2026-04-05)
Summary
Embed a job board in TechDiary: companies as shared workspaces (Owner / Manager), job postings with Markdoc bodies, public discovery at /jobs, and dashboard management. Apply stays external in V1 (URL or email); no in-platform applications yet.
Key routes
| Area |
Path |
| Public board |
/jobs |
| Job detail |
/jobs/[handle] |
| Company page |
/companies/[handle] |
| Dashboard jobs |
/dashboard/jobs, /dashboard/jobs/new, /dashboard/jobs/[id] |
| Dashboard company |
/dashboard/company, members, settings |
Highlights
- Actors: Job seeker (browse; login for bookmark / comments), Owner vs Manager with permission matrix in doc §3.2.
- Join company: Owner invite (notification + accept) or join secret code (instant Manager).
- Data model:
company_profiles, company_members, company_invites, job_listings, job_listing_tags; extend bookmarks/comments resource_type with JOB.
- Stack fit: SQLKit repos, server actions + Zod, MeiliSearch index
job_listings, CommentSection on job detail, HomepageLayout on /jobs.
Implementation order (from doc §15)
- DB → domain models → repos → inputs
company.actions.ts then job.actions.ts
- Public
/jobs, /jobs/[handle], /companies/[handle]
- Dashboard jobs + company management
- Search sync, sitemaps, i18n
Out of scope (V1)
In-platform applications, application tracking, resume upload, email job alerts, paid featured listings, etc. — see doc §16.
Open questions (doc §17)
Track product decisions before / during build (posting without company, moderation, default expiry, salary requiredness, invite expiry, …).
Next steps
Break into smaller implementation issues (DB migration, company CRUD, job CRUD, public UI, search, …) and link them here as sub-tasks.
Source of truth
Full master plan (schema, actions, routes, components, search, i18n, implementation order, out-of-scope, open questions):
docs/job-listing.mdStatus in doc: Draft (2026-04-05)
Summary
Embed a job board in TechDiary: companies as shared workspaces (Owner / Manager), job postings with Markdoc bodies, public discovery at
/jobs, and dashboard management. Apply stays external in V1 (URL or email); no in-platform applications yet.Key routes
/jobs/jobs/[handle]/companies/[handle]/dashboard/jobs,/dashboard/jobs/new,/dashboard/jobs/[id]/dashboard/company, members, settingsHighlights
company_profiles,company_members,company_invites,job_listings,job_listing_tags; extend bookmarks/commentsresource_typewithJOB.job_listings,CommentSectionon job detail,HomepageLayouton/jobs.Implementation order (from doc §15)
company.actions.tsthenjob.actions.ts/jobs,/jobs/[handle],/companies/[handle]Out of scope (V1)
In-platform applications, application tracking, resume upload, email job alerts, paid featured listings, etc. — see doc §16.
Open questions (doc §17)
Track product decisions before / during build (posting without company, moderation, default expiry, salary requiredness, invite expiry, …).
Next steps
Break into smaller implementation issues (DB migration, company CRUD, job CRUD, public UI, search, …) and link them here as sub-tasks.