Customer analytics with Express + React + Prisma
Context: Teams needed lifecycle CRUD on customers alongside KPI and segment views—without duplicating business rules in the UI.
Problem: Customer operations and analytics lived in separate flows, creating policy drift, duplicated validation, and slow onboarding for new contributors.
What I built: Implemented a layered Express + TypeScript API (routes → controllers → services), JWT access plus refresh in HttpOnly cookies, Prisma migrations as schema source of truth, and a React + Vite dashboard consuming typed API contracts for customer CRUD and aggregate analytics endpoints.
Impact: Unified product and analytics workflows into one contract-first stack with clearer ownership boundaries, less rule duplication, and faster iteration on API + UI changes.
Tradeoff I made: Chose React + Vite and Express for speed and lower ceremony in a focused dashboard product; preserved a migration path to Next/Nest patterns as team size and surface area grow.