# railgun42/budgetracker architecture

> Architecture diagram of the GitHub repository railgun42/budgetracker, 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/railgun42/budgetracker
- Repository: https://github.com/railgun42/budgetracker

## Overview

This repository is currently an Angular application shell plus financial-domain model classes; no user-facing workflow or README capabilities are documented. At runtime, the browser entry point bootstraps the root component and its configuration, which provides an empty router. The models describe users, accounts, transactions, categorization, attachments, and recurrence, but sampled source shows no services, persistence, or UI that connects them. Model links below reflect declared type references, not a demonstrated runtime workflow.

Main entry points: [`apps/web/src/app/models/transaction.ts`](https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/models/transaction.ts) (Transaction), [`apps/web/src/app/models/transactionTemplate.ts`](https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/models/transactionTemplate.ts) (Transaction template), [`apps/web/src/app/models/recurrence.ts`](https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/models/recurrence.ts) (Recurrence), [`apps/web/src/main.ts`](https://github.com/railgun42/budgetracker/blob/main/apps/web/src/main.ts) (Bootstrap)

## Diagram (Mermaid)

```mermaid
flowchart TD

node_browser(("Browser"))
node_entry["Bootstrap<br/>[main.ts]"]
node_config["App config<br/>[app.config.ts]"]
node_routes["Routes<br/>[app.routes.ts]"]
node_root["Root component<br/>[app.ts]"]
node_user["User<br/>[user.ts]"]
node_account["Account<br/>[account.ts]"]
node_transaction["Transaction<br/>[transaction.ts]"]
node_template["Transaction template"]
node_recurrence["Recurrence<br/>[recurrence.ts]"]
node_category["Category<br/>[category.ts]"]
node_tag["Tag<br/>[tag.ts]"]
node_attachment["Attachment<br/>[attachment.ts]"]
node_transactiontype["Transaction type<br/>[typeTransaction.ts]"]
node_intervalunit["Interval unit<br/>[intervalUnit.ts]"]

node_browser -->|"starts app"| node_entry
node_entry -->|"bootstraps"| node_root
node_entry -->|"uses config"| node_config
node_config -->|"provides routes"| node_routes
node_root -->|"renders outlet"| node_routes
node_user -->|"has accounts"| node_account
node_account -->|"has history"| node_transaction
node_account -->|"has recurrences"| node_recurrence
node_recurrence -->|"uses template"| node_template
node_recurrence -->|"tracks generated"| node_transaction
node_recurrence -->|"uses unit"| node_intervalunit
node_transaction -->|"references"| node_category
node_transaction -->|"has tags"| node_tag
node_transaction -->|"has attachments"| node_attachment
node_transaction -->|"uses type"| node_transactiontype
node_template -->|"references"| node_category
node_template -->|"has tags"| node_tag
node_template -->|"uses type"| node_transactiontype

click node_entry "https://github.com/railgun42/budgetracker/blob/main/apps/web/src/main.ts"
click node_config "https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/app.config.ts"
click node_routes "https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/app.routes.ts"
click node_root "https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/app.ts"
click node_user "https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/models/user.ts"
click node_account "https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/models/account.ts"
click node_transaction "https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/models/transaction.ts"
click node_template "https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/models/transactionTemplate.ts"
click node_recurrence "https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/models/recurrence.ts"
click node_category "https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/models/category.ts"
click node_tag "https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/models/tag.ts"
click node_attachment "https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/models/attachment.ts"
click node_transactiontype "https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/enums/typeTransaction.ts"
click node_intervalunit "https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/enums/intervalUnit.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_browser,node_user toneBlue
class node_entry,node_config,node_root,node_account,node_transaction,node_template,node_recurrence,node_category,node_tag,node_attachment,node_transactiontype,node_intervalunit toneTeal
class node_routes toneMint
```

## Components

### Other components

- **Browser**
- [Bootstrap](https://github.com/railgun42/budgetracker/blob/main/apps/web/src/main.ts): `apps/web/src/main.ts`
- [App config](https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/app.config.ts): `apps/web/src/app/app.config.ts`
- [Routes](https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/app.routes.ts): `apps/web/src/app/app.routes.ts`
- [Root component](https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/app.ts): `apps/web/src/app/app.ts`
- [User](https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/models/user.ts): `apps/web/src/app/models/user.ts`
- [Account](https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/models/account.ts): `apps/web/src/app/models/account.ts`
- [Transaction](https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/models/transaction.ts): `apps/web/src/app/models/transaction.ts`
- [Transaction template](https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/models/transactionTemplate.ts): `apps/web/src/app/models/transactionTemplate.ts`
- [Recurrence](https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/models/recurrence.ts): `apps/web/src/app/models/recurrence.ts`
- [Category](https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/models/category.ts): `apps/web/src/app/models/category.ts`
- [Tag](https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/models/tag.ts): `apps/web/src/app/models/tag.ts`
- [Attachment](https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/models/attachment.ts): `apps/web/src/app/models/attachment.ts`
- [Transaction type](https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/enums/typeTransaction.ts): `apps/web/src/app/enums/typeTransaction.ts`
- [Interval unit](https://github.com/railgun42/budgetracker/blob/main/apps/web/src/app/enums/intervalUnit.ts): `apps/web/src/app/enums/intervalUnit.ts`

## Connections

- Browser → Bootstrap: starts app
- Bootstrap → Root component: bootstraps
- Bootstrap → App config: uses config
- App config → Routes: provides routes
- Root component → Routes: renders outlet
- User → Account: has accounts
- Account → Transaction: has history
- Account → Recurrence: has recurrences
- Recurrence → Transaction template: uses template
- Recurrence → Transaction: tracks generated
- Recurrence → Interval unit: uses unit
- Transaction → Category: references
- Transaction → Tag: has tags
- Transaction → Attachment: has attachments
- Transaction → Transaction type: uses type
- Transaction template → Category: references
- Transaction template → Tag: has tags
- Transaction template → Transaction type: uses type
