Full-Stack Web Application — 10-Person Agile Team
The Hanover Insurance Web Application Prototype was a coursework project developed in direct collaboration with The Hanover Insurance Group. Working on a 10-person team using Agile methodology, we designed and built a cloud-deployed Content Management Application that demonstrated how Hanover could streamline internal content workflows for their teams.
As an Assistant Lead Software Engineer, I served as the technical leader of the frontend subgroup, coordinating implementation work across multiple developers, reviewing code, and owning the architecture of the user-facing application. My personal contributions centered on the two largest frontend systems in the product: the Main Content Management interface and the User Management subsystem.
The application was built on the PERN stack — PostgreSQL, Express, React, and Node.js — written in TypeScript end to end, with Prisma ORM handling the data layer and Tailwind powering the UI styling.
Designed and implemented the application's primary content management interface, allowing internal users to create, edit, organize, and publish structured content. Built as a set of composable React components in TypeScript, with Prisma-backed CRUD operations and a Tailwind-styled UI tuned to Hanover's enterprise design constraints.
Built the full user management experience — account creation, role assignment, permission editing, and account lifecycle controls. Worked closely with the backend group to define the API contract and ensure that role-based access control was consistently enforced from the database all the way up through the UI.
As Assistant Lead Engineer for the frontend subgroup, I established the project's component structure, state management conventions, and TypeScript patterns. Conducted code reviews, unblocked teammates, and made architectural decisions that kept the frontend coherent across multiple contributors working in parallel.
The team operated on a sprint-based Agile cadence with regular planning, retrospectives, and stakeholder check-ins with Hanover. Requirements evolved across sprints, which meant the architecture had to absorb change gracefully — an experience that shaped how I now think about system design under shifting product direction.