TrainEasy Web — Health & Measurements Tracker
Membership-based web platform for tracking body measurements, water intake, meals, and connecting with a coach. Self-hosted on a custom VPS.
Problem
Fitness apps are either too simple (basic workout loggers) or too expensive (full gym management platforms). Coaches and small gyms needed something in between — a platform that handles memberships, tracks client progress, and enables direct coach communication.
Solution
A membership-based platform where users track meals, water intake, and body measurements over time. Members can connect with their coach directly in-app. Gym admins manage memberships and access. Built as a PWA for installability without an app store.
System Architecture
Next.js fullstack application with a custom Node.js backend. PostgreSQL for all user, membership, and tracking data. Self-hosted on a VPS with custom deployment and reverse proxy configuration — not reliant on managed platforms.
# system diagram
User (Browser / PWA)
└─ Next.js frontend
└─ Custom Node.js API
├─ PostgreSQL → users, meals, measurements
└─ VPS (Nginx reverse proxy)
DevOps & Deployment
Deployment
Custom VPS — self-hosted with Nginx reverse proxy
CI/CD
GitHub Actions → SSH deploy to VPS
Challenges
Managing the VPS infrastructure — SSL, reverse proxy, zero-downtime deploys, and database backups — without the safety net of a managed platform. Built a deployment script that handles all of this reliably.
Key Learnings
Self-hosting gives full control but requires owning every layer of the stack. The operational knowledge gained is valuable — understanding what managed platforms abstract away makes you a better engineer.