Manage subscriptions, renewal reminders, budgets, logos, and Wallos migrations in one self-hosted dashboard.
简体中文 · Local development · Deployment · Deployment guide · Releases
The current
mainbranch ships with Docker / Docker Compose deployment. If you need Cloudflare Worker serverless deployment, use thelitebranch, where the Worker-specific workflows, deployment notes, and runtime adaptations are maintained.
curl -fsSL https://raw.githubusercontent.com/Smile-QWQ/SubTracker/main/scripts/install.sh | bash- Full mode is recommended for most users.
- The installer now asks you to choose Simplified Chinese or English at the start. You can still force it with
--lang zhor--lang en. - Release artifacts support both x86 and ARM.
- See
DEPLOYMENT.mdfor the full deployment flow.
npm install
npm run prisma:generate
npm run prisma:push
npm run prisma:seed
npm run devDefault addresses:
- Web:
http://127.0.0.1:5173 - API:
http://127.0.0.1:3001
Default credentials:
- Username:
admin - Password:
admin
| Subscriptions | Spending |
|---|---|
| AI recognition | Wallos import |
|---|---|
- Subscription management: create, edit, renew, pause, disable, and restore subscriptions; review renewal history; and manage larger collections with tags, multi-tag filtering, custom ordering, search, bulk status updates, and bulk deletion.
- Reminder rules: define reminders before renewal, on the renewal day, and after expiration with the
days&time;format; override defaults per subscription; and preview the resulting trigger schedule before saving. - Statistics and budgets: normalize multi-currency subscriptions into a base currency, track spending totals and trends, inspect tag and status breakdowns, review the next 30 days of renewals, compare auto-renew ratios, and configure monthly, yearly, or per-tag budgets.
- AI assistance: extract subscription details from text or images into the form, and generate an AI summary on the statistics page.
- Calendar and overview: view subscriptions in a calendar, track upcoming renewals from a dedicated list, and use the dashboard for a consolidated overview.
- Notifications: send reminders through Webhook, SMTP / Resend email, PushPlus, Telegram Bot, ServerChan, Gotify, Bark, NotifyX, and Apprise.
- Logos and assets: upload logos, reuse saved local logos, search online, and preserve or match logos during Wallos ZIP imports when possible.
- Backup and migration: import Wallos JSON, SQLite, and ZIP backups, and export, inspect, import, or restore native SubTracker ZIP backups.
- Multi-currency tools: maintain exchange-rate data, convert values into the base currency, and use the built-in currency converter.
- Login and session controls: support remember-me sessions, default-password change reminders, and rate limiting after repeated login failures.
- Interface: support Simplified Chinese and English, light, dark, and system themes, with a sticky desktop sidebar and independently scrollable content.
- Frontend: Vue 3, Vite, TypeScript, Naive UI, Pinia, TanStack Query, ECharts
- Backend: Fastify, Prisma, SQLite, Zod, node-cron
npm installcp apps/api/.env.example apps/api/.envnpm run prisma:generate
npm run prisma:push
npm run prisma:seednpm run devAfter the first login, changing the default admin password is strongly recommended. Login attempts are rate-limited after too many failures.
npm run dev
npm run build
npm run lint
npm testUse the install script for the smoothest setup:
curl -fsSL https://raw.githubusercontent.com/Smile-QWQ/SubTracker/main/scripts/install.sh | bashThe script downloads release artifacts, prepares the deployment directory, and lets you choose between:
- Full deployment (
full): deploy web and API together with the published frontend image - API-only deployment (
api): deploy only the API container and host the web assets yourself
Full deployment is the recommended default.
On first startup, the API container initializes the SQLite schema automatically.
If you want to use Apprise, deploy an Apprise API instance separately and point SubTracker to it in Settings → Notifications → Apprise. The default SubTracker compose files do not make Apprise a hard dependency.
For routine upgrades:
docker compose pull
docker compose up -dIf you use API-only mode, you also need to download and replace the extracted contents of subtracker-web-dist.zip.
You only need to rerun the install script when:
- deploying for the first time
- rebuilding the deployment directory
- switching between
apiandfull - adopting a newer deployment template or updated
.envdefaults
See DEPLOYMENT.md for the complete guide.
Each release currently provides:
subtracker-web-dist.zip: frontend static assetsghcr.io/smile-qwq/subtracker-api: API Docker imageghcr.io/smile-qwq/subtracker-web: frontend image used in full deployment
All published images support both x86 and ARM architectures.
This project is released under the GNU General Public License v3.0 (GPLv3).
Thanks to the following projects and ecosystems: