A Embrace é uma plataforma que atua como um hub digital unificado para situações de emergência climática, conectando ONGs, coletivos, voluntários e comunidades afetadas. O Embrace.API representa o núcleo backend dessa solução: uma API REST desenvolvida em .NET 8 para gerenciar ações solidárias em desastres naturais.
- Cadastro de ONGs e ações solidárias
- Registro e consulta de doações
- Gerenciamento de voluntários
- Visualização de pontos de coleta de alimentos
- Integração com sistemas externos
Usuário
|
v
[Embrace.API (.NET 8)]
|
v
[PostgreSQL]
Usuário
|
v
[Container: Embrace.API]
|
v
[Container: PostgreSQL]
Ambos conectados por uma rede Docker dedicada.
-
Serviços do projeto:
- Embrace.API (.NET 8)
- PostgreSQL (banco de dados)
-
Dependências:
A aplicação depende do banco de dados para persistência das informações (ONGs, doações, voluntários, pontos de coleta, etc). -
Estratégia de containerização:
- API: Imagem oficial do .NET 8, utilizando Dockerfile próprio.
- Banco: Imagem oficial do PostgreSQL, configurada por variáveis de ambiente.
- .NET 8
- ASP.NET Core
- C#
- Entity Framework Core
- Npgsql (PostgreSQL)
- AutoMapper
- Swagger
- Docker e Docker Compose
O projeto foi modernizado e utiliza Docker Compose para orquestrar os containers de aplicação e banco de dados.
- 1 container para a API (.NET 8)
- 1 container para o PostgreSQL (imagem oficial)
- Usuário não-root para a aplicação
- Volume nomeado para persistência do banco
- Variáveis de ambiente para configuração
- Rede dedicada para comunicação interna
- Políticas de restart apropriadas
- API exposta na porta 8080, banco na 5432
- Docker e Docker Compose instalados
git clone https://github.com/MarsoL4/embrace-api.git
cd embrace-api
No arquivo Embrace.API/appsettings.json
, confirme que a string está assim:
"Postgres": "Host=db;Port=5432;Database=embrace_db;Username=embrace_user;Password=embrace_pass"
docker compose up --build
docker compose exec app dotnet ef database update
- Subir containers:
docker compose up --build
- Parar containers:
docker compose down
- Ver logs:
docker compose logs -f
- Acessar terminal do container:
docker compose exec app /bin/bash
- Clone o repositório.
- Ajuste variáveis de ambiente, se necessário.
- Garanta que a string de conexão está correta no
appsettings.json
. - Suba os containers com
docker compose up --build
. - Popular o banco (opcional) com
docker compose exec app dotnet ef database update
. - Acesse a API via http://localhost:8080/swagger/index.html.
- Erro de banco: Confira usuário, senha e se a porta 5432 está livre.
- API não sobe: Veja logs com
docker compose logs app
. - Banco vazio: Use o comando
docker compose exec app dotnet ef database update
.
- Após subir o projeto, acesse: http://localhost:8080/swagger/index.html
- Realize operações CRUD em todos os recursos (ONGs, voluntários, doações, etc)
Exemplos de payloads em docs/swagger-examples.json
.
Time Embrace – GS 2025-1:
- Enzo Giuseppe Marsola – RM: 556310
- Cauan da Cruz Ferreira – RM: 5558238
- Igor dias Barrocal – RM: 555217