# vitoryoshii/conecta-comunidade architecture

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

- Interactive diagram: https://gitdiagram.com/vitoryoshii/conecta-comunidade
- Repository: https://github.com/vitoryoshii/conecta-comunidade

## Overview

Conecta Comunidade is a community-help platform: residents and institutions browse or publish requests and offers, coordinate through chat and scheduled deliveries, and discover nearby help. The Flet mobile/PWA app calls a FastAPI JSON API, whose domain routes use SQLModel-backed persistence. The graph preserves the documented map, favorites, NGO, locality, and profile capabilities. API-to-database and client-to-API links are documented; unsampled router internals are not inferred beyond the visible registrations and references.

Main entry points: [`backend/main.py`](https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/main.py) (API entry), [`backend/deps.py`](https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/deps.py) (Session and auth dependencies), [`backend/routers/solicitacoes.py`](https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/routers/solicitacoes.py) (Help requests), [`mobile/main.py`](https://github.com/vitoryoshii/conecta-comunidade/blob/main/mobile/main.py) (Flet application)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Flet client"]
  node_mobile_app["Flet application<br/>[main.py]"]
  node_api_client["HTTP API client<br/>[api_client.py]"]
  node_views["Feature views"]
  node_map_view["Map view<br/>[mapa.py]"]
  node_client_state["App state<br/>[state.py]"]
end

subgraph group_api["FastAPI API"]
  node_api_entry["API entry<br/>[main.py]"]
  node_auth_routes["Authentication routes<br/>[auth.py]"]
end

subgraph group_domain["Community features"]
  node_request_routes["Help requests<br/>[solicitacoes.py]"]
  node_offer_routes["Help offers<br/>[ofertas.py]"]
  node_message_routes["Chat messages<br/>[mensagens.py]"]
  node_delivery_routes["Scheduled deliveries<br/>[entregas.py]"]
  node_map_routes["Map data<br/>[mapa.py]"]
  node_favorite_routes["Favorites<br/>[favoritos.py]"]
  node_ngo_routes["NGO directory<br/>[ongs.py]"]
  node_user_routes["Profiles and impact<br/>[usuarios.py]"]
  node_locality_routes["Localities<br/>[localidades.py]"]
  node_category_routes["Categories<br/>[categorias.py]"]
end

subgraph group_foundation["Shared foundations"]
  node_schemas["Request and response schemas"]
  node_auth_service["JWT and password security<br/>[auth_service.py]"]
  node_personal_data["Personal-data rules"]
  node_geo_service["Geolocation<br/>[geo_service.py]"]
  node_presentation["Presentation formatting<br/>[apresentacao.py]"]
  node_dependencies["Session and auth dependencies<br/>[deps.py]"]
  node_models["Domain models"]
  node_database[("SQLModel persistence<br/>[database.py]")]
end

node_residents(("Residents"))
node_sql_store[("PostgreSQL / SQLite")]

node_residents -->|"use"| node_mobile_app
node_mobile_app -->|"renders"| node_views
node_mobile_app -->|"creates"| node_api_client
node_mobile_app -->|"maintains"| node_client_state
node_views -.->|"request data"| node_api_client
node_map_view -.->|"request map data"| node_api_client
node_api_client -->|"HTTP JSON"| node_api_entry
node_api_entry -->|"registers"| node_auth_routes
node_api_entry -->|"registers"| node_request_routes
node_api_entry -->|"registers"| node_offer_routes
node_api_entry -->|"registers"| node_message_routes
node_api_entry -->|"registers"| node_delivery_routes
node_api_entry -->|"registers"| node_map_routes
node_api_entry -->|"registers"| node_favorite_routes
node_api_entry -->|"registers"| node_ngo_routes
node_api_entry -->|"registers"| node_user_routes
node_api_entry -->|"registers"| node_locality_routes
node_api_entry -->|"registers"| node_category_routes
node_auth_routes -->|"uses"| node_auth_service
node_auth_routes -->|"validates data"| node_personal_data
node_auth_routes -->|"uses"| node_dependencies
node_message_routes -->|"uses"| node_dependencies
node_message_routes -->|"formats"| node_presentation
node_request_routes -->|"uses"| node_dependencies
node_request_routes -->|"uses"| node_geo_service
node_request_routes -->|"formats"| node_presentation
node_user_routes -->|"uses"| node_dependencies
node_user_routes -->|"uses"| node_auth_service
node_user_routes -->|"uses"| node_personal_data
node_schemas -->|"shares enums"| node_models
node_dependencies -->|"decodes token"| node_auth_service
node_dependencies -->|"gets session"| node_database
node_dependencies -->|"loads user"| node_models
node_database -->|"connects"| node_sql_store
node_request_routes -->|"uses entities"| node_models
node_message_routes -->|"uses entities"| node_models

click node_mobile_app "https://github.com/vitoryoshii/conecta-comunidade/blob/main/mobile/main.py"
click node_api_client "https://github.com/vitoryoshii/conecta-comunidade/blob/main/mobile/api_client.py"
click node_views "https://github.com/vitoryoshii/conecta-comunidade/tree/main/mobile/views"
click node_map_view "https://github.com/vitoryoshii/conecta-comunidade/blob/main/mobile/views/mapa.py"
click node_client_state "https://github.com/vitoryoshii/conecta-comunidade/blob/main/mobile/state.py"
click node_api_entry "https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/main.py"
click node_auth_routes "https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/routers/auth.py"
click node_request_routes "https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/routers/solicitacoes.py"
click node_offer_routes "https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/routers/ofertas.py"
click node_message_routes "https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/routers/mensagens.py"
click node_delivery_routes "https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/routers/entregas.py"
click node_map_routes "https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/routers/mapa.py"
click node_favorite_routes "https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/routers/favoritos.py"
click node_ngo_routes "https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/routers/ongs.py"
click node_user_routes "https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/routers/usuarios.py"
click node_locality_routes "https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/routers/localidades.py"
click node_category_routes "https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/routers/categorias.py"
click node_schemas "https://github.com/vitoryoshii/conecta-comunidade/tree/main/backend/schemas"
click node_auth_service "https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/services/auth_service.py"
click node_personal_data "https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/services/dados_pessoais_service.py"
click node_geo_service "https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/services/geo_service.py"
click node_presentation "https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/services/apresentacao.py"
click node_dependencies "https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/deps.py"
click node_models "https://github.com/vitoryoshii/conecta-comunidade/tree/main/backend/models"
click node_database "https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/database.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_mobile_app,node_api_client,node_views,node_map_view,node_client_state toneBlue
class node_api_entry,node_auth_routes,node_sql_store toneAmber
class node_request_routes,node_offer_routes,node_message_routes,node_delivery_routes,node_map_routes,node_favorite_routes,node_ngo_routes,node_user_routes,node_locality_routes,node_category_routes toneMint
class node_schemas,node_auth_service,node_personal_data,node_geo_service,node_presentation,node_dependencies,node_models,node_database toneRose
class node_residents toneIndigo
```

## Components

### Flet client

- [Flet application](https://github.com/vitoryoshii/conecta-comunidade/blob/main/mobile/main.py): `mobile/main.py`
- [HTTP API client](https://github.com/vitoryoshii/conecta-comunidade/blob/main/mobile/api_client.py): `mobile/api_client.py`
- [Feature views](https://github.com/vitoryoshii/conecta-comunidade/tree/main/mobile/views): `mobile/views`
- [Map view](https://github.com/vitoryoshii/conecta-comunidade/blob/main/mobile/views/mapa.py): `mobile/views/mapa.py`
- [App state](https://github.com/vitoryoshii/conecta-comunidade/blob/main/mobile/state.py): `mobile/state.py`

### FastAPI API

- [API entry](https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/main.py): `backend/main.py`
- [Authentication routes](https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/routers/auth.py): `backend/routers/auth.py`

### Community features

- [Help requests](https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/routers/solicitacoes.py): `backend/routers/solicitacoes.py`
- [Help offers](https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/routers/ofertas.py): `backend/routers/ofertas.py`
- [Chat messages](https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/routers/mensagens.py): `backend/routers/mensagens.py`
- [Scheduled deliveries](https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/routers/entregas.py): `backend/routers/entregas.py`
- [Map data](https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/routers/mapa.py): `backend/routers/mapa.py`
- [Favorites](https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/routers/favoritos.py): `backend/routers/favoritos.py`
- [NGO directory](https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/routers/ongs.py): `backend/routers/ongs.py`
- [Profiles and impact](https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/routers/usuarios.py): `backend/routers/usuarios.py`
- [Localities](https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/routers/localidades.py): `backend/routers/localidades.py`
- [Categories](https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/routers/categorias.py): `backend/routers/categorias.py`

### Shared foundations

- [Request and response schemas](https://github.com/vitoryoshii/conecta-comunidade/tree/main/backend/schemas): `backend/schemas`
- [JWT and password security](https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/services/auth_service.py): `backend/services/auth_service.py`
- [Personal-data rules](https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/services/dados_pessoais_service.py): `backend/services/dados_pessoais_service.py`
- [Geolocation](https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/services/geo_service.py): `backend/services/geo_service.py`
- [Presentation formatting](https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/services/apresentacao.py): `backend/services/apresentacao.py`
- [Session and auth dependencies](https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/deps.py): `backend/deps.py`
- [Domain models](https://github.com/vitoryoshii/conecta-comunidade/tree/main/backend/models): `backend/models`
- [SQLModel persistence](https://github.com/vitoryoshii/conecta-comunidade/blob/main/backend/database.py): `backend/database.py`

### Other components

- **Residents**
- **PostgreSQL / SQLite**

## Connections

- Residents → Flet application: use (evidence: `README.md`)
- Flet application → Feature views: renders (evidence: `mobile/main.py`)
- Flet application → HTTP API client: creates (evidence: `mobile/main.py`)
- Flet application → App state: maintains (evidence: `mobile/main.py`)
- Feature views → HTTP API client: request data
- Map view → HTTP API client: request map data
- HTTP API client → API entry: HTTP JSON (evidence: `README.md`)
- API entry → Authentication routes: registers (evidence: `backend/main.py`)
- API entry → Help requests: registers (evidence: `backend/main.py`)
- API entry → Help offers: registers (evidence: `backend/main.py`)
- API entry → Chat messages: registers (evidence: `backend/main.py`)
- API entry → Scheduled deliveries: registers (evidence: `backend/main.py`)
- API entry → Map data: registers (evidence: `backend/main.py`)
- API entry → Favorites: registers (evidence: `backend/main.py`)
- API entry → NGO directory: registers (evidence: `backend/main.py`)
- API entry → Profiles and impact: registers (evidence: `backend/main.py`)
- API entry → Localities: registers (evidence: `backend/main.py`)
- API entry → Categories: registers (evidence: `backend/main.py`)
- Authentication routes → JWT and password security: uses (evidence: `backend/routers/auth.py`)
- Authentication routes → Personal-data rules: validates data (evidence: `backend/routers/auth.py`)
- Authentication routes → Session and auth dependencies: uses (evidence: `backend/routers/auth.py`)
- Chat messages → Session and auth dependencies: uses (evidence: `backend/routers/mensagens.py`)
- Chat messages → Presentation formatting: formats (evidence: `backend/routers/mensagens.py`)
- Help requests → Session and auth dependencies: uses (evidence: `backend/routers/solicitacoes.py`)
- Help requests → Geolocation: uses (evidence: `backend/routers/solicitacoes.py`)
- Help requests → Presentation formatting: formats (evidence: `backend/routers/solicitacoes.py`)
- Profiles and impact → Session and auth dependencies: uses (evidence: `backend/routers/usuarios.py`)
- Profiles and impact → JWT and password security: uses (evidence: `backend/routers/usuarios.py`)
- Profiles and impact → Personal-data rules: uses (evidence: `backend/routers/usuarios.py`)
- Request and response schemas → Domain models: shares enums (evidence: `backend/schemas/usuario.py`)
- Session and auth dependencies → JWT and password security: decodes token (evidence: `backend/deps.py`)
- Session and auth dependencies → SQLModel persistence: gets session (evidence: `backend/deps.py`)
- Session and auth dependencies → Domain models: loads user (evidence: `backend/deps.py`)
- SQLModel persistence → PostgreSQL / SQLite: connects (evidence: `README.md`)
- Help requests → Domain models: uses entities (evidence: `backend/routers/solicitacoes.py`)
- Chat messages → Domain models: uses entities (evidence: `backend/routers/mensagens.py`)
