Problem
The department website had been passed between student assistants for years. Code patterns were inconsistent, the deploy process was a manual FTP upload, and adding a new section meant hunting through five different conventions.
New features like program listings and announcements were increasingly hard to ship because nobody was confident what a change would break.
Approach
I standardized the codebase around Bulletproof React on the frontend and NestJS Boilerplate on the API side, then layered ShadcnUI on top for a consistent component library.
The real lift was the deploy story: I replaced the manual uploads with Jenkins jobs running against Docker images, triggered from Gitlab merges.
Outcome
Deploys that used to take a careful afternoon now take a git push. The next maintainer can onboard from the README, and we shipped two new feature surfaces (Programs and Announcements) inside the migration window without drama.
Key learning
The pipeline is the product. A clean component library with no automated deploy is still fragile; a messy codebase with a reliable deploy can at least evolve.