A robust subscription management system that helps users track and manage their recurring subscriptions with automated email reminders.
- 🔐 User Authentication (Sign Up, Sign In)
- 📝 Subscription Management
- Create new subscriptions
- View all subscriptions
- Track subscription details
- ⏰ Automated Email Reminders
- 7 days before renewal
- 5 days before renewal
- 2 days before renewal
- 1 day before renewal
- 💰 Subscription Details
- Name, price, currency
- Payment method
- Renewal date
- Subscription category
- Status tracking
- Backend
- Node.js
- Express.js
- MongoDB
- Mongoose
- JWT Authentication
- Nodemailer
- Upstash Workflow
- Arcjet Security
- Node.js (v14 or higher)
- MongoDB
- Gmail account (for email notifications)
- Upstash account (for workflow management)
- Arcjet account (for security)
- Clone the repository
git clone https://github.com/yourusername/subscription-tracker.git
cd subscription-tracker- Install dependencies
npm install- Create environment files
Create
.env.development.localfor development:
PORT=5500
NODE_ENV=development
DB_URI=your_mongodb_uri
JWT_SECRET=your_jwt_secret
JWT_EXPIRES_IN=1h
EMAIL_PASSWORD=your_gmail_app_password
QSTASH_URL=your_upstash_qstash_url
QSTASH_TOKEN=your_upstash_qstash_token
ARCJET_KEY=your_arcjet_key- Start the development server
npm run devPOST /api/v1/auth/sign-up- Register a new userPOST /api/v1/auth/sign-in- Login userPOST /api/v1/auth/sign-out- Logout user
POST /api/v1/subscriptions- Create a new subscriptionGET /api/v1/subscriptions/user/:id- Get user's subscriptionsGET /api/v1/subscriptions/:id- Get subscription detailsPUT /api/v1/subscriptions/:id/cancel- Cancel a subscription
The system sends automated email reminders for upcoming subscription renewals:
- 7 days before renewal
- 5 days before renewal
- 2 days before renewal
- 1 day before renewal
- JWT-based authentication
- Password hashing with bcrypt
- Rate limiting with Arcjet
- Bot detection
- Input validation
- Error handling middleware
- Fork the repository
- Create your 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