Desenvolver uma plataforma digital B2B de apoio à gestão de concursos privados e processos de contratação e.ntre pequenas e médias empresas em Angola, com a finalidade de facilitar a divulgação de oportunidades, a submissão e acompanhamento de propostas e o apoio à tomada de decisão
# Plataforma Digital B2B — Gestão de Concursos Privados para PMEs em Angola
Esta plataforma digital B2B permite a gestão e classificação de concursos privados para Pequenas e Médias Empresas (PMEs) em Angola, com suporte para perfis de Contratante, Concorrente e Administração.
O projecto foi desenvolvido em **FastAPI (Python)** e estruturado seguindo uma arquitectura limpa em camadas (Layered + Service Layer) para garantir a conformidade técnica, facilidade de manutenção e segurança.
---
## Stack Tecnológica & Requisitos
- **Backend:** Python 3.12+, FastAPI, SQLAlchemy, Alembic, PostgreSQL 16
- **Ambiente Recomendado:** Docker e Docker Compose
- **Testes:** Pytest (com base de dados SQLite em memória)
---
## Como Executar o Projecto com Docker
Para executar o projecto com Docker, utilize o **Docker Compose**. Este inicializará o servidor de API e a base de dados PostgreSQL automaticamente.
### Passo 1: Configurar Variáveis de Ambiente
O ficheiro `.env` **não é versionado no Git** (contém segredos). Copia o modelo incluído no repositório e ajusta os valores:
```bash
cp .env.example .env
```
Variáveis mais relevantes:
* `DATABASE_URL` / `POSTGRES_*`: Ligação com a base de dados local no contentor.
* `SECRET_KEY`: gera uma chave própria com `openssl rand -hex 32`.
* `FIRST_SUPERUSER_EMAIL` / `FIRST_SUPERUSER_PASSWORD`: credenciais do Administrador inicial.
* `INTERNAL_API_KEY`: chave partilhada entre o backend e o n8n (ver secção "Automação de IA (n8n)" abaixo).
* `GROQ_API_KEY` / `N8N_API_KEY`: só são necessárias se quiseres activar a verificação de conformidade por IA.
### Passo 2: Construir e Iniciar os Contentores
Execute o seguinte comando na raiz do projecto:
```bash
docker compose up -d --build
```
*Isto criará e executará os contentores do `backend` (porta `8000`), da base de dados `db` e do `n8n` (porta `5678`).*
### Passo 3: Executar as Migrações da Base de Dados (Alembic)
Para criar a estrutura de tabelas físicas no PostgreSQL recém-criado, execute …