Goal
Create the admin applicants table, single-applicant detail page, decision/RSVP inline editors, and CSV export. No real logic yet, stubs only.
The shared (admin)/layout.tsx is created by Ticket 5. This ticket only adds applicants pages inside it.
Folders to create
Files to create
Routes
Library
Components
Acceptance criteria
Goal
Create the admin applicants table, single-applicant detail page, decision/RSVP inline editors, and CSV export. No real logic yet, stubs only.
The shared
(admin)/layout.tsxis created by Ticket 5. This ticket only adds applicants pages inside it.Folders to create
src/app/(admin)/admin/applicants/src/app/(admin)/admin/applicants/[id]/src/app/api/v1/applicants/[id]/src/app/api/v1/export/applications/src/app/api/v1/export/post-acceptance/src/lib/applicants/src/components/admin/applicants/Files to create
Routes
src/app/(admin)/admin/applicants/page.tsx— filterable/sortable applicant tablesrc/app/(admin)/admin/applicants/[id]/page.tsx— single applicant detail + decision/RSVP editsrc/app/api/v1/applicants/route.ts—GETpaginated/filtered applicants listsrc/app/api/v1/applicants/[id]/route.ts—GETsingle applicant;POSTdecision/RSVP updatessrc/app/api/v1/export/applications/route.ts— CSV export of application responsessrc/app/api/v1/export/post-acceptance/route.ts— CSV export of RSVP responsesLibrary
src/lib/applicants/queries.ts—buildApplicantQuery(filters)for Mongosrc/lib/applicants/service.ts—listApplicants(),getApplicant(),updateApplicant()src/lib/applicants/csv.ts—toCsv(rows, columns)helper, streams to responsesrc/lib/applicants/types.ts—ApplicantSummary,ApplicantDetail,ApplicantFilters,ApplicantUpdatetypesComponents
src/components/admin/applicants/ApplicantsTable.tsx— shadcn DataTable with sort/filter/paginationsrc/components/admin/applicants/ApplicantsFilters.tsx— status/decision/search filter barsrc/components/admin/applicants/ApplicantDetail.tsx— read-only view of one applicant's responsessrc/components/admin/applicants/DecisionEditor.tsx— inline edit fordecisionStatussrc/components/admin/applicants/RsvpEditor.tsx— inline edit forrsvpStatussrc/components/admin/applicants/ExportButtons.tsx— "Export applications CSV" / "Export RSVPs CSV"Acceptance criteria
/admin/applicantsrenders the table with mock data./admin/applicants/[id]renders the detail view with mock data.GEThandlers return typed mocks;POSTand CSV export handlers return 501.