REST API desenvolvida individualmente para o Hackathon 2026, competição de programação realizada em abril de 2026 na UNASP, com duração de 3 dias. Fui responsável por todo o backend, integrando a fonte de dados (Firestore) ao agente de IA (IBM Watsonx Orchestrate) para que este realizasse recomendações de voluntários às instituições com base nos requisitos de cada uma. Desenvolver o projeto sozinho, do design da API ao deploy, foi uma oportunidade de aprofundar conhecimentos em arquitetura de integração entre serviços e no ciclo completo de desenvolvimento de software.
- FastAPI — Framework web assíncrono, escolhido pela facilidade de implementação e documentação.
- Pydantic - Biblioteca de validação de dados, escolhido pela fácil implementação e boa integração com FastAPI.
- Google Firestore — Banco de dados NoSQL, utilizado por ser mais fácil de implementar para uma PoC.
- IBM Watsonx Orchestrate — Agente de IA conversacional, requisito para a competição.
Todos os endpoints foram protegidos por API Keys.
| Método | Endpoint | Descrição | Proteção |
|---|---|---|---|
| POST | /api/v1/sessions |
Criar nova sessão no agente de IA | IBM watsonx API Key |
| POST | /api/v1/chat |
Envia uma mensagem para o agente | IBM watsonx API Key |
| DELETE | /api/v1/sessions/{session_id} |
Encerra sessão | IBM watsonx API Key |
| Método | Endpoint | Descrição | Proteção |
|---|---|---|---|
| GET | /api/v1/collections/{collection} |
Listar documentos | Chave própria |
| GET | /api/v1/collections/{collection}/{doc_id} |
Buscar documento | Chave própria |
| POST | /api/v1/convites |
Criar convite | Chave própria |
| PUT | /api/v1/convites/{doc_id}/status |
Atualizar status | Chave própria |
| POST | /api/v1/login |
Autenticar usuário | Chave própria |
| POST | /api/v1/voluntarios |
Cadastrar voluntário | Chave própria |
| POST | /api/v1/instituicoes |
Cadastrar instituição | Chave própria |
| POST | /api/v1/eventos |
Criar evento | Chave própria |
.
├── auth.py # Autenticação IBM Watsonx
├── main.py # Endpoints da API
├── models.py # Modelos Pydantic
├── repository.py # Camada de acesso a dados
├── requirements.txt # Dependências Python
├── Dockerfile # Containerização
└── .env # Variáveis de ambiente (não versionar)
André Pereira de Sá