Skip to content

A modern web application for tracking and managing your subscription expenses with automated reminders and comprehensive analytics.

Notifications You must be signed in to change notification settings

zlimteck/subly_app

Repository files navigation

Subly Logo

Subly

A modern subscription expense tracker with automated reminders and calendar integration

Docker Hub License: MIT

FeaturesQuick StartScreenshotsDocumentation


Features

  • 📊 Subscription Tracking - Monthly and annual subscriptions with smart cost calculations
  • 🎯 Trial Management - Monitor free trials with expiration alerts
  • 📅 Calendar Integration - iCal subscription for Apple Calendar, Google Calendar, Outlook
  • 🔔 Smart Notifications - Email and browser push notifications (configurable 1-7 days before)
  • 📈 Analytics - Interactive charts by category and spending trends
  • 🎨 Multiple Themes - Dark, Light, Dracula, Nord, Solarized
  • 💱 Multi-Currency - EUR and USD with cross-device sync
  • 🌐 i18n - English and French support
  • 📱 Responsive - Works seamlessly on desktop, tablet, and mobile
  • 🔐 Secure - JWT auth, bcrypt passwords, email verification, invitation system

Quick Start

Docker Compose (Recommended)

  1. Create a docker-compose.yml file:
services:
  mongodb:
    image: mongo:8.0
    container_name: subly-mongodb
    environment:
      - MONGO_INITDB_ROOT_USERNAME=subly_admin
      - MONGO_INITDB_ROOT_PASSWORD=change_this_password
      - MONGO_INITDB_DATABASE=subly
    volumes:
      - mongodb_data:/data/db
      - mongodb_config:/data/configdb
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"]
      interval: 10s
      timeout: 5s
      retries: 5

  subly:
    image: zlimteck/subly:latest
    container_name: subly-app
    ports:
      - "3000:80"
      - "5071:5071"
    environment:
      - NODE_ENV=production
      - PORT=5071
      - MONGODB_URI=mongodb://subly_admin:change_this_password@mongodb:27017/subly?authSource=admin
      - JWT_SECRET=your_secure_random_string_here
      - FRONTEND_URL=http://your_ip_here:3000
      - BACKEND_URL=http://your_ip_here:5071
      - TZ=Europe/Paris
    depends_on:
      mongodb:
        condition: service_healthy
    restart: unless-stopped

volumes:
  mongodb_data:
    driver: local
  mongodb_config:
    driver: local
  1. Start the services:
docker-compose up -d
  1. Generate an invitation code:
docker exec -it subly-app node /app/backend/scripts/generateInvite.js
  1. Access the app:
  • Open http://localhost:3000
  • Sign up with the invitation code
  • Promote yourself to admin: docker exec -it subly-app node /app/backend/scripts/promoteAdmin.js your-username

That's it! 🎉

Other Installation Methods

Screenshots

🖼️ View Screenshots

Login Page

Login Page

Dashboard - Terminal Dark Theme

Dashboard Terminal Dark

Dashboard - Dracula Theme

Dashboard Dracula

Dashboard - Nord Theme

Dashboard Nord

Dashboard - Light Mode

Dashboard Light

Profile Modal

Profile Modal

Tech Stack

Frontend: React 18, Vite, React Router, Recharts, Axios, date-fns, Lucide Icons

Backend: Node.js, Express, MongoDB, Mongoose, JWT, bcrypt, Resend (email), web-push

DevOps: Docker, Docker Compose, Nginx, GitHub Actions

Documentation

Quick Links

License

MIT License - See LICENSE for details


Built with ❤️ using Node.js, React, and MongoDB

About

A modern web application for tracking and managing your subscription expenses with automated reminders and comprehensive analytics.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages