A simple tracker for all of your subscriptions.
This is a simple subscription-tracker to track & monitor all of your ongoing financial subscriptions. It has support for Discord & Ntfy notifications, with Slack and support for other webhooks in progress.
Included in this repository is a docker-compose.yaml to quickly deploy via
a Docker container.
volumes:
subs:
services:
subscription-tracker:
image: ghcr.io/azpha/subscription-tracker:latest
restart: unless-stopped
ports:
- 3000:3000
volumes:
- "subs:/app"
environment:
- BASE_URL=https://subs.domain.tldThere are a few configuration changes you can make to make your instance yours. All can be placed in the enivronment section of the docker-compose config as displayed above.
BASE_URL- the hostname of your subscription-tracker instance. Used for sending you to your instance when clicking on notifications
Install project dependencies using pnpm.
pnpm iThis project uses Prisma as an ORM, you can find all the code related to this in the packages/prisma folder. You'll need to deploy migrations to a local SQLite database
pnpm run db:migrateAfter you've done that, you're good to go! Run the dev script of the component you're working on, or both in separate terminals if you're modifying both.
pnpm run dev:api
pnpm run dev:webThat's it! You're all setup to contribute to subscription-tracker.
The frontend application, built using the Vite framework in React + TypeScript.
| frontend
| src
| assets <- static assets
| components <- react components
| utils <- utilities like the API interface + types
| App.tsx <- the SPA
| main.tsx <- the root of React
The API application, built using Express. All database operations are done with Prisma ORM, request validation using Zod.
| backend
| src
| index.ts <- root of the Express project
| cron.ts <- the logic for the Cronjob that runs at midnight
| controllers <- business logic for endpoints
| routers <- endpoint configuration
| utils <- database configuration, request schemas