# dhanunjaya23-02-2006/expense-track architecture

> Architecture diagram of the GitHub repository dhanunjaya23-02-2006/expense-track, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/dhanunjaya23-02-2006/expense-track
- Repository: https://github.com/dhanunjaya23-02-2006/expense-track

## Overview

TrackExpense is a browser-based expense tracker. A user enters or edits an expense in the form; the app keeps expense state in Home, saves changes to browser local storage, and displays expenses in a table with category filtering, amount sorting, totals, and a context menu for editing or deleting. The graph distinguishes app entry and page composition from form and table behavior. Source excerpts show the main component relationships and local-storage access; no README description or external service integration was provided.

Main entry points: [`src/components/Home.jsx`](https://github.com/dhanunjaya23-02-2006/expense-track/blob/main/src/components/Home.jsx) (Expense page), [`src/components/AddForm.jsx`](https://github.com/dhanunjaya23-02-2006/expense-track/blob/main/src/components/AddForm.jsx) (Expense form), [`src/components/ExpenseTable.jsx`](https://github.com/dhanunjaya23-02-2006/expense-track/blob/main/src/components/ExpenseTable.jsx) (Expense table), [`src/App.jsx`](https://github.com/dhanunjaya23-02-2006/expense-track/blob/main/src/App.jsx) (App shell)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App composition"]
  node_entry["React entry<br/>[main.jsx]"]
  node_app_component["App shell<br/>[App.jsx]"]
  node_home["Expense page<br/>[Home.jsx]"]
  node_header["Title header<br/>[Header.jsx]"]
end

subgraph group_expense["Expense management"]
  node_form["Expense form<br/>[AddForm.jsx]"]
  node_table["Expense table<br/>[ExpenseTable.jsx]"]
  node_context_menu["Context menu<br/>[ContextMenu.jsx]"]
end

subgraph group_controls["Form controls"]
  node_input["Input control<br/>[InputControl.jsx]"]
end

node_user(("User"))
node_browser_storage[("Local storage")]

node_entry -->|"renders"| node_app_component
node_app_component -->|"renders"| node_home
node_home -->|"renders"| node_header
node_home -->|"renders"| node_form
node_home -->|"renders"| node_table
node_home -->|"loads expenses"| node_browser_storage
node_form -->|"saves expenses"| node_browser_storage
node_form -->|"renders"| node_input
node_table -->|"renders"| node_context_menu
node_user -->|"enters expenses"| node_form
node_user -->|"filters and sorts"| node_table
node_user -->|"edits or deletes"| node_context_menu

click node_entry "https://github.com/dhanunjaya23-02-2006/expense-track/blob/main/src/main.jsx"
click node_app_component "https://github.com/dhanunjaya23-02-2006/expense-track/blob/main/src/App.jsx"
click node_home "https://github.com/dhanunjaya23-02-2006/expense-track/blob/main/src/components/Home.jsx"
click node_header "https://github.com/dhanunjaya23-02-2006/expense-track/blob/main/src/components/Header.jsx"
click node_form "https://github.com/dhanunjaya23-02-2006/expense-track/blob/main/src/components/AddForm.jsx"
click node_table "https://github.com/dhanunjaya23-02-2006/expense-track/blob/main/src/components/ExpenseTable.jsx"
click node_context_menu "https://github.com/dhanunjaya23-02-2006/expense-track/blob/main/src/components/ContextMenu.jsx"
click node_input "https://github.com/dhanunjaya23-02-2006/expense-track/blob/main/src/components/InputControl.jsx"

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_entry,node_app_component,node_home,node_header,node_user toneBlue
class node_form,node_table,node_context_menu,node_browser_storage toneAmber
class node_input toneMint
```

## Components

### App composition

- [React entry](https://github.com/dhanunjaya23-02-2006/expense-track/blob/main/src/main.jsx): `src/main.jsx`
- [App shell](https://github.com/dhanunjaya23-02-2006/expense-track/blob/main/src/App.jsx): `src/App.jsx`
- [Expense page](https://github.com/dhanunjaya23-02-2006/expense-track/blob/main/src/components/Home.jsx): `src/components/Home.jsx`
- [Title header](https://github.com/dhanunjaya23-02-2006/expense-track/blob/main/src/components/Header.jsx): `src/components/Header.jsx`

### Expense management

- [Expense form](https://github.com/dhanunjaya23-02-2006/expense-track/blob/main/src/components/AddForm.jsx): `src/components/AddForm.jsx`
- [Expense table](https://github.com/dhanunjaya23-02-2006/expense-track/blob/main/src/components/ExpenseTable.jsx): `src/components/ExpenseTable.jsx`
- [Context menu](https://github.com/dhanunjaya23-02-2006/expense-track/blob/main/src/components/ContextMenu.jsx): `src/components/ContextMenu.jsx`

### Form controls

- [Input control](https://github.com/dhanunjaya23-02-2006/expense-track/blob/main/src/components/InputControl.jsx): `src/components/InputControl.jsx`

### Other components

- **User**
- **Local storage**

## Connections

- React entry → App shell: renders (evidence: `src/main.jsx`)
- App shell → Expense page: renders (evidence: `src/App.jsx`)
- Expense page → Title header: renders (evidence: `src/components/Home.jsx`)
- Expense page → Expense form: renders (evidence: `src/components/Home.jsx`)
- Expense page → Expense table: renders (evidence: `src/components/Home.jsx`)
- Expense page → Local storage: loads expenses (evidence: `src/components/Home.jsx`)
- Expense form → Local storage: saves expenses (evidence: `src/components/AddForm.jsx`)
- Expense form → Input control: renders (evidence: `src/components/AddForm.jsx`)
- Expense table → Context menu: renders (evidence: `src/components/ExpenseTable.jsx`)
- User → Expense form: enters expenses (evidence: `src/components/AddForm.jsx`)
- User → Expense table: filters and sorts (evidence: `src/components/ExpenseTable.jsx`)
- User → Context menu: edits or deletes (evidence: `src/components/ContextMenu.jsx`)
