# josefranciscocruzcorro/near-hackaton architecture

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

- Interactive diagram: https://gitdiagram.com/josefranciscocruzcorro/near-hackaton
- Repository: https://github.com/josefranciscocruzcorro/near-hackaton

## Overview

Tesorero is a multi-tenant AI treasury application: users import bills, run an agent that proposes payments, apply deterministic policy checks, route exceptions to human approvers, and settle authorized payments across chains through NEAR Intents. The frontend reaches the .NET API; application services coordinate domain decisions, persistence, and external integrations. Treasury setup, funding, monitoring, audit/export, and signup are additional product paths. Some relationships below are documented in the README rather than verified in unsampled implementation files.

Main entry points: [`backend/src/Tesorero.Api/Endpoints/Endpoints.cs`](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Api/Endpoints/Endpoints.cs) (HTTP endpoints), [`frontend/src/router.tsx`](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/frontend/src/router.tsx) (Product routes), [`backend/src/Tesorero.Application/Services/AgentService.cs`](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Application/Services/AgentService.cs) (Agent planning), [`frontend/src/api/queries.ts`](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/frontend/src/api/queries.ts) (API queries)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experience"]
  node_web["Web application<br/>[App.tsx]"]
  node_routes["Product routes<br/>[router.tsx]"]
  node_bill_ui["Bill intake<br/>[Bills.tsx]"]
  node_agent_ui["Agent and approvals<br/>[Agent.tsx]"]
  node_treasury_ui["Treasury console<br/>[Treasury.tsx]"]
  node_payees_ui["Payee management<br/>[Payees.tsx]"]
  node_client["API client<br/>[client.ts]"]
  node_queries["API queries<br/>[queries.ts]"]
  node_auth["Session and roles<br/>[AuthContext.tsx]"]
end

subgraph group_api["API and application"]
  node_api_host["HTTP endpoints<br/>[Endpoints.cs]"]
  node_signup["Tenant signup<br/>[SignupService.cs]"]
  node_agent["Agent planning<br/>[AgentService.cs]"]
  node_payments["Payment workflow<br/>[PaymentService.cs]"]
  node_dashboard["Dashboard data"]
  node_vault["Treasury operations"]
  node_contracts["Application interfaces<br/>[Abstractions.cs]"]
  node_jobs["Scheduled jobs<br/>[Jobs.cs]"]
end

subgraph group_guardrails["Policy and identity"]
  node_policy["Policy engine<br/>[PolicyEngine.cs]"]
  node_invoice_security["Invoice security"]
end

subgraph group_integrations["Chain integrations"]
  node_llm["DeepSeek model<br/>[DeepSeekClient.cs]"]
  node_intents["NEAR Intents API"]
  node_near_rpc["NEAR RPC"]
  node_chain_client["Treasury chain client"]
  node_treasury_contract["Treasury contract<br/>[lib.rs]"]
end

subgraph group_state["Tenant data"]
  node_database[("Tenant database<br/>[AppDbContext.cs]")]
end

node_user(("Business user"))
node_auditor(("Auditor"))

node_user -->|"uses"| node_web
node_web -->|"renders"| node_routes
node_routes -->|"routes to"| node_bill_ui
node_routes -->|"routes to"| node_agent_ui
node_routes -->|"routes to"| node_treasury_ui
node_routes -->|"routes to"| node_payees_ui
node_bill_ui -->|"requests data"| node_queries
node_agent_ui -->|"requests data"| node_queries
node_treasury_ui -->|"requests data"| node_queries
node_payees_ui -->|"requests data"| node_queries
node_queries -->|"calls"| node_client
node_auth -->|"configures auth"| node_client
node_client -->|"HTTP requests"| node_api_host
node_api_host -->|"calls"| node_signup
node_api_host -->|"calls"| node_dashboard
node_api_host -->|"calls"| node_agent
node_api_host -->|"calls"| node_payments
node_agent -->|"evaluates proposals"| node_policy
node_agent -->|"requests plans"| node_llm
node_agent -->|"flags invoices"| node_invoice_security
node_payments -->|"quotes and tracks"| node_intents
node_payments -->|"submits payments"| node_chain_client
node_vault -->|"converts deposits"| node_intents
node_vault -->|"checks accounts"| node_near_rpc
node_vault -->|"manages treasury"| node_chain_client
node_chain_client -->|"calls contract"| node_treasury_contract
node_dashboard -->|"reads tenant data"| node_database
node_api_host -.->|"persists records"| node_database
node_jobs -.->|"runs scheduled"| node_agent
node_jobs -.->|"tracks settlement"| node_payments
node_auditor -->|"reviews and exports"| node_web

click node_web "https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/frontend/src/App.tsx"
click node_routes "https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/frontend/src/router.tsx"
click node_bill_ui "https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/frontend/src/pages/Bills.tsx"
click node_agent_ui "https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/frontend/src/pages/Agent.tsx"
click node_treasury_ui "https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/frontend/src/pages/Treasury.tsx"
click node_payees_ui "https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/frontend/src/pages/Payees.tsx"
click node_client "https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/frontend/src/api/client.ts"
click node_queries "https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/frontend/src/api/queries.ts"
click node_auth "https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/frontend/src/auth/AuthContext.tsx"
click node_api_host "https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Api/Endpoints/Endpoints.cs"
click node_signup "https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Application/Services/SignupService.cs"
click node_agent "https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Application/Services/AgentService.cs"
click node_payments "https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Application/Services/PaymentService.cs"
click node_dashboard "https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Application/Services/DashboardService.cs"
click node_vault "https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Application/Services/TreasuryVaultServices.cs"
click node_policy "https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Domain/Policies/PolicyEngine.cs"
click node_invoice_security "https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Domain/Security/InjectionDetector.cs"
click node_contracts "https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Application/Abstractions/Abstractions.cs"
click node_database "https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Infrastructure/Persistence/AppDbContext.cs"
click node_llm "https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Infrastructure/External/DeepSeekClient.cs"
click node_intents "https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Infrastructure/External/OneClickIntentsClient.cs"
click node_near_rpc "https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Infrastructure/Near/NearAccountsClient.cs"
click node_chain_client "https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Infrastructure/Near/TreasuryChainClient.cs"
click node_treasury_contract "https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/contracts/treasury/src/lib.rs"
click node_jobs "https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Infrastructure/Jobs/Jobs.cs"

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_web,node_routes,node_bill_ui,node_agent_ui,node_treasury_ui,node_payees_ui,node_client,node_queries,node_auth,node_user toneBlue
class node_api_host,node_signup,node_agent,node_payments,node_dashboard,node_vault,node_contracts,node_jobs toneAmber
class node_policy,node_invoice_security toneMint
class node_llm,node_intents,node_near_rpc,node_chain_client,node_treasury_contract toneRose
class node_database,node_auditor toneIndigo
```

## Components

### User experience

- [Web application](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Product routes](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/frontend/src/router.tsx): `frontend/src/router.tsx`
- [Bill intake](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/frontend/src/pages/Bills.tsx): `frontend/src/pages/Bills.tsx`
- [Agent and approvals](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/frontend/src/pages/Agent.tsx): `frontend/src/pages/Agent.tsx`
- [Treasury console](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/frontend/src/pages/Treasury.tsx): `frontend/src/pages/Treasury.tsx`
- [Payee management](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/frontend/src/pages/Payees.tsx): `frontend/src/pages/Payees.tsx`
- [API client](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/frontend/src/api/client.ts): `frontend/src/api/client.ts`
- [API queries](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/frontend/src/api/queries.ts): `frontend/src/api/queries.ts`
- [Session and roles](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/frontend/src/auth/AuthContext.tsx): `frontend/src/auth/AuthContext.tsx`

### API and application

- [HTTP endpoints](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Api/Endpoints/Endpoints.cs): `backend/src/Tesorero.Api/Endpoints/Endpoints.cs`
- [Tenant signup](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Application/Services/SignupService.cs): `backend/src/Tesorero.Application/Services/SignupService.cs`
- [Agent planning](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Application/Services/AgentService.cs): `backend/src/Tesorero.Application/Services/AgentService.cs`
- [Payment workflow](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Application/Services/PaymentService.cs): `backend/src/Tesorero.Application/Services/PaymentService.cs`
- [Dashboard data](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Application/Services/DashboardService.cs): `backend/src/Tesorero.Application/Services/DashboardService.cs`
- [Treasury operations](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Application/Services/TreasuryVaultServices.cs): `backend/src/Tesorero.Application/Services/TreasuryVaultServices.cs`
- [Application interfaces](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Application/Abstractions/Abstractions.cs): `backend/src/Tesorero.Application/Abstractions/Abstractions.cs`
- [Scheduled jobs](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Infrastructure/Jobs/Jobs.cs): `backend/src/Tesorero.Infrastructure/Jobs/Jobs.cs`

### Policy and identity

- [Policy engine](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Domain/Policies/PolicyEngine.cs): `backend/src/Tesorero.Domain/Policies/PolicyEngine.cs`
- [Invoice security](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Domain/Security/InjectionDetector.cs): `backend/src/Tesorero.Domain/Security/InjectionDetector.cs`

### Chain integrations

- [DeepSeek model](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Infrastructure/External/DeepSeekClient.cs): `backend/src/Tesorero.Infrastructure/External/DeepSeekClient.cs`
- [NEAR Intents API](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Infrastructure/External/OneClickIntentsClient.cs): `backend/src/Tesorero.Infrastructure/External/OneClickIntentsClient.cs`
- [NEAR RPC](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Infrastructure/Near/NearAccountsClient.cs): `backend/src/Tesorero.Infrastructure/Near/NearAccountsClient.cs`
- [Treasury chain client](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Infrastructure/Near/TreasuryChainClient.cs): `backend/src/Tesorero.Infrastructure/Near/TreasuryChainClient.cs`
- [Treasury contract](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/contracts/treasury/src/lib.rs): `contracts/treasury/src/lib.rs`

### Tenant data

- [Tenant database](https://github.com/josefranciscocruzcorro/near-hackaton/blob/main/backend/src/Tesorero.Infrastructure/Persistence/AppDbContext.cs): `backend/src/Tesorero.Infrastructure/Persistence/AppDbContext.cs`

### Other components

- **Business user**
- **Auditor**

## Connections

- Business user → Web application: uses (evidence: `README.md`)
- Web application → Product routes: renders (evidence: `frontend/src/App.tsx`)
- Product routes → Bill intake: routes to (evidence: `frontend/src/router.tsx`)
- Product routes → Agent and approvals: routes to (evidence: `frontend/src/router.tsx`)
- Product routes → Treasury console: routes to (evidence: `frontend/src/router.tsx`)
- Product routes → Payee management: routes to (evidence: `frontend/src/router.tsx`)
- Bill intake → API queries: requests data (evidence: `README.md`)
- Agent and approvals → API queries: requests data (evidence: `README.md`)
- Treasury console → API queries: requests data (evidence: `README.md`)
- Payee management → API queries: requests data (evidence: `README.md`)
- API queries → API client: calls (evidence: `frontend/src/api/queries.ts`)
- Session and roles → API client: configures auth (evidence: `frontend/src/auth/AuthContext.tsx`)
- API client → HTTP endpoints: HTTP requests (evidence: `README.md`)
- HTTP endpoints → Tenant signup: calls (evidence: `backend/src/Tesorero.Api/Endpoints/Endpoints.cs`)
- HTTP endpoints → Dashboard data: calls (evidence: `backend/src/Tesorero.Api/Endpoints/Endpoints.cs`)
- HTTP endpoints → Agent planning: calls (evidence: `backend/src/Tesorero.Api/Endpoints/Endpoints.cs`)
- HTTP endpoints → Payment workflow: calls (evidence: `backend/src/Tesorero.Api/Endpoints/Endpoints.cs`)
- Agent planning → Policy engine: evaluates proposals (evidence: `backend/src/Tesorero.Application/Services/AgentService.cs`)
- Agent planning → DeepSeek model: requests plans (evidence: `README.md`)
- Agent planning → Invoice security: flags invoices (evidence: `README.md`)
- Payment workflow → NEAR Intents API: quotes and tracks (evidence: `README.md`)
- Payment workflow → Treasury chain client: submits payments (evidence: `README.md`)
- Treasury operations → NEAR Intents API: converts deposits (evidence: `README.md`)
- Treasury operations → NEAR RPC: checks accounts (evidence: `README.md`)
- Treasury operations → Treasury chain client: manages treasury (evidence: `README.md`)
- Treasury chain client → Treasury contract: calls contract (evidence: `README.md`)
- Dashboard data → Tenant database: reads tenant data (evidence: `backend/src/Tesorero.Application/Services/DashboardService.cs`)
- HTTP endpoints → Tenant database: persists records
- Scheduled jobs → Agent planning: runs scheduled (evidence: `README.md`)
- Scheduled jobs → Payment workflow: tracks settlement (evidence: `README.md`)
- Auditor → Web application: reviews and exports (evidence: `README.md`)
