Problem Statement
People who want to understand their own lives — mood patterns, spending, daily habits — have to stitch together a journal app, a budgeting app, and a photo store, none of which talk to each other or surface trends. There's no single backend that captures a structured day (how you felt, what you spent, what happened, photos) and turns months of it into insight, with gentle reminders to keep the streak going.
Proposed Solution
DayTrack is a backend for personal daily tracking. Users do a morning and evening check-in, log mood, manage financial accounts and expenses, attach media, browse and search history, receive automated email reminders, and get analytics/insights computed over their longitudinal data.
Full Solution Details
- Daily check-ins — separate morning and evening flows.
- Mood tracking + analytics — capture mood and analyze trends over time.
- Finance — financial accounts and expense management alongside the daily log.
- Media — upload and store photos/files per entry.
- History — historical data views and search.
- Automated reminders — scheduled emails nudging users to check in.
- Insights — comprehensive analytics across the accumulated data.
Technical Documentation
Node + TypeScript + Express + MongoDB (Mongoose). Notable building blocks from the dependency set: node-cron drives the scheduled reminder jobs; Resend sends the emails; moment-timezone handles per-user timezones (essential so a 'morning' reminder fires in the user's morning, not the server's); @aws-sdk/client-s3 + s3-request-presigner handle media via presigned uploads (bytes go straight to S3, not through the API — the same stateless-files pattern across his projects); multer for upload handling, Joi + express-validator for validation, JWT + bcryptjs for auth, and helmet / compression / express-rate-limit / morgan / winston for a production-shaped HTTP layer. tsconfig-paths enables clean path aliases.
Tech Stack
Node.js, TypeScript, Express, MongoDB/Mongoose, AWS S3 (presigned uploads), node-cron, Resend (email), moment-timezone, Joi, express-validator, JWT, bcryptjs, helmet, compression, express-rate-limit, Winston.
System Design
User ──JWT──► DayTrack API (Express)
├── morning / evening check-ins → MongoDB (entries, mood, finance)
├── media: presigned S3 upload (bytes bypass the API)
├── history: views + search
└── analytics: trends over longitudinal data
▲
node-cron scheduler → Resend email reminders
(moment-timezone → fire in the user's local morning/evening)
Hardening: helmet · compression · rate-limit · validation (Joi + express-validator) · Winston
Smart Architectural Decisions
- Timezone-correct scheduling. Using moment-timezone so reminders fire in each user's local morning/evening (not server time) is the detail that makes a habit app actually work — and is easy to get wrong.
- Cron + transactional email, no heavy queue. node-cron + Resend gives reliable scheduled reminders without standing up a job queue/worker fleet — right-sized for the problem.
- Presigned S3 uploads. Media bytes go directly to S3 rather than through the API, keeping the server light — the consistent stateless-files pattern seen across WorkSight, Pracket, Dondie, and Storex.
- Production-shaped from the start. helmet, compression, rate limiting, dual validation (Joi + express-validator), structured Winston logging, and path aliases show it was built like a real service, not a prototype.
- Unified daily model. Combining mood + finance + media + check-ins in one backend is what enables cross-domain insight that separate apps can't.
Impacts
A single backend that captures a structured day across mood, money, and media, reminds users (in their own timezone) to keep logging, and turns the accumulated history into analytics — the data foundation for genuine personal insight.
Demonstrated Skills
Backend engineering (Express + MongoDB, layered + hardened HTTP); scheduled jobs done correctly (node-cron + timezone-aware firing); transactional email (Resend); presigned S3 media uploads; validation (Joi + express-validator); auth (JWT + bcrypt); analytics over time-series personal data; production hygiene (helmet, rate limiting, logging).