Jubilee Hills Public School
Editorial heritage rebuild — alumni + online admissions for a 40-year institution
Editorial premium for a 40-year school
A heritage CBSE institution needed a brand language that read as institutional trust without the “Wix beige” most school sites settle for. The palette — navy #0B1F3A, ivory #FAF7F1, gold #C9A24B — pairs Fraunces display with Inter UI. Clamp-based vertical rhythm, motion-aware reveal primitives. Ivy-League editorial, not stock photography.
Online admissions, end-to-end
A six-step parent form with cookie-tracked draft state and idempotent step PATCH so a reload never loses data. Server-side age cut-off per CBSE class. Application codes follow JHPS-{year}-{seq} (e.g. JHPS-2627-00427).
The state machine + PII strategy
- 10-status state machine — draft → submitted → under review → documents requested → interview scheduled → complete → offer extended → deposit pending → confirmed → archived.
- HMAC-SHA256 + server pepper for email, phone, Aadhaar-last-4. Full Aadhaar never stored.
- Dedup strategy — hard dedup by Aadhaar+year, soft dedup by email+DOB+year.
Admin RBAC + audit
NextAuth Google SSO restricted to @jhpublicschool.com in production. Roles: SUPER_ADMIN, EDITOR, ADMISSIONS_OFFICER, VIEWER. Every state transition writes an AdmissionEvent plus an AuditLog. The admin inbox is designed for moving 50 applications a day without leaving the screen — timeline, notes, transition buttons, all in one place.
Hybrid content model
A single ContentEntry table with strict envelope columns plus a Zod-validated JSON blocks field. News, Notices, Events, Achievements share one editor surface. NewsArticle and Event JSON-LD ship where applicable.
What I learned
- ADRs are the durable doc — milestones drift; the locked stack, tRPC-where-it-pays, OTP-not-magic-link, and hybrid-content decisions outlive every roadmap revision.
- PII norms determine schema before UX does. UIDAI / DPDP read the design first.
- Editorial premium reads to parents as institutional trust. Gold-accent typography earns the brand more than carousel hero animations.
