# SafeAngola API
SafeAngola é uma API desenvolvida com **NestJS** para gerenciar detecção e alertas de acidentes rodoviários. A aplicação utiliza **PostgreSQL** como banco de dados e segue padrões como **Clean Architecture** e **Arquitetura Hexagonal**.
## 📌 Tecnologias Utilizadas
- **NestJS** - Framework Node.js para aplicações escaláveis
- **PostgreSQL** - Banco de dados relacional
- **Prisma ORM** - Gerenciamento de banco de dados
- **Docker** - Contêineres para ambiente isolado
- **Arquitetura Hexagonal** - Modularização e separação de responsabilidades
- **Clean Architecture** - Código desacoplado e testável
---
## 🚀 Como Executar a API
### **1️⃣ Pré-requisitos**
Certifique-se de ter instalado:
- Docker
- Docker Compose
- Node.js (se quiser rodar sem Docker)
### **2️⃣ Configurar Variáveis de Ambiente**
Crie um arquivo `.env` na raiz do projeto e adicione:
```env
DATABASE_URL=postgresql://admin:secret@db:5432/safeangola
PORT=3000
JWT_SECRET=seu_segredo_aqui
```
### **3️⃣ Rodando com Docker**
Para subir a API e o banco de dados com Docker, execute:
```sh
docker compose up -d
```
Isso iniciará o PostgreSQL e a API na porta `3000`.
### **4️⃣ Rodando sem Docker**
Caso prefira rodar localmente:
```sh
npm install # Instala as dependências
npm run prisma:migrate # Executa as migrações do banco de dados
npm run start:dev # Inicia a API em modo de desenvolvimento
```
---
## 🏗 Arquitetura do Projeto
O projeto segue a **Clean Architecture** e a **Arquitetura Hexagonal**, garantindo modularidade e testabilidade.
### 📂 Estrutura de Pastas
```
📦 safeangola-api
┣ 📂 src
┃ ┣ 📂 application # Casos de uso e regras de negócio
┃ ┣ 📂 domain # Entidades e contratos da aplicação
┃ ┣ 📂 infra # Implementação de repositórios, serviços externos e banco de dados
┃ ┣ 📂 interface # Controladores e gateways de comunicação (REST, GraphQL, etc.)
┃ ┣ 📂 modules # Módulos do NestJS para organização …