This single-page web application lets you keep track of and manage your subscriptions. You can add, edit, delete, and view subscriptions all in one place. You can set up notifications for each subscription using NTFY or Gotify. The app provides a general summary of all your subscriptions and a detailed summary for each payment account, all within a single, intuitive interface.
demo.mp4
- ➕ Add, edit, and delete subscriptions
- 🗓️ View subscriptions on a calendar
- 💰 Calculate weekly, monthly, and yearly totals
- 📊 Detailed summaries per payment account
- 🖼️ Easy to add icons for each subscription
- 🔔 Notification system integration with NTFY and Gotify
- 💱 Support for multiple currencies
- ⚛️ Next.js
- 🔄 React
- 🗄️ SQLite
- 🐳 Docker
- 🎨 Iconify
-
Create a
docker-compose.ymlfile with the following content:version: "3.9" services: app: image: dh1011/subscription-manager:stable ports: - "3000:3000" volumes: - ./data:/app/data restart: unless-stopped
-
Create the data directory:
mkdir data
-
Run Docker Compose:
docker-compose up -d
-
The app will be available at
http://localhost:3000.
-
Clone the repository:
git clone https://github.com/your-repo/subscription-manager.git cd subscription-manager -
Install dependencies:
npm install
-
Start the development server:
npm run dev
-
The app will be available at
http://localhost:3000.
-
Build the application:
npm run build
-
Start the production server:
npm start
This app uses Iconify icons. To add an icon to your subscription, use the icon name from the Iconify icon library.
The app integrates with NTFY and Gotify for sending notifications. To set up notifications:
- Go to the Settings page
- Choose NTFY or Gotify
- Enter your NTFY topic and domain, or your Gotify server URL and application token
- Save the settings
You'll receive notifications for upcoming subscription payments.
Enjoy 🎉!
Automatic NTFY and Gotify alerts run at midnight in the application's local time zone,
for subscriptions with Notify enabled and a payment due that day. Recurring intervals
and end dates are respected. The container uses UTC unless you configure TZ, for
example TZ=America/Los_Angeles. The scheduler logs its next run as a UTC timestamp.
The Test Notification button sends from the application server, using the same delivery code as automatic alerts. A successful test confirms delivery connectivity; it does not save settings. Save your settings and enable Notify on the subscription as well.
For Docker Compose, inspect startup and delivery logs with:
docker compose logs --tail=100 appLook for Notification scheduler initialized, individual delivery outcomes, and the
notification check summary. Delivery requests have a 15-second deadline. The settings
window reports DNS, connection timeout/refusal, TLS, and HTTP rejection errors.
The notification URL must be reachable from the application container. A URL that
works in your browser may fail inside Docker because of DNS, firewall, or reverse-proxy
routing. If both containers share a Docker network, you can use an internal server URL
such as http://ntfy:80; localhost inside the application container refers to that
container itself. Keep TLS certificate verification enabled for HTTPS servers.
Container tags are separate from GitHub release tags. latest tracks stable releases;
3.2.10 is a prerelease for testing the notification fixes and does not update latest.
To try the explicit prerelease:
docker pull dh1011/subscription-manager:3.2.10Then recreate your container with that image while keeping the existing data volume.