# mugil0095/daily-expenses-sharing-application-using-fastapi architecture

> Architecture diagram of the GitHub repository mugil0095/daily-expenses-sharing-application-using-fastapi, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mugil0095/daily-expenses-sharing-application-using-fastapi
- Repository: https://github.com/mugil0095/daily-expenses-sharing-application-using-fastapi

## Overview

This is a FastAPI backend for managing users and shared expenses. A client sends user or expense requests through the registered API routers; the routers validate request/response shapes and delegate persistence operations to CRUD functions using SQLAlchemy sessions and relational models. Expense splits can carry equal, exact, or percentage types, but the sampled implementation stores supplied split values rather than calculating shares. The README mentions downloadable balance sheets, but no such endpoint or implementation appears in the tree. Percentage validation exists in app/utils.py but is not wired into the routes. Wiring reflects sampled source; unsampled capabilities are not inferred.

Main entry points: [`app/main.py`](https://github.com/mugil0095/daily-expenses-sharing-application-using-fastapi/blob/main/app/main.py) (FastAPI app), [`app/routers/users.py`](https://github.com/mugil0095/daily-expenses-sharing-application-using-fastapi/blob/main/app/routers/users.py) (User routes), [`app/routers/expenses.py`](https://github.com/mugil0095/daily-expenses-sharing-application-using-fastapi/blob/main/app/routers/expenses.py) (Expense routes), [`app/database.py`](https://github.com/mugil0095/daily-expenses-sharing-application-using-fastapi/blob/main/app/database.py) (DB sessions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API entry"]
  node_application["FastAPI app<br/>[main.py]"]
  node_user_routes["User routes<br/>[users.py]"]
  node_expense_routes["Expense routes<br/>[expenses.py]"]
  node_schemas["Request schemas<br/>[schemas.py]"]
end

subgraph group_domain["Expense domain"]
  node_user_operations["User operations<br/>[crud.py]"]
  node_expense_operations["Expense operations<br/>[crud.py]"]
  node_split_validation["Percentage check<br/>[utils.py]"]
end

subgraph group_persistence["Persistence"]
  node_orm_models["Relational models<br/>[models.py]"]
  node_db_sessions["DB sessions<br/>[database.py]"]
  node_mysql[("MySQL")]
end

node_client(("API client"))

node_client -->|"sends requests"| node_application
node_application -->|"dispatches users"| node_user_routes
node_application -->|"dispatches expenses"| node_expense_routes
node_application -->|"creates tables"| node_db_sessions
node_user_routes -->|"uses schemas"| node_schemas
node_expense_routes -->|"uses schemas"| node_schemas
node_user_routes -->|"calls"| node_user_operations
node_expense_routes -->|"calls"| node_expense_operations
node_user_routes -->|"opens sessions"| node_db_sessions
node_expense_routes -->|"opens sessions"| node_db_sessions
node_user_operations -->|"queries and creates"| node_orm_models
node_expense_operations -->|"queries and creates"| node_orm_models
node_db_sessions -->|"connects"| node_mysql

click node_application "https://github.com/mugil0095/daily-expenses-sharing-application-using-fastapi/blob/main/app/main.py"
click node_user_routes "https://github.com/mugil0095/daily-expenses-sharing-application-using-fastapi/blob/main/app/routers/users.py"
click node_expense_routes "https://github.com/mugil0095/daily-expenses-sharing-application-using-fastapi/blob/main/app/routers/expenses.py"
click node_schemas "https://github.com/mugil0095/daily-expenses-sharing-application-using-fastapi/blob/main/app/schemas.py"
click node_user_operations "https://github.com/mugil0095/daily-expenses-sharing-application-using-fastapi/blob/main/app/crud.py"
click node_expense_operations "https://github.com/mugil0095/daily-expenses-sharing-application-using-fastapi/blob/main/app/crud.py"
click node_split_validation "https://github.com/mugil0095/daily-expenses-sharing-application-using-fastapi/blob/main/app/utils.py"
click node_orm_models "https://github.com/mugil0095/daily-expenses-sharing-application-using-fastapi/blob/main/app/models.py"
click node_db_sessions "https://github.com/mugil0095/daily-expenses-sharing-application-using-fastapi/blob/main/app/database.py"

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_application,node_user_routes,node_expense_routes,node_schemas,node_client toneBlue
class node_user_operations,node_expense_operations,node_split_validation toneAmber
class node_orm_models,node_db_sessions,node_mysql toneMint
```

## Components

### API entry

- [FastAPI app](https://github.com/mugil0095/daily-expenses-sharing-application-using-fastapi/blob/main/app/main.py): `app/main.py`
- [User routes](https://github.com/mugil0095/daily-expenses-sharing-application-using-fastapi/blob/main/app/routers/users.py): `app/routers/users.py`
- [Expense routes](https://github.com/mugil0095/daily-expenses-sharing-application-using-fastapi/blob/main/app/routers/expenses.py): `app/routers/expenses.py`
- [Request schemas](https://github.com/mugil0095/daily-expenses-sharing-application-using-fastapi/blob/main/app/schemas.py): `app/schemas.py`

### Expense domain

- [User operations](https://github.com/mugil0095/daily-expenses-sharing-application-using-fastapi/blob/main/app/crud.py): `app/crud.py`
- [Expense operations](https://github.com/mugil0095/daily-expenses-sharing-application-using-fastapi/blob/main/app/crud.py): `app/crud.py`
- [Percentage check](https://github.com/mugil0095/daily-expenses-sharing-application-using-fastapi/blob/main/app/utils.py): `app/utils.py`

### Persistence

- [Relational models](https://github.com/mugil0095/daily-expenses-sharing-application-using-fastapi/blob/main/app/models.py): `app/models.py`
- [DB sessions](https://github.com/mugil0095/daily-expenses-sharing-application-using-fastapi/blob/main/app/database.py): `app/database.py`
- **MySQL**

### Other components

- **API client**

## Connections

- API client → FastAPI app: sends requests
- FastAPI app → User routes: dispatches users
- FastAPI app → Expense routes: dispatches expenses
- FastAPI app → DB sessions: creates tables
- User routes → Request schemas: uses schemas
- Expense routes → Request schemas: uses schemas
- User routes → User operations: calls
- Expense routes → Expense operations: calls
- User routes → DB sessions: opens sessions
- Expense routes → DB sessions: opens sessions
- User operations → Relational models: queries and creates
- Expense operations → Relational models: queries and creates
- DB sessions → MySQL: connects
