A full-stack web application for tracking and managing your subscriptions with automated email reminders, built with React.js and Node.js.
Live Application: https://subscription-tracker-frontend-1.onrender.com/
- Frontend Repository: https://github.com/ARCoder181105/Subscription-tracker-frontend
- Backend Repository: https://github.com/ARCoder181105/Subscription-tracker-backend
- Multiple Login Methods: Email/password, Google OAuth, GitHub OAuth
- Secure Authentication: JWT-based authentication with refresh tokens
- User Profiles: Avatar upload, user information management
- Session Management: Automatic token refresh and secure logout
- Add Subscriptions: Track any subscription with custom details
- Multiple Billing Cycles: Weekly, Monthly, Quarterly, Yearly
- Multi-Currency Support: USD, EUR, INR, GBP, JPY
- Status Tracking: Active, Paused, Cancelled, Expired subscriptions
- Categories: Organize subscriptions by type (Entertainment, Productivity, etc.)
- Email Notifications: Automated reminder emails before billing dates
- Customizable Reminders: Set reminder period (1-30 days before billing)
- Welcome Emails: New user registration notifications
- Login/Logout Notifications: Security alerts for account activity
- Payment Reminders: Never miss a subscription payment again
- Spending Overview: Monthly and yearly expense calculations
- Visual Statistics: Dashboard with spending breakdown
- Upcoming Renewals: Track subscriptions due soon
- Filtering Options: View subscriptions by status or category
- Responsive Design: Works seamlessly on desktop, tablet, and mobile
- Professional UI: Clean, modern design with Tailwind CSS
- Real-time Updates: Toast notifications for all user actions
- Dark/Light Themes: Professional color schemes
- Interactive Elements: Smooth animations and hover effects
- React 19 - Modern React with hooks
- Vite - Fast build tool and development server
- Tailwind CSS - Utility-first CSS framework
- Lucide React - Beautiful icon library
- React Router DOM - Client-side routing
- Context API - State management
- Node.js - JavaScript runtime
- Express.js - Web application framework
- MongoDB - NoSQL database
- Mongoose - MongoDB object modeling
- JWT - JSON Web Tokens for authentication
- Passport.js - Authentication middleware
- Cloudinary - Image upload and management
- Nodemailer - Email sending functionality
- bcrypt - Password hashing
- Node.js (v16 or higher)
- MongoDB database
- Cloudinary account (for image uploads)
- Email service (Gmail, SendGrid, etc.)
-
Clone the repositories:
# Frontend git clone https://github.com/ARCoder181105/Subscription-tracker-frontend.git cd Subscription-tracker-frontend # Backend (in another terminal) git clone https://github.com/ARCoder181105/Subscription-tracker-backend.git cd Subscription-tracker-backend
-
Install dependencies:
# In both frontend and backend directories npm install -
Environment Configuration:
Backend (.env):
PORT=6969 MONGODB_URI=your_mongodb_connection_string ACCESS_TOKEN_SECRET=your_access_token_secret ACCESS_TOKEN_EXPIRY=15m REFRESH_TOKEN_SECRET=your_refresh_token_secret REFRESH_TOKEN_EXPIRY=7d SESSION_SECRET=your_session_secret # Cloudinary Configuration CLOUDINARY_CLOUD_NAME=your_cloud_name CLOUDINARY_API_KEY=your_api_key CLOUDINARY_API_SECRET=your_api_secret # Email Configuration EMAIL_USER=your_email@gmail.com EMAIL_PASS=your_app_password # OAuth Configuration GOOGLE_CLIENT_ID=your_google_client_id GOOGLE_CLIENT_SECRET=your_google_client_secret GITHUB_CLIENT_ID=your_github_client_id GITHUB_CLIENT_SECRET=your_github_client_secret
Frontend (.env):
VITE_BACKEND_URL=http://localhost:6969
-
Start the development servers:
# Backend (port 6969) npm run dev # Frontend (port 5173) npm run dev
POST /api/v1/auth/register- User registrationPOST /api/v1/auth/login- User loginGET /api/v1/auth/logout- User logoutGET /api/v1/auth/refresh- Refresh access tokenGET /api/v1/auth/google- Google OAuthGET /api/v1/auth/github- GitHub OAuth
GET /api/v1/user/home- Get user subscriptionsGET /api/v1/user/subs/:id- Get specific subscriptionPOST /api/v1/user/subs- Create new subscriptionPATCH /api/v1/user/subs/:id- Update subscriptionDELETE /api/v1/user/subs/:id- Delete subscriptionPATCH /api/v1/user/subs/:id/done- Mark subscription as paid
The application includes a comprehensive email notification system:
- Registration Welcome: Sent when users create an account
- Login Notifications: Security alerts for account access
- Logout Notifications: Session termination confirmations
- Payment Reminders: Automated emails before subscription renewals
- Set custom reminder periods (1-30 days before billing)
- Automatic calculation of next billing dates
- Prevention of duplicate reminder emails
- Support for different billing cycles
Professional HTML email templates for all notification types with:
- Branded design matching the application
- Clear call-to-action buttons
- Subscription details and payment information
- Responsive design for mobile devices
Frontend/
βββ src/
β βββ components/ # Reusable UI components
β βββ contexts/ # React Context providers
β βββ pages/ # Application pages
β βββ utils/ # Utility functions
β βββ App.jsx # Main application component
β βββ main.jsx # Application entry point
βββ public/ # Static assets
βββ package.json # Dependencies and scripts
Backend/
βββ src/
β βββ controllers/ # Route handlers
β βββ models/ # Database schemas
β βββ routes/ # API routes
β βββ middleware/ # Custom middleware
β βββ utils/ # Utility functions
β βββ db/ # Database configuration
βββ index.js # Server entry point
βββ package.json # Dependencies and scripts
- JWT Authentication: Secure token-based authentication
- Password Hashing: bcrypt encryption for user passwords
- CORS Protection: Cross-origin request security
- Input Validation: Mongoose schema validation
- Rate Limiting: Protection against brute force attacks
- Secure Headers: Security middleware for Express
- Real-time Notifications: Instant feedback for all user actions
- Responsive Design: Seamless experience across all devices
- Professional UI: Modern, clean interface design
- Smart Reminders: Never miss a subscription payment
- Multi-platform Auth: Login with Google, GitHub, or email
- Expense Tracking: Monitor monthly and yearly spending
- Data Security: Secure authentication and data protection
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
ARCoder181105
- GitHub: @ARCoder181105
- Frontend Repo: Subscription Tracker Frontend
- Backend Repo: Subscription Tracker Backend
The application is deployed on Render with:
- Frontend: Static site deployment
- Backend: Node.js application deployment
- Database: MongoDB Atlas cloud database
- File Storage: Cloudinary for image management
Live Application: https://subscription-tracker-frontend-1.onrender.com/
Built with β€οΈ using React.js, Node.js, and MongoDB