Live on VPS
BodyTrack
Free weight loss tracking app supporting study participants. Self-hosted, containerized, zero downtime.
The Problem
Weight loss study participants needed a simple way to log daily check-ins — weight, meals, notes. The requirement was free and reliable, with no third-party data sharing. That meant self-hosted.
What I Built
→ Node.js REST API handling user entries and auth
→ PostgreSQL database in its own container with persistent volume
→ Caddy reverse proxy handling HTTPS automatically via ACME/Let's Encrypt
→ Full Docker Compose setup — one command to deploy or restart the entire stack
→ Health check endpoints so monitoring knows when a container goes down
// docker-compose.yml
services:
app:
image: bodytrack_app
ports: ["3000:3000"]
db:
image: postgres:15
caddy:
image: caddy:2
Key Technical Decisions
Docker Compose was the right call for a solo-maintained VPS app — the entire stack (app + db + proxy) starts with one command and survives reboots. Caddy over Nginx because it handles TLS automatically with no cert renewal scripts to maintain.
Have a workflow that needs this kind of system?
If you want something built the same way — end to end, shipped, in production — let's talk.
Work with me →