# sai-charan-2722/expenses_tracker architecture

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

- Interactive diagram: https://gitdiagram.com/sai-charan-2722/expenses_tracker
- Repository: https://github.com/sai-charan-2722/expenses_tracker

## Overview

SplitSmart is a browser-only expense-sharing application. Users create groups, manage members, record shared expenses, review calculated balances, and view minimized settlement suggestions; group and expense data persist in localStorage. The sampled source confirms routing, group-detail orchestration, balance calculations, and storage behavior. Several feature components are documented but their implementations were not sampled, so their internal wiring is shown only where the README or sampled orchestration supports it.

Main entry points: [`src/app/features/group-detail/group-detail/group-detail.component.ts`](https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/features/group-detail/group-detail/group-detail.component.ts) (Group detail), [`src/app/core/services/storage.service.ts`](https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/core/services/storage.service.ts) (Data access), [`src/app/app.component.ts`](https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/app.component.ts) (App component), [`src/app/app.routes.ts`](https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/app.routes.ts) (Route definitions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_application["Application shell"]
  node_root["App component<br/>[app.component.ts]"]
  node_routes["Route definitions<br/>[app.routes.ts]"]
end

subgraph group_group_workflows["Group workflows"]
  node_home["Group listing<br/>[home.component.ts]"]
  node_create_group["Create group"]
  node_group_detail["Group detail"]
  node_expenses_tab["Expense list"]
  node_balances_tab["Balance overview"]
  node_settle_tab["Settlement suggestions"]
  node_members_tab["Member management"]
end

subgraph group_shared_ui["Shared interactions"]
  node_add_expense["Add expense form"]
  node_add_member["Add member form"]
  node_confirm["Confirmation dialog"]
  node_nav["Navigation bar<br/>[nav.component.ts]"]
  node_snackbar["Toast notifications"]
end

subgraph group_core_services["Core services"]
  node_nav_state["Navigation state"]
  node_storage["Data access<br/>[storage.service.ts]"]
  node_balances["Balance engine<br/>[balance.service.ts]"]
  node_ui_utils["Display utilities"]
  node_snackbar_service["Snackbar service"]
end

node_user(("User"))
node_browser[("Browser localStorage")]

node_user -->|"uses"| node_root
node_root -->|"hosts routes"| node_routes
node_routes -->|"routes home"| node_home
node_routes -->|"routes group"| node_group_detail
node_root -->|"renders"| node_nav
node_root -->|"renders"| node_snackbar
node_nav -->|"emits actions"| node_nav_state
node_nav_state -->|"dispatches actions"| node_group_detail
node_home -->|"reads groups"| node_storage
node_home -->|"opens form"| node_create_group
node_create_group -->|"saves group"| node_storage
node_group_detail -->|"loads group data"| node_storage
node_group_detail -->|"requests calculations"| node_balances
node_group_detail -->|"formats display"| node_ui_utils
node_group_detail -->|"provides expense data"| node_expenses_tab
node_group_detail -->|"provides balances"| node_balances_tab
node_group_detail -->|"provides settlements"| node_settle_tab
node_group_detail -->|"provides members"| node_members_tab
node_group_detail -->|"opens form"| node_add_expense
node_group_detail -->|"opens form"| node_add_member
node_group_detail -->|"requests confirmation"| node_confirm
node_group_detail -->|"shows feedback"| node_snackbar_service
node_balances -->|"reads expenses"| node_storage
node_storage -->|"reads and writes"| node_browser
node_snackbar_service -->|"displays message"| node_snackbar

click node_root "https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/app.component.ts"
click node_routes "https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/app.routes.ts"
click node_home "https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/features/home/home/home.component.ts"
click node_create_group "https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/features/home/components/create-group-modal/create-group-modal.component.ts"
click node_group_detail "https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/features/group-detail/group-detail/group-detail.component.ts"
click node_expenses_tab "https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/features/group-detail/tabs/expenses-tab/expenses-tab.component.ts"
click node_balances_tab "https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/features/group-detail/tabs/balances-tab/balances-tab.component.ts"
click node_settle_tab "https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/features/group-detail/tabs/settle-tab/settle-tab.component.ts"
click node_members_tab "https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/features/group-detail/tabs/members-tab/members-tab.component.ts"
click node_add_expense "https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/shared/components/add-expense-modal/add-expense-modal.component.ts"
click node_add_member "https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/shared/components/add-member-modal/add-member-modal.component.ts"
click node_confirm "https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/shared/components/confirm-modal/confirm-modal.component.ts"
click node_nav "https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/shared/components/nav/nav.component.ts"
click node_snackbar "https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/shared/components/snackbar/snackbar.component.ts"
click node_nav_state "https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/core/services/nav-state.service.ts"
click node_storage "https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/core/services/storage.service.ts"
click node_balances "https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/core/services/balance.service.ts"
click node_ui_utils "https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/core/services/ui-utils.service.ts"
click node_snackbar_service "https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/shared/services/snackbar.service.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_root,node_routes,node_user toneBlue
class node_home,node_create_group,node_group_detail,node_expenses_tab,node_balances_tab,node_settle_tab,node_members_tab,node_browser toneAmber
class node_add_expense,node_add_member,node_confirm,node_nav,node_snackbar toneMint
class node_nav_state,node_storage,node_balances,node_ui_utils,node_snackbar_service toneRose
```

## Components

### Application shell

- [App component](https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/app.component.ts): `src/app/app.component.ts`
- [Route definitions](https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/app.routes.ts): `src/app/app.routes.ts`

### Group workflows

- [Group listing](https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/features/home/home/home.component.ts): `src/app/features/home/home/home.component.ts`
- [Create group](https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/features/home/components/create-group-modal/create-group-modal.component.ts): `src/app/features/home/components/create-group-modal/create-group-modal.component.ts`
- [Group detail](https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/features/group-detail/group-detail/group-detail.component.ts): `src/app/features/group-detail/group-detail/group-detail.component.ts`
- [Expense list](https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/features/group-detail/tabs/expenses-tab/expenses-tab.component.ts): `src/app/features/group-detail/tabs/expenses-tab/expenses-tab.component.ts`
- [Balance overview](https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/features/group-detail/tabs/balances-tab/balances-tab.component.ts): `src/app/features/group-detail/tabs/balances-tab/balances-tab.component.ts`
- [Settlement suggestions](https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/features/group-detail/tabs/settle-tab/settle-tab.component.ts): `src/app/features/group-detail/tabs/settle-tab/settle-tab.component.ts`
- [Member management](https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/features/group-detail/tabs/members-tab/members-tab.component.ts): `src/app/features/group-detail/tabs/members-tab/members-tab.component.ts`

### Shared interactions

- [Add expense form](https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/shared/components/add-expense-modal/add-expense-modal.component.ts): `src/app/shared/components/add-expense-modal/add-expense-modal.component.ts`
- [Add member form](https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/shared/components/add-member-modal/add-member-modal.component.ts): `src/app/shared/components/add-member-modal/add-member-modal.component.ts`
- [Confirmation dialog](https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/shared/components/confirm-modal/confirm-modal.component.ts): `src/app/shared/components/confirm-modal/confirm-modal.component.ts`
- [Navigation bar](https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/shared/components/nav/nav.component.ts): `src/app/shared/components/nav/nav.component.ts`
- [Toast notifications](https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/shared/components/snackbar/snackbar.component.ts): `src/app/shared/components/snackbar/snackbar.component.ts`

### Core services

- [Navigation state](https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/core/services/nav-state.service.ts): `src/app/core/services/nav-state.service.ts`
- [Data access](https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/core/services/storage.service.ts): `src/app/core/services/storage.service.ts`
- [Balance engine](https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/core/services/balance.service.ts): `src/app/core/services/balance.service.ts`
- [Display utilities](https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/core/services/ui-utils.service.ts): `src/app/core/services/ui-utils.service.ts`
- [Snackbar service](https://github.com/sai-charan-2722/expenses_tracker/blob/main/src/app/shared/services/snackbar.service.ts): `src/app/shared/services/snackbar.service.ts`

### Other components

- **User**
- **Browser localStorage**

## Connections

- User → App component: uses
- App component → Route definitions: hosts routes
- Route definitions → Group listing: routes home
- Route definitions → Group detail: routes group
- App component → Navigation bar: renders
- App component → Toast notifications: renders
- Navigation bar → Navigation state: emits actions
- Navigation state → Group detail: dispatches actions
- Group listing → Data access: reads groups
- Group listing → Create group: opens form
- Create group → Data access: saves group
- Group detail → Data access: loads group data
- Group detail → Balance engine: requests calculations
- Group detail → Display utilities: formats display
- Group detail → Expense list: provides expense data
- Group detail → Balance overview: provides balances
- Group detail → Settlement suggestions: provides settlements
- Group detail → Member management: provides members
- Group detail → Add expense form: opens form
- Group detail → Add member form: opens form
- Group detail → Confirmation dialog: requests confirmation
- Group detail → Snackbar service: shows feedback
- Balance engine → Data access: reads expenses
- Data access → Browser localStorage: reads and writes
- Snackbar service → Toast notifications: displays message
