# gustavoviti/nexus architecture

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

- Interactive diagram: https://gitdiagram.com/gustavoviti/nexus
- Repository: https://github.com/gustavoviti/nexus

## Overview

Nexus is a browser-based personal-finance app. Users register or sign in, then manage accounts, transactions, categories, and budgets; the app displays financial summaries and supports statement import with category suggestions and data export. The UI and much of the domain workflow are concentrated in app.js, with Firestore access in db.js and authentication in auth.js. The README is empty, so capabilities and relationships here are based on the supplied source excerpts; unsampled app behavior is not inferred.

Main entry points: [`public/script/app.js`](https://github.com/gustavoviti/nexus/blob/main/public/script/app.js) (Finance workspace), [`public/script/db.js`](https://github.com/gustavoviti/nexus/blob/main/public/script/db.js) (Firestore data access), [`public/script/auth.js`](https://github.com/gustavoviti/nexus/blob/main/public/script/auth.js) (Authentication), [`public/script/firebase.js`](https://github.com/gustavoviti/nexus/blob/main/public/script/firebase.js) (Firebase setup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Account access"]
  node_login["Sign in<br/>[login.js]"]
  node_register["Registration<br/>[register.js]"]
  node_auth["Authentication<br/>[auth.js]"]
end

subgraph group_finance["Finance management"]
  node_workspace["Finance workspace<br/>[app.js]"]
  node_accounts["Accounts<br/>[app.js]"]
  node_transactions["Transactions<br/>[app.js]"]
  node_categories["Categories<br/>[app.js]"]
  node_budgets["Budgets and limits<br/>[app.js]"]
end

subgraph group_insights["Insights and exchange"]
  node_dashboard["Financial dashboard<br/>[app.js]"]
  node_exports["Data exports<br/>[app.js]"]
  node_statement["Statement import<br/>[import.js]"]
end

subgraph group_platform["Cloud platform"]
  node_firebase["Firebase setup<br/>[firebase.js]"]
  node_firestore["Firestore data access<br/>[db.js]"]
end

node_person(("User"))
node_firebase_services[("Firebase services")]
node_gemini["Gemini API"]

node_person -->|"signs in"| node_login
node_person -->|"creates account"| node_register
node_login -->|"calls login"| node_auth
node_register -->|"calls register"| node_auth
node_auth -->|"uses auth and db"| node_firebase
node_firebase -->|"initializes"| node_firebase_services
node_workspace -->|"calls logout"| node_auth
node_workspace -->|"loads categories"| node_firestore
node_workspace -->|"writes transactions"| node_firestore
node_workspace -->|"saves budgets"| node_firestore
node_workspace -->|"renders balances"| node_accounts
node_workspace -->|"computes summaries"| node_dashboard
node_workspace -->|"generates files"| node_exports
node_workspace -->|"requests suggestions"| node_statement
node_workspace -->|"loads and watches data"| node_firestore
node_firestore -->|"uses Firestore instance"| node_firebase
node_firestore -->|"reads and writes"| node_firebase_services
node_statement -->|"requests suggestions"| node_gemini

click node_login "https://github.com/gustavoviti/nexus/blob/main/public/script/login.js"
click node_register "https://github.com/gustavoviti/nexus/blob/main/public/script/register.js"
click node_auth "https://github.com/gustavoviti/nexus/blob/main/public/script/auth.js"
click node_workspace "https://github.com/gustavoviti/nexus/blob/main/public/script/app.js"
click node_accounts "https://github.com/gustavoviti/nexus/blob/main/public/script/app.js"
click node_transactions "https://github.com/gustavoviti/nexus/blob/main/public/script/app.js"
click node_categories "https://github.com/gustavoviti/nexus/blob/main/public/script/app.js"
click node_budgets "https://github.com/gustavoviti/nexus/blob/main/public/script/app.js"
click node_dashboard "https://github.com/gustavoviti/nexus/blob/main/public/script/app.js"
click node_exports "https://github.com/gustavoviti/nexus/blob/main/public/script/app.js"
click node_statement "https://github.com/gustavoviti/nexus/blob/main/public/script/import.js"
click node_firebase "https://github.com/gustavoviti/nexus/blob/main/public/script/firebase.js"
click node_firestore "https://github.com/gustavoviti/nexus/blob/main/public/script/db.js"

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_login,node_register,node_auth,node_person toneBlue
class node_workspace,node_accounts,node_transactions,node_categories,node_budgets,node_firebase_services toneAmber
class node_dashboard,node_exports,node_statement,node_gemini toneMint
class node_firebase,node_firestore toneRose
```

## Components

### Account access

- [Sign in](https://github.com/gustavoviti/nexus/blob/main/public/script/login.js): `public/script/login.js`
- [Registration](https://github.com/gustavoviti/nexus/blob/main/public/script/register.js): `public/script/register.js`
- [Authentication](https://github.com/gustavoviti/nexus/blob/main/public/script/auth.js): `public/script/auth.js`

### Finance management

- [Finance workspace](https://github.com/gustavoviti/nexus/blob/main/public/script/app.js): `public/script/app.js`
- [Accounts](https://github.com/gustavoviti/nexus/blob/main/public/script/app.js): `public/script/app.js`
- [Transactions](https://github.com/gustavoviti/nexus/blob/main/public/script/app.js): `public/script/app.js`
- [Categories](https://github.com/gustavoviti/nexus/blob/main/public/script/app.js): `public/script/app.js`
- [Budgets and limits](https://github.com/gustavoviti/nexus/blob/main/public/script/app.js): `public/script/app.js`

### Insights and exchange

- [Financial dashboard](https://github.com/gustavoviti/nexus/blob/main/public/script/app.js): `public/script/app.js`
- [Data exports](https://github.com/gustavoviti/nexus/blob/main/public/script/app.js): `public/script/app.js`
- [Statement import](https://github.com/gustavoviti/nexus/blob/main/public/script/import.js): `public/script/import.js`

### Cloud platform

- [Firebase setup](https://github.com/gustavoviti/nexus/blob/main/public/script/firebase.js): `public/script/firebase.js`
- [Firestore data access](https://github.com/gustavoviti/nexus/blob/main/public/script/db.js): `public/script/db.js`

### Other components

- **User**
- **Firebase services**
- **Gemini API**

## Connections

- User → Sign in: signs in (evidence: `public/script/login.js`)
- User → Registration: creates account (evidence: `public/script/register.js`)
- Sign in → Authentication: calls login (evidence: `public/script/login.js`)
- Registration → Authentication: calls register (evidence: `public/script/register.js`)
- Authentication → Firebase setup: uses auth and db (evidence: `public/script/auth.js`)
- Firebase setup → Firebase services: initializes (evidence: `public/script/firebase.js`)
- Finance workspace → Authentication: calls logout (evidence: `public/script/app.js`)
- Finance workspace → Firestore data access: loads categories (evidence: `public/script/app.js`)
- Finance workspace → Firestore data access: writes transactions (evidence: `public/script/app.js`)
- Finance workspace → Firestore data access: saves budgets (evidence: `public/script/app.js`)
- Finance workspace → Accounts: renders balances (evidence: `public/script/app.js`)
- Finance workspace → Financial dashboard: computes summaries (evidence: `public/script/app.js`)
- Finance workspace → Data exports: generates files (evidence: `public/script/app.js`)
- Finance workspace → Statement import: requests suggestions (evidence: `public/script/app.js`)
- Finance workspace → Firestore data access: loads and watches data (evidence: `public/script/app.js`)
- Firestore data access → Firebase setup: uses Firestore instance (evidence: `public/script/db.js`)
- Firestore data access → Firebase services: reads and writes (evidence: `public/script/db.js`)
- Statement import → Gemini API: requests suggestions (evidence: `public/script/import.js`)
