Quickstart
Run the app locally with MongoDB, Google OAuth, and a seeded user.
School-year workflow
Copy 2025-2026 answers into a 2026-2027 draft, then archive last year.
API reference
Session-authenticated REST routes for forms, users, and Super Admin tools.
Audit logs
Filter, search, and export the Super Admin audit table and the users roster.
System health
Super Admin snapshot of API, MongoDB size, Redis, and env checklist.
School catalog
Super Admin list of schools for new plans and user dropdowns.
Data models
Mongoose schemas for users, schools, plans, question bank, comments, and audit logs.
Troubleshooting
401/403/429, OAuth bounce, Redis, and role-preview FAQ.
What this system does
- Stores one school plan per school per academic year (
YYYY-YYYY). - Super Admins maintain a school catalog used by new-plan and user dropdowns.
- Renders plan sections from a published question bank (
FormTemplate), withsrc/data/formQuestions.jsonas fallback. - Copies all answers when duplicating a plan into the next year. Reviews, comments, and sharing are not copied.
- Locks archived years as read-only after district rollover.
- Restricts sign-in to pre-registered
@schools.nyc.govaccounts via Google OAuth. - Gives Super Admins a System page (
/admin/system) for API, MongoDB, and Redis health.
Stack
Non-negotiable data contract
Answers are always stored at:formData during question-bank edits. Existing plans keep the questionBankVersion they were created with.
Super Admin (level 5) is the only role that can publish the question bank, run year rollover, manage the school catalog, manage district-wide submissions/goals, add review comments, and open System health.
