How itssubhojit/remetra works
Remetra is a household bill and subscription tracker: users authenticate, manage recurring payment commitments, receive due-date reminders, and review spending insights. The client also supports receipt-assisted entry and Cashfree Sandbox settlement with synchronous verification and webhook reconciliation. The graph follows documented and indexed calls; some page behaviors and the webhook/reminder internals are not excerpted, so their undocumented links are omitted or marked unverified.
Main entry points: PaymentsPage.jsx Payments page · DashboardPage.jsx Dashboard · paymentRoutes.js Payment routes · api.js API client
Components 34
Client application
- App router
Frontend/src/App.jsx - Landing page
Frontend/src/pages/LandingPage.jsx - Auth page
Frontend/src/pages/AuthPage.jsx - Payments page
Frontend/src/pages/PaymentsPage.jsx - Dashboard
Frontend/src/pages/DashboardPage.jsx - Spend insights
Frontend/src/pages/SpendInsightsPage.jsx - Account settings
Frontend/src/pages/SettingsPage.jsx - Payment editor
Frontend/src/components/Modals/PaymentFormDrawer.jsx - Payment details
Frontend/src/components/Modals/PaymentDetailsModal.jsx - Delete confirmation
Frontend/src/components/Modals/DeleteConfirmModal.jsx - Navigation
Frontend/src/components/Navigation/Sidebar.jsx - API client
Frontend/src/services/api.js - Checkout bridge
Frontend/src/services/cashfree.js - Contact page
Frontend/src/pages/ContactPage.jsx
Identity and access
- Auth context
Frontend/src/context/AuthContext.jsx - Firebase Auth
Frontend/src/config/firebase.js - Auth routes
Backend/src/routes/authRoutes.js - Email verification
Backend/src/controllers/authController.js - OTP records
Backend/src/models/EmailVerification.js - Token middleware
Backend/src/middlewares/authMiddleware.js
Bill management
- Payment routes
Backend/src/routes/paymentRoutes.js - Payment operations
Backend/src/controllers/paymentController.js - Payment commitments
Backend/src/models/Payment.model.js - Receipt analysis
Backend/src/services/receiptAiService.js
Backend services
- Express API
Backend/app.js - Rate limiting
Backend/src/middlewares/rateLimiter.js - Cashfree gateway
Backend/src/services/cashfreeService.js - Cashfree Sandbox
- Reminder scheduler
Backend/src/jobs/reminderJob.js - Email delivery
Backend/src/services/emailService.js - Resend
- Contact routes
Backend/src/routes/contactRoutes.js - Contact inquiry
Backend/src/controllers/contactController.js
Other components
- Household user
Connections 47
- Household user → App router: uses
Frontend/src/App.jsx - App router → Auth context: provides auth
Frontend/src/App.jsx - App router → Landing page: routes to
Frontend/src/App.jsx - App router → Auth page: routes to
Frontend/src/App.jsx - Auth page → Auth context: uses
Frontend/src/pages/AuthPage.jsx - Auth context → Firebase Auth: authenticates with
Frontend/src/context/AuthContext.jsx - Household user → Payments page: manages bills
README.md - Household user → Dashboard: reviews
README.md - Household user → Spend insights: explores spending
README.md - Household user → Account settings: configures account
- Payments page → API client: requests data
Frontend/src/pages/PaymentsPage.jsx - Dashboard → API client: requests data
Frontend/src/pages/DashboardPage.jsx - Payments page → Payment editor: opens editor
Frontend/src/pages/PaymentsPage.jsx - Payments page → Payment details: shows details
Frontend/src/pages/PaymentsPage.jsx - Payments page → Delete confirmation: confirms deletion
Frontend/src/pages/PaymentsPage.jsx - Dashboard → Payment editor: opens editor
Frontend/src/pages/DashboardPage.jsx - Dashboard → Payment details: shows details
Frontend/src/pages/DashboardPage.jsx - Dashboard → Delete confirmation: confirms deletion
Frontend/src/pages/DashboardPage.jsx - API client → Express API: sends requests
Frontend/src/services/api.js - Express API → Payment routes: mounts routes
Backend/app.js - Express API → Auth routes: mounts routes
Backend/app.js - Express API → Contact routes: mounts routes
Backend/app.js - Express API → Rate limiting: applies limits
Backend/app.js - Payment routes → Token middleware: protects routes
Backend/src/routes/paymentRoutes.js - Payment routes → Rate limiting: limits routes
Backend/src/routes/paymentRoutes.js - Payment routes → Payment operations: dispatches to
Backend/src/routes/paymentRoutes.js - Payment operations → Payment commitments: reads and writes
Backend/src/controllers/paymentController.js - Payment operations → Cashfree gateway: creates and verifies
Backend/src/controllers/paymentController.js - Cashfree gateway → Cashfree Sandbox: uses gateway
README.md - Payments page → Checkout bridge: starts checkout
Frontend/src/pages/PaymentsPage.jsx - Dashboard → Checkout bridge: starts checkout
Frontend/src/pages/DashboardPage.jsx - Checkout bridge → API client: requests settlement
README.md - Cashfree Sandbox → Payment routes: sends webhook
README.md - Payment editor → API client: submits bill and receipt
Frontend/src/components/Modals/PaymentFormDrawer.jsx - Payment routes → Receipt analysis: dispatches analysis
Backend/src/routes/paymentRoutes.js - Payment operations → Receipt analysis: analyzes receipt
Backend/src/controllers/paymentController.js - Auth routes → Token middleware: protects confirmation
Backend/src/routes/authRoutes.js - Auth routes → Email verification: dispatches to
Backend/src/routes/authRoutes.js - Email verification → OTP records: reads and updates
Backend/src/controllers/authController.js - Email verification → Email delivery: sends OTP
Backend/src/controllers/authController.js - Reminder scheduler → Payment commitments: checks due bills
Backend/src/jobs/reminderJob.js - Reminder scheduler → Email delivery: sends reminders
Backend/src/jobs/reminderJob.js - Email delivery → Resend: delivers mail
Backend/src/services/emailService.js - Contact page → API client: submits inquiry
Frontend/src/pages/ContactPage.jsx - Contact routes → Contact inquiry: dispatches to
Backend/src/routes/contactRoutes.js - Contact inquiry → Email delivery: sends inquiry
Backend/src/controllers/contactController.js - Navigation → Auth context: uses session
Frontend/src/components/Navigation/Sidebar.jsx