# wisdombusara/unfat architecture

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

- Interactive diagram: https://gitdiagram.com/wisdombusara/unfat
- Repository: https://github.com/wisdombusara/unfat

## Overview

Kaza is a Flutter fitness and wellness tracker backed by a self-hosted Dart Frog API. The main workflow is user activity in the app, through state and API services, to backend routes and persistent data; AI coaching and photo analysis are server-side capabilities. Connections reflect the README’s architecture and documented features, since no source excerpts were available to verify finer-grained calls.

Main entry points: [`lib/services/api_client.dart`](https://github.com/wisdombusara/unfat/blob/main/lib/services/api_client.dart) (API client), [`backend/lib/repositories`](https://github.com/wisdombusara/unfat/tree/main/backend/lib/repositories) (Data repositories), [`lib/screens`](https://github.com/wisdombusara/unfat/tree/main/lib/screens) (App screens), [`lib/providers`](https://github.com/wisdombusara/unfat/tree/main/lib/providers) (State providers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Flutter client"]
  node_screens["App screens"]
  node_providers["State providers"]
  node_api_service["API service<br/>[api_service.dart]"]
  node_api_client["API client<br/>[api_client.dart]"]
  node_token_storage[("Token storage<br/>[token_storage.dart]")]
  node_models["App models"]
end

subgraph group_api["Backend API"]
  node_auth_routes["Authentication routes"]
  node_fitness_routes["Tracking routes"]
  node_ai_routes["AI routes"]
  node_photo_routes["Photo routes"]
end

subgraph group_data["Data and storage"]
  node_repositories["Data repositories"]
  node_postgres[("PostgreSQL")]
  node_minio[("MinIO storage")]
end

subgraph group_ai["AI services"]
  node_ai_service["Claude service"]
  node_claude["Claude API"]
end

node_user(("Fitness user"))

node_user -->|"uses"| node_screens
node_screens -->|"updates state"| node_providers
node_providers -->|"requests data"| node_api_service
node_api_service -->|"sends requests"| node_api_client
node_api_client -->|"reads tokens"| node_token_storage
node_api_client -->|"authenticates"| node_auth_routes
node_api_client -->|"calls API"| node_fitness_routes
node_api_client -->|"calls API"| node_ai_routes
node_api_client -->|"calls API"| node_photo_routes
node_fitness_routes -->|"accesses data"| node_repositories
node_auth_routes -->|"accesses data"| node_repositories
node_repositories -->|"reads and writes"| node_postgres
node_photo_routes -->|"stores photos"| node_minio
node_ai_routes -->|"requests analysis"| node_ai_service
node_ai_service -->|"sends prompts"| node_claude

click node_screens "https://github.com/wisdombusara/unfat/tree/main/lib/screens"
click node_providers "https://github.com/wisdombusara/unfat/tree/main/lib/providers"
click node_api_service "https://github.com/wisdombusara/unfat/blob/main/lib/services/api_service.dart"
click node_api_client "https://github.com/wisdombusara/unfat/blob/main/lib/services/api_client.dart"
click node_token_storage "https://github.com/wisdombusara/unfat/blob/main/lib/services/token_storage.dart"
click node_models "https://github.com/wisdombusara/unfat/tree/main/lib/models"
click node_auth_routes "https://github.com/wisdombusara/unfat/tree/main/backend/routes/auth"
click node_fitness_routes "https://github.com/wisdombusara/unfat/tree/main/backend/routes"
click node_ai_routes "https://github.com/wisdombusara/unfat/tree/main/backend/routes/ai"
click node_repositories "https://github.com/wisdombusara/unfat/tree/main/backend/lib/repositories"
click node_photo_routes "https://github.com/wisdombusara/unfat/tree/main/backend/routes/photos"
click node_ai_service "https://github.com/wisdombusara/unfat/blob/main/backend/lib/ai/claude_service.dart"

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_screens,node_providers,node_api_service,node_api_client,node_token_storage,node_models,node_user toneBlue
class node_auth_routes,node_fitness_routes,node_ai_routes,node_photo_routes toneAmber
class node_repositories,node_postgres,node_minio toneMint
class node_ai_service,node_claude toneRose
```

## Components

### Flutter client

- [App screens](https://github.com/wisdombusara/unfat/tree/main/lib/screens): `lib/screens`
- [State providers](https://github.com/wisdombusara/unfat/tree/main/lib/providers): `lib/providers`
- [API service](https://github.com/wisdombusara/unfat/blob/main/lib/services/api_service.dart): `lib/services/api_service.dart`
- [API client](https://github.com/wisdombusara/unfat/blob/main/lib/services/api_client.dart): `lib/services/api_client.dart`
- [Token storage](https://github.com/wisdombusara/unfat/blob/main/lib/services/token_storage.dart): `lib/services/token_storage.dart`
- [App models](https://github.com/wisdombusara/unfat/tree/main/lib/models): `lib/models`

### Backend API

- [Authentication routes](https://github.com/wisdombusara/unfat/tree/main/backend/routes/auth): `backend/routes/auth`
- [Tracking routes](https://github.com/wisdombusara/unfat/tree/main/backend/routes): `backend/routes`
- [AI routes](https://github.com/wisdombusara/unfat/tree/main/backend/routes/ai): `backend/routes/ai`
- [Photo routes](https://github.com/wisdombusara/unfat/tree/main/backend/routes/photos): `backend/routes/photos`

### Data and storage

- [Data repositories](https://github.com/wisdombusara/unfat/tree/main/backend/lib/repositories): `backend/lib/repositories`
- **PostgreSQL**
- **MinIO storage**

### AI services

- [Claude service](https://github.com/wisdombusara/unfat/blob/main/backend/lib/ai/claude_service.dart): `backend/lib/ai/claude_service.dart`
- **Claude API**

### Other components

- **Fitness user**

## Connections

- Fitness user → App screens: uses
- App screens → State providers: updates state
- State providers → API service: requests data
- API service → API client: sends requests
- API client → Token storage: reads tokens
- API client → Authentication routes: authenticates
- API client → Tracking routes: calls API
- API client → AI routes: calls API
- API client → Photo routes: calls API
- Tracking routes → Data repositories: accesses data
- Authentication routes → Data repositories: accesses data
- Data repositories → PostgreSQL: reads and writes
- Photo routes → MinIO storage: stores photos
- AI routes → Claude service: requests analysis
- Claude service → Claude API: sends prompts
