2026 · API
Birthday Reminder Service
A NestJS service that stores users and sends each one a “Happy Birthday” message at 9 AM in their own time zone on their birthday.
- Period
- –
- Client
- Personal project
- Role
- Sole developer: designed and built the API, the scheduler, the tests and the Docker setup.
Problem
An assignment: greet every user at 9 AM local time on their birthday, across time zones, daylight-saving changes and 29 February, without scanning every user on a timer.
Outcome
One persisted Agenda job per user fires at that user's 9 AM, computed with Luxon, and reschedules itself for the next year without a database read; changing a birthday or time zone reschedules it, and deleting a user cancels it. 59 tests across 13 suites cover 100% of statements, functions and lines and 82.2% of branches.
Stack
- NestJS
- TypeScript
- Fastify
- MongoDB
- Agenda
- Luxon
- Jest
- Docker