PayLoop
<div align="center"> # ๐ PayLoop ### *Smart Subscription Management & Automated Reminder System* [](https://nodejs.org/) [](https://expressjs.com/) [](https://mongodb.com/) [](https://jwt.io/) *Never miss a subscription renewal again with intelligent automated reminders* [๐ Live Demo](https://payloop-r4mr.onrender.com/) โข [๐ Documentation](#-api-documentation) โข [๐ ๏ธ Installation](#-quick-start) </div> --- ## โจ What is PayLoop? PayLoop is a **comprehensive subscription management ecosystem** that transforms how you track and manage recurring payments. Built with enterprise-grade security and intelligent automation, it delivers personalized renewal reminders through sophisticated workflow orchestration. ### ๐ฏ **Core Value Proposition** - **Zero Missed Renewals**: Advanced 4-tier reminder system (7โ5โ2โ1 days) - **Enterprise Security**: Multi-layered protection with Arcjet integration - **Intelligent Workflows**: Upstash-powered automation that adapts to your schedule - **Universal Compatibility**: Support for all major payment methods and currencies --- ## ๐ **Key Features** <table> <tr> <td width="50%"> ### ๐ **Security & Authentication** - JWT-based secure authentication - Arcjet bot detection & rate limiting - Password encryption with bcrypt - Role-based access control ### ๐ **Smart Management** - Real-time subscription tracking - Automated renewal calculations - Multi-currency support (USD, EUR, GBP, INR) - Flexible billing cycles </td> <td width="50%"> ### ๐ **Intelligent Reminders** - 4-tier reminder system (7, 5, 2, 1 days) - Workflow state management - Email template customization - Timezone-aware scheduling ### ๐ณ **Payment Integration** - Credit Card, PayPal, Bank Transfer - Subscription categorization - Price tracking & analytics - Status monitoring (Active/Inactive/Pending) </td> </tr> </table> --- ## ๐ ๏ธ **Tech Stack** <div align="center"> | **Backend** | **Database** | **Security** | **Workflow** | **Tools** | |-------------|--------------|--------------|--------------|-----------| | Node.js + Express | MongoDB + Mongoose | Arcjet + JWT | Upstash Workflow | Day.js + Nodemailer | </div> --- ## โก **Quick Start** ### Prerequisites ```bash Node.js v16+ | MongoDB | Upstash Account | Arcjet Account ``` ### 1๏ธโฃ **Clone & Install** ```bash git clone https://github.com/Yaser-123/PayLoop.git cd PayLoop npm install ``` ### 2๏ธโฃ **Environment Configuration** Create `.env.development.local`: ```env # Server Configuration PORT=5500 SERVER_URL=http://localhost:5500 NODE_ENV=development # Database DB_URI=your_mongodb_connection_string # Authentication JWT_SECRET=your_super_secure_jwt_secret JWT_EXPIRES_IN=1d # Security (Arcjet) ARCJET_KEY=your_arcjet_key ARCJET_ENV=development # Workflow Engine (Upstash) QSTASH_URL=http://127.0.0.1:8080 QSTASH_TOKEN=your_qstash_token # Email Service EMAIL_PASSWORD=your_gmail_app_password ``` ### 3๏ธโฃ **Launch Application** ```bash # Development Mode npm run dev # Production Mode npm start ``` --- ## ๐ **API Documentation** ### ๐ **Authentication Endpoints** <details> <summary><strong>POST</strong> <code>/api/v1/auth/sign-up</code> - Register New User</summary> ```http POST /api/v1/auth/sign-up Content-Type: application/json { "name": "Mohamed Yaser", "email": "[email protected]", "password": "securePassword123" } ``` **Response:** ```json { "success": true, "message": "User created successfully!", "data": { "userId": "64a7f8b2c1d2e3f4a5b6c7d8", "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." } } ``` </details> <details> <summary><strong>POST</strong> <code>/api/v1/auth/sign-in</code> - User Login</summary> ```http POST /api/v1/auth/sign-in Content-Type: application/json { "email": "[email protected]", "password": "securePassword123" } ``` </details> ### ๐ **Subscription Management** <details> <summary><strong>POST</strong> <code>/api/v1/subscriptions</code> - Create Subscription</summary> ```http POST /api/v1/subscriptions Authorization: Bearer <your_jwt_token> Content-Type: application/json { "name": "Netflix Premium", "price": 15.99, "currency": "USD", "frequency": "monthly", "category": "premium", "startDate": "2025-01-15T00:00:00.000Z", "paymentMethod": "credit_card" } ``` **Supported Values:** - **Categories**: `basic`, `premium`, `enterprise` - **Payment Methods**: `credit_card`, `paypal`, `bank_transfer` - **Frequencies**: `daily`, `weekly`, `monthly`, `yearly` - **Currencies**: `USD`, `EUR`, `GBP`, `INR` </details> <details> <summary><strong>GET</strong> <code>/api/v1/subscriptions/user/:userId</code> - Get User Subscriptions</summary> ```http GET /api/v1/subscriptions/user/64a7f8b2c1d2e3f4a5b6c7d8 Authorization: Bearer <your_jwt_token> ``` </details> --- ## ๐๏ธ **Project Architecture** ``` PayLoop/ โโโ ๐ app.js # Application entry point โโโ โ๏ธ config/ โ โโโ arcjet.js # Security configuration โ โโโ env.js # Environment management โ โโโ nodemailer.js # Email service setup โ โโโ upstash.js # Workflow client โโโ ๐ฎ controllers/ โ โโโ auth.controller.js # Authentication logic โ โโโ subscription.controller.js # Subscription operations โ โโโ user.controller.js # User management โ โโโ workflow.controller.js # Automated workflows โโโ ๐๏ธ database/ โ โโโ mongodb.js # Database connection โโโ ๐ก๏ธ middlewares/ โ โโโ arcjet.middleware.js # Security layer โ โโโ auth.middleware.js # JWT verification โ โโโ error.middleware.js # Error handling โโโ ๐ models/ โ โโโ subscription.model.js # Subscription schema โ โโโ user.model.js # User schema โโโ ๐ฃ๏ธ routes/ โ โโโ auth.routes.js # Authentication routes โ โโโ subscription.routes.js # Subscription routes โ โโโ user.routes.js # User routes โ โโโ workflow.routes.js # Workflow routes โโโ ๐ง utils/ โโโ email-template.js # Email templates โโโ send-email.js # Email utilities ``` --- ## ๐ **Intelligent Workflow System** PayLoop's workflow engine automatically: 1. **๐ฏ Workflow Creation**: Triggers when new subscription is added 2. **๐ Smart Scheduling**: Calculates optimal reminder timing 3. **๐ Multi-Tier Alerts**: 7โ5โ2โ1 day reminder sequence 4. **โก State Management**: Handles active/inactive/pending states 5. **๐ Auto-Cleanup**: Stops workflows for expired subscriptions ### **Workflow Timeline Example** ``` ๏ฟฝ Subscription Created โ ๐ Workflow Initiated โฐ 7 Days Before โ ๐ง First Reminder โฐ 5 Days Before โ ๐ง Second Reminder โฐ 2 Days Before โ ๐ง Third Reminder โฐ 1 Day Before โ ๐ง Final Reminder ๐ณ Renewal Date โ ๐ Workflow Complete ``` --- ## ๐ **Enterprise Security** <table> <tr> <td width="50%"> ### **Authentication Layer** - โ JWT token-based auth - โ Bcrypt password hashing - โ Session management - โ Secure headers </td> <td width="50%"> ### **Protection Layer (Arcjet)** - โ Rate limiting (token bucket) - โ Bot detection & filtering - โ Shield protection - โ IP-based restrictions </td> </tr> </table> --- ## ๐ **Deployment Guide** ### **Production Environment Setup** 1. **Environment Configuration** ```bash # Create production environment file touch .env.production.local # Set production variables NODE_ENV=production DB_URI=your_production_mongodb_uri ``` 2. **Platform Deployment** (Render/Heroku/Vercel) ```bash # Build command npm install # Start command npm start ``` 3. **Environment Variables** (Set in your hosting platform) - `DB_URI` - Production MongoDB connection - `JWT_SECRET` - Production JWT secret - `ARCJET_KEY` - Production Arcjet key - `QSTASH_TOKEN` - Production Upstash token --- ## ๏ฟฝโ๐ป **About the Developer** <div align="center"> ### **Mohamed Yaser** *Full-Stack Developer & Software Architect* [](https://www.linkedin.com/in/mohamedyaser08/) [](https://x.com/tmohamedyaser) [](https://mohdyaser.vercel.app/) [](mailto:[email protected]) </div> --- ## ๐ค **Contributing** We welcome contributions! Here's how to get started: 1. **Fork** the repository 2. **Create** a feature branch: `git checkout -b feature/amazing-feature` 3. **Commit** your changes: `git commit -m 'Add amazing feature'` 4. **Push** to branch: `git push origin feature/amazing-feature` 5. **Open** a Pull Request --- ## ๏ฟฝ **License** This project is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details. --- <div align="center"> ### ๏ฟฝ **PayLoop - Smart Subscription Management** *Built with โค๏ธ by Mohamed Yaser* **โญ Star this repo if you find it helpful!** </div>