Review comments
FormComment documents attach to a form (optional stepKey / stepNumber). Only Super Admin can create comments.
status: approved | rejected | under_review. Principals see comments on the dashboard (?view=comments) and on the form. Comments can be marked fixed; DELETE-style removal is via the comment id route.
Goals
/admin/goals and GET /api/admin/goals cluster plan answers (including N/A detection) and honor school year query params. District targets live on SchoolYearSettings.districtGoals.
How to export table data
Table answers print as real grids in PDF and Word (src/lib/exportTables.js). District CSVs are roster/status reports, not cell-by-cell table dumps.
1
Export one plan (PDF or Word)
Open
/form/[id] or /view/[id] and use PDF / Word, or call GET /api/forms/[id]/export/pdf and .../docx. Anyone with form view access can download. The file header uses the product name from src/lib/branding.js. Locked table columns (from the question bank) are the headers in the file. Empty tables still show the header row so the paper copy can be filled in.2
Export a submissions report CSV
Super Admin →
/admin/submissions → generate report. That POSTs /api/admin/reports with optional startDate, endDate, and status. Columns are school, principal, status, progress, review fields — not the inner table cells. Principals (level 4) hitting the same route only receive their school (schoolScopeFilter).3
Export the year workbook
Super Admin:
GET /api/admin/forms/export?schoolYear=2026-2027&format=csv (or html). Includes compare-step answers for attendance, housing, and counseling.Exports
PDF/DOCX use
pdfkit / docx on the server (webpack externals). Table questions render via exportTables.js, not as joined text.