# loluwafemi/fintrack architecture

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

- Interactive diagram: https://gitdiagram.com/loluwafemi/fintrack
- Repository: https://github.com/loluwafemi/fintrack

## Overview

FinanceTracker is a personal and organization finance-tracking product, with a separate Admin mobile app. The main user workflow covers account access, recording or uploading spending, reviewing transactions and budgets, and generating reports; the Admin app supports oversight and account management. The README documents receipt scanning, exports, and weekly tracking, while the tree shows dedicated backend service routes and a FastAPI receipt-processing service. Client request excerpts establish calls to the SvelteKit API; unsampled screen-to-request wiring and any connection to FastAPI are not inferred.

Main entry points: [`app/figtrack/lib/server/server.tsx`](https://github.com/loluwafemi/fintrack/blob/deployable/app/figtrack/lib/server/server.tsx) (Figtrack API client), [`app/backends/sveltekit/src/lib/index.server.ts`](https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/lib/index.server.ts) (Request authenticator), [`app/Admin/lib/server/server.ts`](https://github.com/loluwafemi/fintrack/blob/deployable/app/Admin/lib/server/server.ts) (Admin API client), [`app/backends/sveltekit/src/routes/api/service/report_generator/+server.ts`](https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/routes/api/service/report_generator/%2Bserver.ts) (Report endpoint)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_clients["Mobile clients"]
  node_figtrack_app["Figtrack screens"]
  node_figtrack_client["Figtrack API client<br/>[server.tsx]"]
  node_admin_app["Admin screens"]
  node_admin_client["Admin API client<br/>[server.ts]"]
end

subgraph group_api["Application API"]
  node_auth_api["Authentication API"]
  node_secure_signup["Admin signup API<br/>[+server.ts]"]
  node_secure_api["Organization API<br/>[+server.ts]"]
  node_service_api["Service API"]
  node_budget_api["Budget operations<br/>[+server.ts]"]
  node_transaction_api["Transaction routes<br/>[+server.ts]"]
  node_upload_api["Receipt upload<br/>[+server.ts]"]
  node_scanner_api["Receipt scanner<br/>[+server.ts]"]
  node_report_api["Report endpoint<br/>[+server.ts]"]
end

subgraph group_domain["Finance services"]
  node_auth_guard["Request authenticator<br/>[index.server.ts]"]
  node_user_model["User operations<br/>[user.ts]"]
  node_admin_model["Admin operations<br/>[admin.ts]"]
  node_budget_model["Budget operations<br/>[budget.ts]"]
  node_transaction_model["Transaction operations<br/>[transaction.ts]"]
end

subgraph group_state["Persistence and processing"]
  node_report_processor["Report generation<br/>[processor.ts]"]
  node_db[("Application database<br/>[index.ts]")]
  node_receipt_backend["Receipt processing<br/>[main.py]"]
end

node_user(("Finance user"))
node_admin_user(("Admin user"))

node_user -->|"uses"| node_figtrack_app
node_figtrack_app -->|"requests"| node_figtrack_client
node_figtrack_client -->|"authenticates"| node_auth_api
node_figtrack_client -->|"manages budgets"| node_budget_api
node_figtrack_client -->|"requests records"| node_transaction_api
node_figtrack_client -->|"uploads receipts"| node_upload_api
node_figtrack_client -->|"requests scanning"| node_scanner_api
node_figtrack_client -->|"requests reports"| node_report_api
node_admin_user -->|"uses"| node_admin_app
node_admin_app -->|"requests"| node_admin_client
node_admin_client -->|"authenticates"| node_auth_api
node_admin_client -->|"requests organization data"| node_secure_api
node_admin_client -->|"registers admins"| node_secure_signup
node_auth_api -->|"checks sessions"| node_auth_guard
node_auth_api -->|"manages accounts"| node_user_model
node_secure_signup -->|"checks requests"| node_auth_guard
node_secure_signup -->|"creates admin"| node_user_model
node_secure_api -->|"checks requests"| node_auth_guard
node_secure_api -->|"loads organization accounts"| node_admin_model
node_budget_api -->|"checks requests"| node_auth_guard
node_budget_api -->|"updates budgets"| node_budget_model
node_transaction_api -->|"checks requests"| node_auth_guard
node_transaction_api -->|"handles transactions"| node_transaction_model
node_upload_api -->|"checks requests"| node_auth_guard
node_scanner_api -->|"checks requests"| node_auth_guard
node_report_api -->|"checks requests"| node_auth_guard
node_report_api -->|"loads budget data"| node_user_model
node_report_api -->|"generates report"| node_report_processor
node_user_model -->|"reads and writes"| node_db
node_admin_model -->|"reads and writes"| node_db
node_budget_model -->|"reads and writes"| node_db
node_transaction_model -->|"reads and writes"| node_db

click node_figtrack_app "https://github.com/loluwafemi/fintrack/tree/deployable/app/figtrack/app"
click node_figtrack_client "https://github.com/loluwafemi/fintrack/blob/deployable/app/figtrack/lib/server/server.tsx"
click node_admin_app "https://github.com/loluwafemi/fintrack/tree/deployable/app/Admin/app"
click node_admin_client "https://github.com/loluwafemi/fintrack/blob/deployable/app/Admin/lib/server/server.ts"
click node_auth_api "https://github.com/loluwafemi/fintrack/tree/deployable/app/backends/sveltekit/src/routes/api/auth"
click node_secure_signup "https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/routes/api/secure/signup/%2Bserver.ts"
click node_secure_api "https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/routes/api/secure/%2Bserver.ts"
click node_service_api "https://github.com/loluwafemi/fintrack/tree/deployable/app/backends/sveltekit/src/routes/api/service"
click node_auth_guard "https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/lib/index.server.ts"
click node_user_model "https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/lib/server/models/user.ts"
click node_admin_model "https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/lib/server/models/admin.ts"
click node_budget_api "https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/routes/api/secure/actions/managebudget/%2Bserver.ts"
click node_transaction_api "https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/routes/api/secure/transactions/%2Bserver.ts"
click node_upload_api "https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/routes/api/service/upload/%2Bserver.ts"
click node_scanner_api "https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/routes/api/service/scanner/%2Bserver.ts"
click node_report_api "https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/routes/api/service/report_generator/%2Bserver.ts"
click node_report_processor "https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/lib/gen/processor.ts"
click node_budget_model "https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/lib/server/models/budget.ts"
click node_transaction_model "https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/lib/server/models/transaction.ts"
click node_db "https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/lib/server/db/index.ts"
click node_receipt_backend "https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/fastapi/app/main.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_figtrack_app,node_figtrack_client,node_admin_app,node_admin_client,node_user,node_admin_user toneBlue
class node_auth_api,node_secure_signup,node_secure_api,node_service_api,node_budget_api,node_transaction_api,node_upload_api,node_scanner_api,node_report_api toneAmber
class node_auth_guard,node_user_model,node_admin_model,node_budget_model,node_transaction_model toneMint
class node_report_processor,node_db,node_receipt_backend toneRose
```

## Components

### Mobile clients

- [Figtrack screens](https://github.com/loluwafemi/fintrack/tree/deployable/app/figtrack/app): `app/figtrack/app`
- [Figtrack API client](https://github.com/loluwafemi/fintrack/blob/deployable/app/figtrack/lib/server/server.tsx): `app/figtrack/lib/server/server.tsx`
- [Admin screens](https://github.com/loluwafemi/fintrack/tree/deployable/app/Admin/app): `app/Admin/app`
- [Admin API client](https://github.com/loluwafemi/fintrack/blob/deployable/app/Admin/lib/server/server.ts): `app/Admin/lib/server/server.ts`

### Application API

- [Authentication API](https://github.com/loluwafemi/fintrack/tree/deployable/app/backends/sveltekit/src/routes/api/auth): `app/backends/sveltekit/src/routes/api/auth`
- [Admin signup API](https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/routes/api/secure/signup/%2Bserver.ts): `app/backends/sveltekit/src/routes/api/secure/signup/+server.ts`
- [Organization API](https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/routes/api/secure/%2Bserver.ts): `app/backends/sveltekit/src/routes/api/secure/+server.ts`
- [Service API](https://github.com/loluwafemi/fintrack/tree/deployable/app/backends/sveltekit/src/routes/api/service): `app/backends/sveltekit/src/routes/api/service`
- [Budget operations](https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/routes/api/secure/actions/managebudget/%2Bserver.ts): `app/backends/sveltekit/src/routes/api/secure/actions/managebudget/+server.ts`
- [Transaction routes](https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/routes/api/secure/transactions/%2Bserver.ts): `app/backends/sveltekit/src/routes/api/secure/transactions/+server.ts`
- [Receipt upload](https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/routes/api/service/upload/%2Bserver.ts): `app/backends/sveltekit/src/routes/api/service/upload/+server.ts`
- [Receipt scanner](https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/routes/api/service/scanner/%2Bserver.ts): `app/backends/sveltekit/src/routes/api/service/scanner/+server.ts`
- [Report endpoint](https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/routes/api/service/report_generator/%2Bserver.ts): `app/backends/sveltekit/src/routes/api/service/report_generator/+server.ts`

### Finance services

- [Request authenticator](https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/lib/index.server.ts): `app/backends/sveltekit/src/lib/index.server.ts`
- [User operations](https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/lib/server/models/user.ts): `app/backends/sveltekit/src/lib/server/models/user.ts`
- [Admin operations](https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/lib/server/models/admin.ts): `app/backends/sveltekit/src/lib/server/models/admin.ts`
- [Budget operations](https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/lib/server/models/budget.ts): `app/backends/sveltekit/src/lib/server/models/budget.ts`
- [Transaction operations](https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/lib/server/models/transaction.ts): `app/backends/sveltekit/src/lib/server/models/transaction.ts`

### Persistence and processing

- [Report generation](https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/lib/gen/processor.ts): `app/backends/sveltekit/src/lib/gen/processor.ts`
- [Application database](https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/sveltekit/src/lib/server/db/index.ts): `app/backends/sveltekit/src/lib/server/db/index.ts`
- [Receipt processing](https://github.com/loluwafemi/fintrack/blob/deployable/app/backends/fastapi/app/main.py): `app/backends/fastapi/app/main.py`

### Other components

- **Finance user**
- **Admin user**

## Connections

- Finance user → Figtrack screens: uses
- Figtrack screens → Figtrack API client: requests
- Figtrack API client → Authentication API: authenticates
- Figtrack API client → Budget operations: manages budgets
- Figtrack API client → Transaction routes: requests records
- Figtrack API client → Receipt upload: uploads receipts
- Figtrack API client → Receipt scanner: requests scanning
- Figtrack API client → Report endpoint: requests reports
- Admin user → Admin screens: uses
- Admin screens → Admin API client: requests
- Admin API client → Authentication API: authenticates
- Admin API client → Organization API: requests organization data
- Admin API client → Admin signup API: registers admins
- Authentication API → Request authenticator: checks sessions
- Authentication API → User operations: manages accounts
- Admin signup API → Request authenticator: checks requests
- Admin signup API → User operations: creates admin
- Organization API → Request authenticator: checks requests
- Organization API → Admin operations: loads organization accounts
- Budget operations → Request authenticator: checks requests
- Budget operations → Budget operations: updates budgets
- Transaction routes → Request authenticator: checks requests
- Transaction routes → Transaction operations: handles transactions
- Receipt upload → Request authenticator: checks requests
- Receipt scanner → Request authenticator: checks requests
- Report endpoint → Request authenticator: checks requests
- Report endpoint → User operations: loads budget data
- Report endpoint → Report generation: generates report
- User operations → Application database: reads and writes
- Admin operations → Application database: reads and writes
- Budget operations → Application database: reads and writes
- Transaction operations → Application database: reads and writes
