A Feathers.js Prototype for Customer Demographics and Automated Emails

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. Existing services do this, but the client needed something that integrated 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.


A Modern Feathers.js Stack on IBM i: Real-Time APIs on DB2
Real-time WebSockets, REST APIs, and a Vite React frontend running directly on IBM i using Feathers.js and a custom Knex adapter for DB2.
Building Compass: A Life Assistant That Still Works When the AI Does Not
I wanted a more customizable workout tracker, a budget my wife and I could share, and AI help on both. So I built Compass on TanStack Start and Cloudflare, and made sure it still works when the AI does not.
TanStack Hono: A Lightweight SSR Monolith Without the Meta-Framework Weight
Single-process SSR + CSR with type-safe RPC, Vite, React, and Hono. The goal is low operational complexity without giving up dynamic UI.