The problem
Why I built it
I built Subtrack Web because I struggled to keep track of how much I was spending on subscriptions every month. Payments renewed on different schedules, annual plans were easy to forget, and looking through bank transactions never gave me a simple view of the true monthly cost.
I wanted one private place where I could record recurring payments, compare monthly and annual spending, and spot subscriptions I no longer needed.
The product
What Subtrack Web does
Subtrack Web is a single-user subscription manager that runs on your own machine or private server. Your subscription data stays in your PostgreSQL database instead of being sent to a hosted Subtrack service.
Track recurring payments
Manage active and inactive subscriptions across weekly, fortnightly, monthly, and yearly billing cycles.
Understand spending
See annual, monthly, and seven-day summaries, plus historical trends and category insights.
Remember renewals
Configure a weekly email digest and test reminders locally through Mailpit.
Keep portable backups
Create scheduled or manual database backups, with JSON export and import when you need portability.
Everyday use
A typical workflow
- 01
Add your subscriptions
Record the price, billing cycle, category, and renewal details for each recurring payment.
- 02
Review the totals
Use the spending summaries to understand the combined monthly and annual impact—even when services bill on different schedules.
- 03
Look for waste
Search, sort, and compare categories to find services that are duplicated, underused, or no longer worth renewing.
- 04
Protect the data
Use the built-in backup workflow and copy important archives to another device or encrypted storage.
Getting started
Run it locally with Docker
The quickest setup is Docker Compose. Clone the repository, copy the example environment file, set a strong admin password and database credentials, generate an authentication secret, then start the containers.
git clone https://github.com/jasontsang98/subtrack-web.git
cd subtrack-web
cp .env.example .env
# Configure AUTH_PASSWORD and PostgreSQL passwords
# Generate AUTH_SECRET with: openssl rand -hex 32
docker compose pull
docker compose up -d
Open http://localhost:3000 for Subtrack and http://localhost:8025 for the local Mailpit inbox. The repository documentation covers upgrades, restore procedures, and more secure network deployment.
A note on ownership
AI-assisted implementation, human-directed product
Subtrack Web was implemented with Codex under my product direction. I defined the problem and requirements, tested the user experience and recovery workflows, reviewed behaviour, validated releases, and operate the self-hosted deployment. I treat AI as a delivery tool—not as a substitute for ownership or verification.