A self-hosted subscription manager for multi-currency subscriptions, renewal reminders, budget overviews, logo assets, and Wallos migrations on Cloudflare Workers.
简体中文 · Local development · Deployment · Deployment guide · Releases
The current
litebranch targets Cloudflare Workers only. If you need Docker / Docker Compose deployment, use themainbranch, where the Node/SQLite runtime, workflows, and deployment notes are maintained.
| Subscriptions | Spending |
|---|---|
| AI recognition | Wallos import |
|---|---|
- Subscription management: create, edit, renew, pause, disable, review records, and reorder subscriptions.
- Reminder rules: define flexible
days&time;rules for upcoming, due-today, and overdue reminders, with minute-level scans. - Tags: classify subscriptions with multiple tags, filter by tags, and manage tag ordering.
- Budgets: track global monthly and yearly budgets from the dashboard.
- Statistics: review spending overview, status distribution, currency distribution, top subscriptions, and AI summaries.
- Multi-currency support: maintain exchange-rate snapshots, normalize into a base currency, and use the built-in currency converter.
- Notifications: send reminders through Webhook, SMTP / Resend email, PushPlus, Telegram Bot, ServerChan, Gotify, Bark, NotifyX, and Apprise.
- Logo handling: upload logos to R2, reuse remote references, and search for logos online.
- AI recognition: extract subscription details from text or images and fill the form automatically.
- Wallos import: import Wallos JSON, SQLite, and ZIP backups; SQLite / ZIP files are parsed in the browser before being persisted by the Worker.
- Login experience: support remember-me sessions, configurable session retention, default-password change reminders, and login rate limiting.
This branch is optimized for Cloudflare Worker Free, so a few features are intentionally trimmed or adapted:
- Hot statistics and calendar endpoints use D1-backed caching to reduce Worker CPU time.
- KV is not used.
- Email notifications support SMTP / Resend, but SMTP port 25 is not supported.
- Tag-level monthly budgets and the dedicated budgets page are removed.
- The dashboard keeps lightweight overview metrics, global budgets, and upcoming renewals.
- Spending statistics keep overview charts, status distribution, currency distribution, TOP 10 subscriptions, and AI summaries.
- Wallos / SubTracker backup import, logo search, cron jobs, and auto-renew flows are adapted for the Worker runtime.
- When the free Worker tier hits
503or CPU limits, the UI shows an explicit warning instead of a silent failure.
See DEPLOYMENT.md for deployment details, feature boundaries, and runtime notes.
- Frontend: Vue 3, Vite, TypeScript, Naive UI, Pinia, TanStack Query, ECharts
- Backend: Cloudflare Worker, Hono, Prisma D1 Adapter, D1, optional R2
npm installnpm run dev:workerDefault address:
http://127.0.0.1:8787
Default credentials:
- Username:
admin - Password:
admin
After the first login, changing the default password is strongly recommended. Repeated login failures trigger rate limiting.
npm run dev:worker
npm run build
npm run lint
npm testThe recommended path is GitHub Actions + Cloudflare.
The full deployment flow is documented in:
In short:
- Fork this repository.
- Configure the required Cloudflare Secrets / Variables.
- When forking, do not enable Copy the main branch only, or the
litebranch will be missing. - Run Lite CI and Deploy in GitHub Actions, and set Use workflow from to
lite. - Keep your fork updated with Sync fork.
Common repository Variables:
WORKER_NAME_PREFIXENABLE_R2(disabled by default; enable it if you want ZIP-imported logos to be persisted)
Lite CI and Deploy: runs lint / test / build first, then deploys to Cloudflare only if verification succeeds.
This project is released under the GNU General Public License v3.0 (GPLv3).
Thanks to the following projects and ecosystems: