How vedant-kerulkar07/invoiceflow works
InvoiceFlow is a full-stack invoicing application. Users authenticate, manage clients, create and track itemized invoices, review billing metrics, and export invoice data as CSV. The frontend routes protected screens through a shared layout and calls REST services; the backend routes requests through authentication to controllers that apply business rules and persist data in MongoDB. The map includes documented authentication, client, invoice, dashboard, and export capabilities; some unsampled links are omitted rather than inferred.
Main entry points: server.js Express API server · App.jsx Routes and layout · invoice.controller.js Invoice operations · auth.middleware.js JWT protection
Components 32
Web application
- Routes and layout
frontend/src/App.jsx - Sign in / register
frontend/src/pages/auth - Protected screens
frontend/src/components/auth/ProtectedRoute.jsx - Client management
frontend/src/pages/clients - Invoice management
frontend/src/pages/invoices - Billing dashboard
frontend/src/pages/dashboard/Dashboard.jsx - CSV export screen
frontend/src/pages/invoices/InvoiceExport.jsx - CSV generation
frontend/src/utils/generateInvoiceCSV.js - Authentication service
frontend/src/services/auth.service.js - Client service
frontend/src/services/client.service.js - Invoice service
frontend/src/services/invoice.service.js - Dashboard service
frontend/src/services/dashboardService.js - Export service
frontend/src/services/invoiceExport.service.js
REST API
- Express API server
backend/server.js - Auth routes
backend/routes/auth.routes.js - Authentication logic
backend/controllers/auth.controller.js - JWT protection
backend/middleware/auth.middleware.js - Client routes
backend/routes/client.routes.js - Client operations
backend/controllers/client.controller.js - Invoice routes
backend/routes/invoice.routes.js - Invoice operations
backend/controllers/invoice.controller.js - Invoice numbering
backend/utils/generateInvoiceNumber.js - Overdue updater
backend/utils/updateOverdueInvoices.js - Dashboard routes
backend/routes/dashboard.route.js - Dashboard metrics
backend/controllers/dashboard.controller.js - Export routes
backend/routes/invoiceExport.routes.js - Invoice export data
backend/controllers/invoiceExport.controller.js
Persistence
- MongoDB
- Client records
backend/models/Client.model.js - Invoice records
backend/models/Invoice.model.js - User records
backend/models/User.model.js
Other components
- Business user
Connections 48
- Business user → Routes and layout: uses
README.md - Routes and layout → Sign in / register: routes
frontend/src/App.jsx - Routes and layout → Protected screens: protects
frontend/src/App.jsx - Routes and layout → Client management: routes
frontend/src/App.jsx - Routes and layout → Invoice management: routes
frontend/src/App.jsx - Routes and layout → Billing dashboard: routes
frontend/src/App.jsx - Routes and layout → CSV export screen: routes
frontend/src/App.jsx - Sign in / register → Authentication service: calls
frontend/src/pages/auth/Login.jsx - Protected screens → Authentication service: checks session
frontend/src/components/auth/ProtectedRoute.jsx - Client management → Client service: calls
frontend/src/pages/clients/Clients.jsx - Invoice management → Invoice service: calls
frontend/src/pages/invoices/Invoices.jsx - Invoice management → Client service: loads clients
frontend/src/pages/invoices/CreateInvoice.jsx - Billing dashboard → Dashboard service: calls
frontend/src/pages/dashboard/Dashboard.jsx - CSV export screen → Export service: fetches data
frontend/src/pages/invoices/InvoiceExport.jsx - CSV export screen → CSV generation: generates CSV
frontend/src/pages/invoices/InvoiceExport.jsx - Authentication service → Express API server: HTTP requests
frontend/src/services/auth.service.js - Client service → Express API server: HTTP requests
frontend/src/services/client.service.js - Invoice service → Express API server: HTTP requests
frontend/src/services/invoice.service.js - Dashboard service → Express API server: HTTP requests
- Export service → Express API server: HTTP requests
- Express API server → Auth routes: mounts
backend/server.js - Express API server → Client routes: mounts
backend/server.js - Express API server → Invoice routes: mounts
backend/server.js - Express API server → Dashboard routes: mounts
backend/server.js - Express API server → Export routes: mounts
backend/server.js - Auth routes → Authentication logic: dispatches
backend/routes/auth.routes.js - Client routes → JWT protection: protects
backend/routes/client.routes.js - Client routes → Client operations: dispatches
backend/routes/client.routes.js - Invoice routes → JWT protection: protects
backend/routes/invoice.routes.js - Invoice routes → Invoice operations: dispatches
backend/routes/invoice.routes.js - Dashboard routes → JWT protection: protects
backend/routes/dashboard.route.js - Dashboard routes → Dashboard metrics: dispatches
backend/routes/dashboard.route.js - Export routes → JWT protection: protects
backend/routes/invoiceExport.routes.js - Export routes → Invoice export data: dispatches
backend/routes/invoiceExport.routes.js - JWT protection → User records: loads user
backend/middleware/auth.middleware.js - Authentication logic → User records: uses
backend/controllers/auth.controller.js - Client operations → Client records: manages records
backend/controllers/client.controller.js - Client operations → Invoice records: checks invoices
backend/controllers/client.controller.js - Invoice operations → Client records: validates client
backend/controllers/invoice.controller.js - Invoice operations → Invoice numbering: generates number
backend/controllers/invoice.controller.js - Invoice operations → Overdue updater: updates status
backend/controllers/invoice.controller.js - Invoice operations → Invoice records: reads / writes
backend/controllers/invoice.controller.js - Dashboard metrics → Overdue updater: updates status
backend/controllers/dashboard.controller.js - Dashboard metrics → Client records: counts clients
backend/controllers/dashboard.controller.js - Dashboard metrics → Invoice records: aggregates metrics
backend/controllers/dashboard.controller.js - Invoice export data → Invoice records: reads invoices
backend/controllers/invoiceExport.controller.js - Client records → MongoDB: persists
- Invoice records → MongoDB: persists