How jamir4270/subscription-tracker works
SubDub is an Express REST API for account authentication and subscription lifecycle management, with MongoDB persistence and scheduled renewal reminders. The main workflow is a client request through routing and authorization to a controller and stored data; subscription creation additionally triggers an Upstash workflow, which reads the subscription and sends 7-, 5-, and 1-day email reminders. The graph reflects the sampled source and README; user CRUD and some subscription endpoints are placeholders, and their internals are not expanded.
Main entry points: app.js Express App · user.model.js User Model · user.routes.js User Routes · subscription.routes.js Subscription Routes
Components 24
API and Security
- Express App
app.js - Arcjet Guard
middlewares/arcjet.middleware.js - JWT Authorization
middlewares/auth.middleware.js - Error Handler
middlewares/error.middleware.js - Auth Routes
routes/auth.routes.js - User Routes
routes/user.routes.js - Subscription Routes
routes/subscription.routes.js - Workflow Route
routes/workflow.routes.js
Account and Subscriptions
- Authentication
controllers/auth.controller.js - User Queries
controllers/user.controller.js - Subscription Management
controllers/subscription.controller.js - User Model
models/user.model.js - Subscription Model
models/subscription.model.js
Reminder Delivery
- Reminder Workflow
controllers/workflow.controller.js - Email Sender
utils/send-email.js - Email Templates
utils/email-template.js
Runtime Services
- Mongo Connection
database/mongodb.js - Workflow Client
config/upstash.js - Mail Transport
config/nodemailer.js
Other components
- API Client
- MongoDB
- Upstash Workflows
- Gmail SMTP
- Arcjet Service
Connections 29
- API Client → Express App: sends requests
- Express App → Arcjet Guard: runs guard
- Arcjet Guard → Arcjet Service: checks traffic
- Express App → Auth Routes: mounts routes
- Express App → User Routes: mounts routes
- Express App → Subscription Routes: mounts routes
- Express App → Workflow Route: mounts routes
- Express App → Mongo Connection: connects database
- Express App → Error Handler: handles errors
- Auth Routes → Authentication: dispatches
- User Routes → JWT Authorization: authorizes selected routes
- User Routes → User Queries: dispatches
- Subscription Routes → JWT Authorization: authorizes protected routes
- Subscription Routes → Subscription Management: dispatches
- Workflow Route → Reminder Workflow: dispatches
- JWT Authorization → User Model: loads user
- Authentication → User Model: reads and creates
- User Queries → User Model: queries
- Subscription Management → Subscription Model: manages records
- Reminder Workflow → Subscription Model: loads subscription
- User Model → MongoDB: persists data
- Subscription Model → MongoDB: persists data
- Subscription Management → Workflow Client: uses client
- Workflow Client → Upstash Workflows: triggers workflow
- Upstash Workflows → Express App: posts reminder request
- Reminder Workflow → Email Sender: sends reminder
- Email Sender → Email Templates: renders message
- Email Sender → Mail Transport: uses transport
- Mail Transport → Gmail SMTP: delivers email