← All projects

Tracker

Daily habit tracker

Why I built it

I built it to track the things I do every day, good and bad, from habits I'm building to what I eat and spend. It holds me accountable while I build good habits, and gives me the data to show I'm making progress on ditching the bad ones.

It was also a way to get hands-on with Vue, Go and GCP. I was new to all three at work, and wanted a project of my own built on similar foundations.

What it does

Tracker has sections for daily habits, a weekly X effect checklist, goals, a budget, a food log and a journal. It sits behind a login, with sign-up turned off.

How it's built

Code
A Vue 3 single-page app, built with Vite and Vue Router, talking to a Go JSON API on gorilla/mux. A periodic job keeps goals up to date. The code is in a private repo.
Data
Firestore. Passwords are hashed with bcrypt, and sessions live in HttpOnly cookies.
Hosting
Google App Engine on the Go 1.26 runtime, serving both the API and the built client from the same origin at tracker.mattlove.dev.
Deploying
Shell scripts: one bundles the Go server and the built Vue client together, and another runs gcloud app deploy against a pinned project. Locally, Vite and air (hot-reloading the Go server) run side by side.