Bharat Degree & PG College
Institutional website for a women's degree & PG college — typed-data, not CMS
The brief
An institutional website for Bharat Degree & PG College for Women covering nine public routes — home, about, academics, examinations, placements, events, student life, success stories, contact. The brief: editorial premium, zero content-management runtime, low client-JS budget.
Data-driven, not CMS-driven
Every page reads from a typed data/*.ts module —data/site.ts, data/courses.ts, data/examinations.ts, data/placements.ts. Staff edits become git-clean diffs reviewed in a PR, not opaque database mutations behind a CMS UI. The editing cadence here is low; the institution doesn’t need a CMS runtime to manage it.
Editorial primitives
PageHero·PageSection·SectionHeaderfor vertical rhythm.InfoCard·CourseCard·DownloadCardfor the academics + downloads surface.StatsStrip·GradingTable·CriteriaTablefor examinations and placements.- A branded
SiteLoadershown once per session, CSS-hidden after first paint to avoid Fast RefreshinsertBeforebugs.
Migration story
Initial deployment was on Google Cloud Run (Cloud Run service + Cloud Storage for downloads). The Vercel migration is in progress for shorter URLs, edge caching, and matching the rest of the client estate.
v1 contact uses a frontend-only mailto: enquiry form — a place to start qualifying, not a CRM. A typed inquiry endpoint with Resend mail can land later without restructuring the data layer.
What I learned
- Typed-data CMS replacements ship faster than headless CMS for static institutional surfaces — when the editing cadence is low and editors are reachable by PR.
- React-owned DOM + once-per-session splash needs CSS-hide, not DOM-remove (the root cause of a Fast Refresh
insertBeforebug we fixed early). - A
mailto:v1 is the right contact starting point — the typed inquiry endpoint earns its complexity only after real intake volume justifies it.
