A modern web application to manage and track your subscription payments in one place. Built with React and Node.js.
- π¦ Subscription Management: Add, edit, and delete subscriptions
- π³ Payment Tracking: Record and track payment history
- π Dashboard: View statistics and insights about your subscriptions
- π Filtering: Filter subscriptions by status and category
- π Upcoming Payments: See upcoming billing dates
- π·οΈ Categories: Organize subscriptions by category
- π° Multiple Currencies: Support for USD, EUR, GBP, JPY, CAD, AUD, THB
- π¨ Modern UI: Beautiful, responsive design
- Node.js with Express.js
- LowDB (JSON file-based database)
- RESTful API
- React 18
- Vite
- Axios for API calls
- date-fns for date formatting
./start.shThis will:
- Start the backend server on http://localhost:3001
- Start the frontend dev server on http://localhost:3000
- Open your browser automatically
# Build and start all services
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose downThe application will be available at:
- Frontend: http://localhost
- Backend API: http://localhost:3001
-
Install dependencies:
npm run install:all
-
Start backend:
npm run start:backend
-
Start frontend (in another terminal):
npm run start:frontend
-
Open your browser:
- Frontend: http://localhost:3000
- Backend API: http://localhost:3001
docker-compose builddocker-compose up -ddocker-compose logs -fdocker-compose downThe project includes GitHub Actions workflows for:
-
CI Pipeline (
.github/workflows/ci.yml):- Tests backend and frontend
- Builds Docker images
- Runs linting
-
Deploy to GitHub Pages (
.github/workflows/deploy.yml):- Builds frontend for production
- Deploys to GitHub Pages
-
Docker Publish (
.github/workflows/docker-publish.yml):- Builds and publishes Docker images to GitHub Container Registry
- Go to your repository Settings β Pages
- Set source to "GitHub Actions"
- The frontend will be deployed automatically on push to main/master branch
For GitHub Pages deployment, set the following secret in your repository:
VITE_API_URL: Your backend API URL (e.g.,https://your-api.com)
GET /api/subscriptions- Get all subscriptionsGET /api/subscriptions/:id- Get subscription by IDPOST /api/subscriptions- Create new subscriptionPUT /api/subscriptions/:id- Update subscriptionDELETE /api/subscriptions/:id- Delete subscriptionGET /api/subscriptions/stats/summary- Get subscription statistics
GET /api/payments- Get all paymentsGET /api/payments/:id- Get payment by IDPOST /api/payments- Create new payment recordPUT /api/payments/:id- Update paymentDELETE /api/payments/:id- Delete payment
The application uses LowDB, a JSON file-based database. The database file is stored at:
backend/db.json
Note: Make sure to backup this file regularly!
subscription-hub/
βββ backend/
β βββ routes/
β β βββ subscriptions.js
β β βββ payments.js
β βββ database.js
β βββ server.js
β βββ Dockerfile
β βββ package.json
βββ frontend/
β βββ src/
β β βββ components/
β β βββ App.jsx
β β βββ main.jsx
β βββ Dockerfile
β βββ nginx.conf
β βββ package.json
βββ .github/
β βββ workflows/
β βββ ci.yml
β βββ deploy.yml
β βββ docker-publish.yml
βββ docker-compose.yml
βββ start.sh
βββ README.md
cd backend
npm run dev # Auto-reload on file changescd frontend
npm run dev # Vite dev server with hot reload-
Build images:
docker-compose build
-
Start services:
docker-compose up -d
The frontend is automatically deployed to GitHub Pages when you push to the main branch.
For production backend deployment, you can:
- Use Docker and deploy to any container platform
- Deploy to services like Railway, Render, Heroku, etc.
- Use the Docker image from GitHub Container Registry
MIT License - see LICENSE file for details
- iterrius - Instagram