# gabtapia/sistema_saida architecture

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

- Interactive diagram: https://gitdiagram.com/gabtapia/sistema_saida
- Repository: https://github.com/gabtapia/sistema_saida

## Overview

O produto é um sistema web para autorizar e auditar saídas antecipadas de estudantes. O fluxo principal começa na interface Streamlit: assistência escolhe um motivo e emite a autorização pela API; depois, a portaria consulta pendências e confirma a saída física, registrada com horário e responsável. A API também oferece autenticação com perfis, gestão de motivos e histórico. As relações refletem chamadas visíveis nos trechos e capacidades descritas no README; partes não amostradas da interface e das rotas têm ligações omitidas quando não foi possível confirmar o fluxo.

Main entry points: [`backend/crud.py`](https://github.com/gabtapia/sistema_saida/blob/main/backend/crud.py) (Consultas e operações), [`backend/routes/auth.py`](https://github.com/gabtapia/sistema_saida/blob/main/backend/routes/auth.py) (Rotas de autenticação), [`app.py`](https://github.com/gabtapia/sistema_saida/blob/main/app.py) (Interface Streamlit), [`backend/main.py`](https://github.com/gabtapia/sistema_saida/blob/main/backend/main.py) (Aplicação FastAPI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["Interface"]
  node_streamlit["Interface Streamlit<br/>[app.py]"]
end

subgraph group_api["API REST"]
  node_fastapi["Aplicação FastAPI<br/>[main.py]"]
  node_auth["Rotas de autenticação<br/>[auth.py]"]
  node_saidas["Rotas de saídas<br/>[saidas.py]"]
  node_motivos["Rotas de motivos<br/>[motivos.py]"]
end

subgraph group_domain["Domínio e segurança"]
  node_dependencies["Sessão e RBAC<br/>[dependencies.py]"]
  node_security["Hashes e JWT<br/>[security.py]"]
  node_crud["Consultas e operações<br/>[crud.py]"]
  node_schemas["Validação de dados<br/>[schemas.py]"]
  node_models["Entidades e estados<br/>[models.py]"]
end

subgraph group_persistence["Persistência"]
  node_database["Sessões e engine<br/>[database.py]"]
  node_sqlite[("Base SQLite")]
end

node_assistencia(("Assistência"))
node_portaria(("Portaria"))
node_admin(("Administrador"))

node_assistencia -->|"emite autorizações"| node_streamlit
node_portaria -->|"confirma saídas"| node_streamlit
node_admin -->|"gere acessos"| node_streamlit
node_streamlit -->|"autentica e consulta perfil"| node_auth
node_streamlit -->|"consulta e cadastra motivos"| node_motivos
node_streamlit -->|"emite, consulta e confirma"| node_saidas
node_fastapi -->|"regista router"| node_auth
node_fastapi -->|"regista router"| node_motivos
node_fastapi -->|"regista router"| node_saidas
node_fastapi -->|"cria tabelas e sessões"| node_database
node_fastapi -->|"popula dados iniciais"| node_crud
node_auth -->|"consulta e cria utilizadores"| node_crud
node_auth -->|"verifica senha e emite token"| node_security
node_saidas -->|"valida e opera registos"| node_crud
node_motivos -->|"consulta e cria motivos"| node_crud
node_auth -->|"restringe acesso"| node_dependencies
node_saidas -->|"valida sessão e perfil"| node_dependencies
node_motivos -->|"restringe cadastro"| node_dependencies
node_dependencies -->|"obtém sessão"| node_database
node_crud -->|"consulta e grava"| node_database
node_crud -->|"gera hash de senha"| node_security
node_database -->|"persiste dados"| node_sqlite
node_crud -->|"opera entidades"| node_models
node_auth -->|"valida contratos"| node_schemas
node_saidas -->|"valida contratos"| node_schemas
node_motivos -->|"valida contratos"| node_schemas

click node_streamlit "https://github.com/gabtapia/sistema_saida/blob/main/app.py"
click node_fastapi "https://github.com/gabtapia/sistema_saida/blob/main/backend/main.py"
click node_auth "https://github.com/gabtapia/sistema_saida/blob/main/backend/routes/auth.py"
click node_saidas "https://github.com/gabtapia/sistema_saida/blob/main/backend/routes/saidas.py"
click node_motivos "https://github.com/gabtapia/sistema_saida/blob/main/backend/routes/motivos.py"
click node_dependencies "https://github.com/gabtapia/sistema_saida/blob/main/backend/dependencies.py"
click node_security "https://github.com/gabtapia/sistema_saida/blob/main/backend/security.py"
click node_crud "https://github.com/gabtapia/sistema_saida/blob/main/backend/crud.py"
click node_schemas "https://github.com/gabtapia/sistema_saida/blob/main/backend/schemas.py"
click node_models "https://github.com/gabtapia/sistema_saida/blob/main/backend/models.py"
click node_database "https://github.com/gabtapia/sistema_saida/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_streamlit toneBlue
class node_fastapi,node_auth,node_saidas,node_motivos toneAmber
class node_dependencies,node_security,node_crud,node_schemas,node_models toneMint
class node_database,node_sqlite toneRose
class node_assistencia,node_portaria,node_admin toneIndigo
```

## Components

### Interface

- [Interface Streamlit](https://github.com/gabtapia/sistema_saida/blob/main/app.py): `app.py`

### API REST

- [Aplicação FastAPI](https://github.com/gabtapia/sistema_saida/blob/main/backend/main.py): `backend/main.py`
- [Rotas de autenticação](https://github.com/gabtapia/sistema_saida/blob/main/backend/routes/auth.py): `backend/routes/auth.py`
- [Rotas de saídas](https://github.com/gabtapia/sistema_saida/blob/main/backend/routes/saidas.py): `backend/routes/saidas.py`
- [Rotas de motivos](https://github.com/gabtapia/sistema_saida/blob/main/backend/routes/motivos.py): `backend/routes/motivos.py`

### Domínio e segurança

- [Sessão e RBAC](https://github.com/gabtapia/sistema_saida/blob/main/backend/dependencies.py): `backend/dependencies.py`
- [Hashes e JWT](https://github.com/gabtapia/sistema_saida/blob/main/backend/security.py): `backend/security.py`
- [Consultas e operações](https://github.com/gabtapia/sistema_saida/blob/main/backend/crud.py): `backend/crud.py`
- [Validação de dados](https://github.com/gabtapia/sistema_saida/blob/main/backend/schemas.py): `backend/schemas.py`
- [Entidades e estados](https://github.com/gabtapia/sistema_saida/blob/main/backend/models.py): `backend/models.py`

### Persistência

- [Sessões e engine](https://github.com/gabtapia/sistema_saida/blob/main/backend/database.py): `backend/database.py`
- **Base SQLite**

### Other components

- **Assistência**
- **Portaria**
- **Administrador**

## Connections

- Assistência → Interface Streamlit: emite autorizações
- Portaria → Interface Streamlit: confirma saídas
- Administrador → Interface Streamlit: gere acessos
- Interface Streamlit → Rotas de autenticação: autentica e consulta perfil
- Interface Streamlit → Rotas de motivos: consulta e cadastra motivos
- Interface Streamlit → Rotas de saídas: emite, consulta e confirma
- Aplicação FastAPI → Rotas de autenticação: regista router
- Aplicação FastAPI → Rotas de motivos: regista router
- Aplicação FastAPI → Rotas de saídas: regista router
- Aplicação FastAPI → Sessões e engine: cria tabelas e sessões
- Aplicação FastAPI → Consultas e operações: popula dados iniciais
- Rotas de autenticação → Consultas e operações: consulta e cria utilizadores
- Rotas de autenticação → Hashes e JWT: verifica senha e emite token
- Rotas de saídas → Consultas e operações: valida e opera registos
- Rotas de motivos → Consultas e operações: consulta e cria motivos
- Rotas de autenticação → Sessão e RBAC: restringe acesso
- Rotas de saídas → Sessão e RBAC: valida sessão e perfil
- Rotas de motivos → Sessão e RBAC: restringe cadastro
- Sessão e RBAC → Sessões e engine: obtém sessão
- Consultas e operações → Sessões e engine: consulta e grava
- Consultas e operações → Hashes e JWT: gera hash de senha
- Sessões e engine → Base SQLite: persiste dados
- Consultas e operações → Entidades e estados: opera entidades
- Rotas de autenticação → Validação de dados: valida contratos
- Rotas de saídas → Validação de dados: valida contratos
- Rotas de motivos → Validação de dados: valida contratos
