Preface
I built this prototype as a proof of concept for a client who needed to manage customer demographic data. The goal was to attach detailed demographics to customer profiles and automate courtesy emails for anniversaries or birthdays. While existing services offer this, the client required a solution that integrated seamlessly with their custom software ecosystem.
Technical Decisions
Backend The backend uses TypeScript and Feathers.js. Feathers provided a rapid way to spin up a Node.js server with REST APIs, WebSockets, and services/hooks for CRUD operations.
Frontend The frontend is a TypeScript SPA built with Vite and React. Since SSR wasn’t required, I avoided the complexity of meta-frameworks.
- UI: shadcn/ui, combining Tailwind CSS for styling and Radix UI for accessible components.
Infrastructure The application runs on Docker.
- Database: MySQL.
- Proxy: Traefik, chosen for its seamless Docker integration.

