~/projects / lean-track
LeanTrack
Calorie and macro tracker: set goals, log meals in a daily diary and monitor progress. Vue 3 frontend, Fastify API, PostgreSQL.
- role
- full stack: Fastify API, Vue frontend, database
- time
- May 2026
- type
- personal
- stack
- Vue 3 · Fastify · TypeORM · PostgreSQL · Docker
01 / problem
Tracking nutrition without friction
Staying on track means seeing calories and macros against your goals every day, with as little effort as possible when logging a meal.
02 / solution
Goals, products and a daily diary
Users register and sign in, set nutrition goals, manage a list of products and add food diary entries. The API exposes auth, products, diary and goals endpoints, and the frontend is organised by the same features.
- [screenshot 1]
[caption]
- [screenshot 2]
[caption]
03 / architecture
How it works
A pnpm monorepo with a Fastify + TypeORM backend (feature modules for auth, diary, products and goals; config for environment, JWT and database; migrations) and a Vue 3 + Vite frontend split into features, shared code and the router. PostgreSQL runs in Docker Compose. Both apps use TypeScript strict mode, ESLint, Prettier and Vitest.
04 / results
Outcome
05 / lessons
What I learned
- Mirroring the backend modules in frontend features keeps each feature easy to find on both sides.
- A PRD, a tech spec and user-flow diagrams sit in docs/ next to the code, so the intent behind each module stays on record.
gallery
- [photo]
[caption]
- [photo]
[caption]
- [photo]
[caption]