# krushnamajhi/mindyourmoney-back architecture

> Architecture diagram of the GitHub repository krushnamajhi/mindyourmoney-back, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/krushnamajhi/mindyourmoney-back
- Repository: https://github.com/krushnamajhi/mindyourmoney-back

## Overview

MindYourMoney is a backend API for user accounts and shared-expense tracking. Clients use the Express routes to register or log in, manage groups and expenses, record settlements, and retrieve debt balances. Expense handling includes split-based allocation and filtering; the balance endpoints summarize what users owe or are owed. TypeORM connects the feature services to persisted entities. The graph follows sampled route/controller/service calls; several service implementations and route indexes were not sampled, so uncertain internal links are omitted.

Main entry points: [`src/main/app.util.ts`](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/main/app.util.ts) (Route and DB setup), [`src/main/app.ts`](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/main/app.ts) (Express app), [`src/features/user/routes/user.routes.ts`](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/user/routes/user.routes.ts) (User routes), [`src/features/expensetracker/services/expense.service.ts`](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/services/expense.service.ts) (Expense and splits)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["API runtime"]
  node_app["Express app<br/>[app.ts]"]
  node_bootstrap["Route and DB setup<br/>[app.util.ts]"]
  node_auth["Authentication middleware<br/>[auth.middleware.ts]"]
  node_error_handler["Error handler"]
end

subgraph group_accounts["User accounts"]
  node_user_routes["User routes<br/>[user.routes.ts]"]
  node_user_controller["User controller<br/>[user.controller.ts]"]
  node_user_service["User service<br/>[user.service.ts]"]
end

subgraph group_tracking["Expense tracking"]
  node_expense_routes["Expense routes<br/>[expense.routes.ts]"]
  node_expense_controller["Expense controller"]
  node_expense_service["Expense and splits<br/>[expense.service.ts]"]
  node_group_routes["Group routes<br/>[group.routes.ts]"]
  node_group_controller["Group controller"]
  node_group_service["Group service<br/>[group.service.ts]"]
  node_category_routes["Category routes"]
  node_category_controller["Category controller"]
  node_category_service["Category service"]
end

subgraph group_balances["Balances and settlement"]
  node_balance_controller["Peer debt controller"]
  node_balance_service["Peer debt service"]
end

subgraph group_persistence["Persistence"]
  node_expense_entities["Expense records<br/>[expense.ts]"]
  node_split_entities["Split records"]
  node_debt_view["Simplified debt view"]
  node_database_config["TypeORM configuration<br/>[database.ts]"]
  node_database[("MySQL database")]
end

node_client(("API client"))

node_client -->|"sends requests"| node_app
node_app -->|"sets up"| node_bootstrap
node_bootstrap -->|"mounts routes"| node_user_routes
node_bootstrap -->|"mounts routes"| node_expense_routes
node_user_routes -->|"dispatches"| node_user_controller
node_user_routes -->|"guards current-user"| node_auth
node_user_controller -->|"calls"| node_user_service
node_expense_routes -->|"dispatches"| node_expense_controller
node_expense_controller -->|"calls"| node_expense_service
node_group_routes -->|"dispatches"| node_group_controller
node_group_controller -->|"calls"| node_group_service
node_category_routes -->|"dispatches"| node_category_controller
node_category_controller -->|"calls"| node_category_service
node_balance_controller -->|"calls"| node_balance_service
node_expense_service -->|"persists expenses"| node_expense_entities
node_expense_service -->|"persists splits"| node_split_entities
node_bootstrap -->|"initializes"| node_database_config
node_database_config -->|"connects to"| node_database
node_app -->|"handles errors"| node_error_handler
node_balance_service -->|"reads balances"| node_debt_view

click node_app "https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/main/app.ts"
click node_bootstrap "https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/main/app.util.ts"
click node_user_routes "https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/user/routes/user.routes.ts"
click node_user_controller "https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/user/controllers/user.controller.ts"
click node_user_service "https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/user/services/user.service.ts"
click node_auth "https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/middlewares/auth.middleware.ts"
click node_expense_routes "https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/routes/expense.routes.ts"
click node_expense_controller "https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/controllers/expense.controller.ts"
click node_expense_service "https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/services/expense.service.ts"
click node_expense_entities "https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/entities/expense.ts"
click node_split_entities "https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/entities/debt-member-split-expense-line.ts"
click node_group_routes "https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/routes/group.routes.ts"
click node_group_controller "https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/controllers/group.controller.ts"
click node_group_service "https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/services/group.service.ts"
click node_category_routes "https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/routes/expense-catagory.routes.ts"
click node_category_controller "https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/controllers/expense-category.controller.ts"
click node_category_service "https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/services/expense-catagory.service.ts"
click node_balance_controller "https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/controllers/simplified-peer-debts.controller.ts"
click node_balance_service "https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/services/simplified-peer-debts.service.ts"
click node_debt_view "https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/entities/simplified-peer-debt.view.ts"
click node_database_config "https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/config/database.ts"
click node_error_handler "https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/middlewares/errorhandler.middleware.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_bootstrap,node_auth,node_error_handler,node_client toneBlue
class node_user_routes,node_user_controller,node_user_service toneAmber
class node_expense_routes,node_expense_controller,node_expense_service,node_group_routes,node_group_controller,node_group_service,node_category_routes,node_category_controller,node_category_service toneMint
class node_balance_controller,node_balance_service toneRose
class node_expense_entities,node_split_entities,node_debt_view,node_database_config,node_database toneIndigo
```

## Components

### API runtime

- [Express app](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/main/app.ts): `src/main/app.ts`
- [Route and DB setup](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/main/app.util.ts): `src/main/app.util.ts`
- [Authentication middleware](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/middlewares/auth.middleware.ts): `src/middlewares/auth.middleware.ts`
- [Error handler](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/middlewares/errorhandler.middleware.ts): `src/middlewares/errorhandler.middleware.ts`

### User accounts

- [User routes](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/user/routes/user.routes.ts): `src/features/user/routes/user.routes.ts`
- [User controller](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/user/controllers/user.controller.ts): `src/features/user/controllers/user.controller.ts`
- [User service](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/user/services/user.service.ts): `src/features/user/services/user.service.ts`

### Expense tracking

- [Expense routes](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/routes/expense.routes.ts): `src/features/expensetracker/routes/expense.routes.ts`
- [Expense controller](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/controllers/expense.controller.ts): `src/features/expensetracker/controllers/expense.controller.ts`
- [Expense and splits](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/services/expense.service.ts): `src/features/expensetracker/services/expense.service.ts`
- [Group routes](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/routes/group.routes.ts): `src/features/expensetracker/routes/group.routes.ts`
- [Group controller](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/controllers/group.controller.ts): `src/features/expensetracker/controllers/group.controller.ts`
- [Group service](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/services/group.service.ts): `src/features/expensetracker/services/group.service.ts`
- [Category routes](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/routes/expense-catagory.routes.ts): `src/features/expensetracker/routes/expense-catagory.routes.ts`
- [Category controller](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/controllers/expense-category.controller.ts): `src/features/expensetracker/controllers/expense-category.controller.ts`
- [Category service](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/services/expense-catagory.service.ts): `src/features/expensetracker/services/expense-catagory.service.ts`

### Balances and settlement

- [Peer debt controller](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/controllers/simplified-peer-debts.controller.ts): `src/features/expensetracker/controllers/simplified-peer-debts.controller.ts`
- [Peer debt service](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/services/simplified-peer-debts.service.ts): `src/features/expensetracker/services/simplified-peer-debts.service.ts`

### Persistence

- [Expense records](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/entities/expense.ts): `src/features/expensetracker/entities/expense.ts`
- [Split records](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/entities/debt-member-split-expense-line.ts): `src/features/expensetracker/entities/debt-member-split-expense-line.ts`
- [Simplified debt view](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/features/expensetracker/entities/simplified-peer-debt.view.ts): `src/features/expensetracker/entities/simplified-peer-debt.view.ts`
- [TypeORM configuration](https://github.com/krushnamajhi/mindyourmoney-back/blob/main/src/config/database.ts): `src/config/database.ts`
- **MySQL database**

### Other components

- **API client**

## Connections

- API client → Express app: sends requests
- Express app → Route and DB setup: sets up
- Route and DB setup → User routes: mounts routes
- Route and DB setup → Expense routes: mounts routes
- User routes → User controller: dispatches
- User routes → Authentication middleware: guards current-user
- User controller → User service: calls
- Expense routes → Expense controller: dispatches
- Expense controller → Expense and splits: calls
- Group routes → Group controller: dispatches
- Group controller → Group service: calls
- Category routes → Category controller: dispatches
- Category controller → Category service: calls
- Peer debt controller → Peer debt service: calls
- Expense and splits → Expense records: persists expenses
- Expense and splits → Split records: persists splits
- Route and DB setup → TypeORM configuration: initializes
- TypeORM configuration → MySQL database: connects to
- Express app → Error handler: handles errors
- Peer debt service → Simplified debt view: reads balances
