# unpsjb/saia-grupo-6 architecture

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

- Interactive diagram: https://gitdiagram.com/unpsjb/saia-grupo-6
- Repository: https://github.com/unpsjb/saia-grupo-6

## Overview

The README describes a food-safety support system for managing BPM/POES instruments and viewing indicators, but the sampled runtime does not implement those capabilities. The backend currently exposes CRUD for personas and mascotas, while the frontend is the unmodified React/Vite starter screen and shows no API integration. The graph reflects those observed paths; unsampled instrument and indicator subsystems are omitted.

Main entry points: [`backend/src/main.py`](https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/main.py) (FastAPI app), [`backend/src/personas/router.py`](https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/personas/router.py) (Personas routes), [`backend/src/mascotas/router.py`](https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/mascotas/router.py) (Mascotas routes), [`backend/src/database.py`](https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/database.py) (DB sessions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Frontend"]
  node_app_entry["React entry<br/>[main.tsx]"]
  node_app_screen["Starter screen<br/>[App.tsx]"]
end

subgraph group_api["Backend API"]
  node_fastapi["FastAPI app<br/>[main.py]"]
  node_people_routes["Personas routes<br/>[router.py]"]
  node_people_service["Personas CRUD<br/>[services.py]"]
  node_people_model["Persona model<br/>[models.py]"]
  node_people_schema["Persona schemas<br/>[schemas.py]"]
  node_pets_routes["Mascotas routes<br/>[router.py]"]
  node_pets_service["Mascotas CRUD<br/>[services.py]"]
  node_pets_model["Mascota model<br/>[models.py]"]
  node_pets_schema["Mascota schemas<br/>[schemas.py]"]
end

subgraph group_persistence["Persistence"]
  node_db_session["DB sessions<br/>[database.py]"]
  node_database[("SQL database")]
  node_base_models["ORM base<br/>[models.py]"]
end

node_visitor(("Visitor"))
node_browser(("API caller"))

node_visitor -->|"opens"| node_app_entry
node_app_entry -->|"renders"| node_app_screen
node_browser -->|"HTTP requests"| node_fastapi
node_fastapi -->|"mounts"| node_people_routes
node_fastapi -->|"mounts"| node_pets_routes
node_fastapi -->|"creates tables"| node_base_models
node_fastapi -->|"uses engine"| node_db_session
node_people_routes -->|"calls CRUD"| node_people_service
node_people_routes -->|"injects session"| node_db_session
node_people_service -->|"queries/writes"| node_database
node_people_service -->|"uses ORM"| node_people_model
node_people_routes -->|"validates/serializes"| node_people_schema
node_pets_routes -->|"calls CRUD"| node_pets_service
node_pets_routes -->|"injects session"| node_db_session
node_pets_service -->|"queries/writes"| node_database
node_pets_service -->|"uses ORM"| node_pets_model
node_pets_routes -->|"validates/serializes"| node_pets_schema
node_db_session -->|"opens sessions"| node_database
node_base_models -->|"defines tables"| node_database

click node_app_entry "https://github.com/unpsjb/saia-grupo-6/blob/main/frontend/src/main.tsx"
click node_app_screen "https://github.com/unpsjb/saia-grupo-6/blob/main/frontend/src/App.tsx"
click node_fastapi "https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/main.py"
click node_people_routes "https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/personas/router.py"
click node_people_service "https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/personas/services.py"
click node_people_model "https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/personas/models.py"
click node_people_schema "https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/personas/schemas.py"
click node_pets_routes "https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/mascotas/router.py"
click node_pets_service "https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/mascotas/services.py"
click node_pets_model "https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/mascotas/models.py"
click node_pets_schema "https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/mascotas/schemas.py"
click node_db_session "https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/database.py"
click node_base_models "https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/models.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_app_entry,node_app_screen toneBlue
class node_fastapi,node_people_routes,node_people_service,node_people_model,node_people_schema,node_pets_routes,node_pets_service,node_pets_model,node_pets_schema toneAmber
class node_db_session,node_database,node_base_models,node_browser toneMint
class node_visitor toneIndigo
```

## Components

### Frontend

- [React entry](https://github.com/unpsjb/saia-grupo-6/blob/main/frontend/src/main.tsx): `frontend/src/main.tsx`
- [Starter screen](https://github.com/unpsjb/saia-grupo-6/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`

### Backend API

- [FastAPI app](https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/main.py): `backend/src/main.py`
- [Personas routes](https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/personas/router.py): `backend/src/personas/router.py`
- [Personas CRUD](https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/personas/services.py): `backend/src/personas/services.py`
- [Persona model](https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/personas/models.py): `backend/src/personas/models.py`
- [Persona schemas](https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/personas/schemas.py): `backend/src/personas/schemas.py`
- [Mascotas routes](https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/mascotas/router.py): `backend/src/mascotas/router.py`
- [Mascotas CRUD](https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/mascotas/services.py): `backend/src/mascotas/services.py`
- [Mascota model](https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/mascotas/models.py): `backend/src/mascotas/models.py`
- [Mascota schemas](https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/mascotas/schemas.py): `backend/src/mascotas/schemas.py`

### Persistence

- [DB sessions](https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/database.py): `backend/src/database.py`
- **SQL database**
- [ORM base](https://github.com/unpsjb/saia-grupo-6/blob/main/backend/src/models.py): `backend/src/models.py`

### Other components

- **Visitor**
- **API caller**

## Connections

- Visitor → React entry: opens
- React entry → Starter screen: renders
- API caller → FastAPI app: HTTP requests
- FastAPI app → Personas routes: mounts
- FastAPI app → Mascotas routes: mounts
- FastAPI app → ORM base: creates tables
- FastAPI app → DB sessions: uses engine
- Personas routes → Personas CRUD: calls CRUD
- Personas routes → DB sessions: injects session
- Personas CRUD → SQL database: queries/writes
- Personas CRUD → Persona model: uses ORM
- Personas routes → Persona schemas: validates/serializes
- Mascotas routes → Mascotas CRUD: calls CRUD
- Mascotas routes → DB sessions: injects session
- Mascotas CRUD → SQL database: queries/writes
- Mascotas CRUD → Mascota model: uses ORM
- Mascotas routes → Mascota schemas: validates/serializes
- DB sessions → SQL database: opens sessions
- ORM base → SQL database: defines tables
