... | ... | @@ -81,6 +81,47 @@ A comunicação com a API é feita via **TanStack Query**, que gerencia o ciclo |
|
|
|
|
|
<h3 id="back-end-def-tec">Definições de Tecnologias</h3>
|
|
|
|
|
|
* Linguagem: **Python**
|
|
|
* Framework: **FastAPI**
|
|
|
* Banco de Dados: **Firebase Firestore** (NoSQL)
|
|
|
* Armazenamento de Arquivos: **Firebase Storage** (imagens e mídias)
|
|
|
* Autenticação: **Firebase Auth**
|
|
|
* Containerização: **Docker + Docker Compose**
|
|
|
* Testes: **Pytest**
|
|
|
* Documentação de API: **Swagger** (disponível em `/docs`)
|
|
|
|
|
|
O backend foi desenvolvido em **arquitetura em camadas**, garantindo separação de responsabilidades, testabilidade e escalabilidade.
|
|
|
|
|
|
---
|
|
|
|
|
|
<h3 id="back-end-camadas">Camadas e Fluxo</h3>
|
|
|
|
|
|
A API segue um modelo de **camadas bem definidas**:
|
|
|
|
|
|
```
|
|
|
app/
|
|
|
├── main.py # Ponto de entrada da aplicação
|
|
|
├── controllers/ # Rotas e controladores da API (camada de interface)
|
|
|
├── dependencies/ # Injeção de dependências e middlewares
|
|
|
├── models/ # Modelos de dados e integração com Firebase (Firestore/Storage/Auth)
|
|
|
├── schemas/ # Schemas (Pydantic) para validação e serialização
|
|
|
├── services/ # Regras de negócio e lógica da aplicação
|
|
|
└── tests/ # Testes unitários e de integração
|
|
|
```
|
|
|
|
|
|
### Fluxo de uma requisição
|
|
|
|
|
|
1. **Cliente** (Frontend Web/Mobile) envia uma requisição HTTP para a API.
|
|
|
2. A requisição chega ao **Controller**, que define a rota e delega a execução.
|
|
|
3. O **Service** aplica as regras de negócio (ex.: criar evento, associar usuário, registrar tarefa concluída).
|
|
|
4. Os **Models** interagem com o **Firebase**:
|
|
|
|
|
|
* **Firestore** → persistência e consulta de dados (eventos, usuários, tarefas, resultados).
|
|
|
* **Storage** → upload/download de arquivos (imagens de eventos, avatares, certificados).
|
|
|
* **Auth** → autenticação e autorização de usuários.
|
|
|
5. O **Schema (Pydantic)** garante que entrada e saída de dados estão no formato correto.
|
|
|
6. A resposta validada retorna ao **Controller**, que a envia ao **Cliente**.
|
|
|
|
|
|
---
|
|
|
|
|
|
## Integração Frontend + Backend
|
... | ... | |