Skip to main content

Seed users

Edit src/scripts/seed-users.js before running against Atlas. Sign-in will fail for any DOE Google account that is not in users. Additional scripts:
  • npm run assign-principalssrc/scripts/assign-principals-to-forms.js
  • npm run fix-formsrc/scripts/fix-form-permissions.js

Annual rollover runbook

1

Publish the question bank

Super Admin → /admin/questions → publish with { confirm: true } and pin schoolYear to the new year.
2

Set deadlines and district goals

Year setup (/dashboard?view=bulk-create) or PUT /api/school-year.
3

Duplicate plans

POST /api/admin/forms/rollover with sourceYear / targetYear. Confirm created vs skipped.
4

Verify archive

Source year archived: true. Opens of last year’s forms are read-only.
5

Tell principals

They update copied answers, compare attendance/housing/counseling, attest, and submit.
Rollover confirmation Caption: Add screenshot showing rollover result counts (created, skipped, errors) and the archived-year tag on 2025-2026 forms.

System health

Super Admin → /admin/system (also System in the Admin sidebar). Confirms API uptime, MongoDB data size, Redis memory/keys, env var presence, and the unique schoolName + schoolYear index. Flush app caches or retry Redis from that page. Details: System health.

Auditing

UI: /admin/logs. Writes go through src/lib/auditLogger.js into AuditLog. Logins are recorded in the NextAuth signIn callback (fire-and-forget).

Support

Access requests: the account must exist in MongoDB before the person uses Google sign-in. Runtime incidents (403, 429, OAuth bounce): Troubleshooting.