Goal
Create the admin settings panel (date controls, show-decision toggle, form config editor) and the singleton data layer. No real logic yet, stubs only
This ticket also creates the shared (admin)/layout.tsx file that other admin tickets will rely on, plus the admin landing page.
Folders to create
Files to create
Routes
Library
Components
Acceptance criteria
Goal
Create the admin settings panel (date controls, show-decision toggle, form config editor) and the singleton data layer. No real logic yet, stubs only
This ticket also creates the shared
(admin)/layout.tsxfile that other admin tickets will rely on, plus the admin landing page.Folders to create
src/app/(admin)/admin/settings/src/app/api/v1/dates/registration-open/src/app/api/v1/dates/registration-closed/src/app/api/v1/dates/confirm-by/src/app/api/v1/show-decision/src/app/api/v1/admin/form-config/src/lib/admin/src/components/admin/Files to create
Routes
src/app/(admin)/layout.tsx— admin shell (sidebar, header); placeholder admin checksrc/app/(admin)/admin/page.tsx— admin landing, tiles linking to settings/applicants/statssrc/app/(admin)/admin/settings/page.tsx— date controls + show-decision toggle + form config editorsrc/app/api/v1/dates/registration-open/route.ts—GET/POSTsingletonsrc/app/api/v1/dates/registration-closed/route.ts—GET/POSTsingletonsrc/app/api/v1/dates/confirm-by/route.ts—GET/POSTsingletonsrc/app/api/v1/show-decision/route.ts—GET/POSTsingletonsrc/app/api/v1/admin/form-config/route.ts—GET/POSTform configuration (questions, sections)Library
src/lib/admin/singleton-keys.ts—SingletonKeyunion ('registration-open' | 'registration-closed' | 'confirm-by' | 'show-decision')src/lib/admin/singleton-service.ts—getSingleton(key),setSingleton(key, value)forsingleton_datasrc/lib/admin/form-config-service.ts—getFormConfig(),updateFormConfig()— admin-editable questionssrc/lib/admin/types.ts—SingletonValue<K>,DateSingletonValue,BooleanSingletonValue,FormConfig,FormConfigSection,FormConfigQuestiontypesComponents
src/components/admin/AdminSidebar.tsx— admin nav, used by admin layoutsrc/components/admin/DateControl.tsx— date+time picker for a singleton key, save buttonsrc/components/admin/ShowDecisionToggle.tsx— boolean toggle for show-decision flagsrc/components/admin/FormConfigEditor.tsx— list of questions, add/edit/reorder UIAcceptance criteria
/adminand/admin/settingsrender placeholder UI.GETand 501 forPOST.