How achintxv/backend-ledger works
Backend Ledger is an Express API for user authentication, account management, and ledger-backed transfers. Clients enter through the server and app router; route handlers apply authentication where configured, then controllers perform domain operations through Mongoose models. Transfers check account status and ledger-derived balance, record transaction and debit/credit entries in a MongoDB session, and send a success email. The source index confirms the server references the app and database configuration; the README is empty, so broader capability descriptions are limited to the sampled code and index.
Main entry points: transaction.controller.js Transaction controller · app.js Express app · auth.controller.js Auth controller · auth.middleware.js Auth middleware
Components 19
API routing
- HTTP server
server.js - Express app
src/app.js - Auth routes
src/routes/auth.routes.js - Account routes
src/routes/account.routes.js - Transaction routes
src/routes/transaction.routes.js
Identity
- Auth controller
src/controllers/auth.controller.js - Auth middleware
src/middleware/auth.middleware.js - User model
src/models/user.model.js - Token blacklist
src/models/blacklist.model.js
Accounts and ledger
- Account controller
src/controllers/account.controller.js - Account model
src/models/account.model.js - Ledger model
src/models/ledger.model.js
Transfers and notifications
- Transaction controller
src/controllers/transaction.controller.js - Transaction model
src/models/transaction.model.js - Email service
src/services/email.service.js
Other components
- API client
- Database config
src/config/db.js - MongoDB
- Gmail transport
Connections 28
- API client → HTTP server: sends requests
- HTTP server → Express app: starts app
server.js - HTTP server → Database config: loads config
server.js - Express app → Auth routes: mounts routes
src/app.js - Express app → Account routes: mounts routes
src/app.js - Express app → Transaction routes: mounts routes
src/app.js - Auth routes → Auth controller: dispatches to
src/routes/auth.routes.js - Account routes → Auth middleware: checks identity
src/routes/account.routes.js - Account routes → Account controller: dispatches to
src/routes/account.routes.js - Transaction routes → Auth middleware: checks identity
src/routes/transaction.routes.js - Transaction routes → Transaction controller: dispatches to
src/routes/transaction.routes.js - Auth controller → User model: reads and writes
src/controllers/auth.controller.js - Auth controller → Token blacklist: records logout
src/controllers/auth.controller.js - Auth controller → Email service: sends welcome
src/controllers/auth.controller.js - Auth middleware → User model: loads user
src/middleware/auth.middleware.js - Auth middleware → Token blacklist: checks token
src/middleware/auth.middleware.js - Account controller → Account model: manages accounts
src/controllers/account.controller.js - Account model → Ledger model: aggregates balance
src/models/account.model.js - Transaction controller → Account model: checks accounts
src/controllers/transaction.controller.js - Transaction controller → Transaction model: records transfer
src/controllers/transaction.controller.js - Transaction controller → Ledger model: writes entries
src/controllers/transaction.controller.js - Transaction controller → Email service: sends receipt
src/controllers/transaction.controller.js - Email service → Gmail transport: sends email
src/services/email.service.js - User model → MongoDB: persists users
- Token blacklist → MongoDB: persists tokens
- Account model → MongoDB: persists accounts
- Ledger model → MongoDB: persists entries
- Transaction model → MongoDB: persists transfers