A personal weight/BMI tracker that syncs with the Google Health API.
Massa stores your weight history in its own Postgres database, computes BMI locally, charts trends over time, and (where supported) syncs weight entries to and from your Google account. Access is restricted to a small, pre-set allowlist of email addresses via passwordless magic-link login.
- Backend: Go, chi, pgx, sqlc, golang-migrate
- Frontend: Nuxt 4, Tailwind CSS v4, Pinia, Chart.js
- Database: PostgreSQL 16
- Local dev: Docker Compose
backend/ Go API server (cmd/server, cmd/migrate, internal/...)
frontend/ Nuxt 4 SPA
scripts/ Forge deploy script and API daemon wrapper
docs/ Deployment, SES, and Google Health setup
See docs/DEPLOY.md for production on a VPS with Laravel Forge (push-to-deploy from GitHub).
-
Copy
.env.exampleto.envand fill in the values (Google OAuth credentials, email provider, allowed emails, etc.). -
Start everything with Docker Compose:
docker compose up --build
- Backend API: http://localhost:8080 (
/healthzfor a liveness check) - Frontend: http://localhost:3000
- Postgres: localhost:5432
- Backend API: http://localhost:8080 (
cd backend
go run ./cmd/server
go test ./...
go run github.com/golangci/golangci-lint/v2/cmd/golangci-lint@latest run ./...cd frontend
npm install
npm run dev
npm run lint
npm run test
npm run build