|
1 |
| -# README para o Backend do App de Ajuda em Enchentes |
| 1 | +# 🌊 Backend para App de Ajuda em Enchentes 🌊 |
2 | 2 |
|
3 |
| -Este repositório contém o backend de um aplicativo desenvolvido para organizar e distribuir suprimentos, bem como coordenar voluntários durante os alagamentos no Rio Grande do Sul. O backend fornece APIs para autenticação de usuários, gerenciamento de abrigos e suprimentos, entre outros. |
| 3 | +Este repositório contém o backend de um aplicativo projetado para ajudar na organização e distribuição de suprimentos, bem como na coordenação de voluntários durante enchentes no Rio Grande do Sul. Ele fornece APIs essenciais para a autenticação de usuários, gerenciamento de abrigos e suprimentos, e muito mais. |
4 | 4 |
|
5 |
| -## Sobre o Projeto |
| 5 | +## 🛠 Tecnologias Utilizadas |
6 | 6 |
|
7 |
| -O sistema backend é projetado para ser robusto e escalável, garantindo que possa lidar com o alto volume de acessos durante emergências. Ele opera com diversas APIs que permitem a interação com o frontend e outros serviços potenciais. |
| 7 | +- **🟢 Node.js**: Ambiente de execução para JavaScript. |
| 8 | +- **🔗 Prisma**: ORM para Node.js e TypeScript, facilitando o gerenciamento do banco de dados. |
| 9 | +- **🐳 Docker**: Solução para desenvolvimento e execução de aplicativos em contêineres. |
| 10 | +- **🐦 Nest**: Framework de alto desempenho para aplicações web em Node.js. |
| 11 | +- **📦 PostgreSQL**: Banco de dados relacional robusto e eficiente. |
8 | 12 |
|
9 |
| -## Tecnologias Utilizadas |
| 13 | +## 🗂 Dump do Banco de Dados |
10 | 14 |
|
11 |
| -- **Node.js**: Ambiente de execução para JavaScript. |
12 |
| -- **Express**: Framework para aplicação web para Node.js. |
13 |
| -- **MongoDB**: Banco de dados NoSQL para armazenar dados de forma eficiente. |
14 |
| -- **JWT**: Para autenticação segura via tokens. |
| 15 | +Para iniciar com dados de exemplo, utilize o dump do banco disponível em `prisma/migration/dev_dump.sql`. Este arquivo pode ser executado após as migrations estarem aplicadas. |
15 | 16 |
|
16 |
| -## Backlog |
| 17 | +Se estiver usando Docker, os comandos para carregar o dump são: |
17 | 18 |
|
18 |
| -- [ ] **Importar abrigos**: Importar a lista de abrigos e suas necessidades em csv para facilitar integração com outros sistemas. |
19 |
| -- [ ] **Criar sistema de notificação**: Notificar em algum canal (whatsapp, discord, telegram) sobre atualizações. |
| 19 | +```bash |
| 20 | +# Copiar o dump para a pasta temporária do Docker |
| 21 | +docker exec -it cp backup.sql POSTGRES_CONTAINER_ID:/tmp/backup.sql |
| 22 | +# Importar o dump para o banco |
| 23 | +docker exec -i POSTGRES_CONTAINER_ID psql -U root -d DATABASE_NAME -f /tmp/backup.sql |
| 24 | +``` |
20 | 25 |
|
21 |
| -## API Endpoints |
| 26 | +## 🐳 Configuração com Docker |
22 | 27 |
|
23 |
| -### Usuários |
24 |
| -- **POST /users** - Cadastrar um novo usuário. |
25 |
| -- **PUT /users** - Atualizar um usuário existente. |
| 28 | +Para desenvolvedores de frontend que não precisam executar localmente a API e o banco, siga estes passos: |
26 | 29 |
|
27 |
| -### Sessões |
28 |
| -- **POST /sessions** - Criar uma nova sessão de usuário (login). |
29 |
| -- **GET /sessions/:sessionId** - Obter detalhes de uma sessão. |
30 |
| -- **PUT /sessions/:sessionId** - Atualizar uma sessão específica. |
| 30 | +1. Clone o arquivo `.env` de exemplo: |
| 31 | + ```bash |
| 32 | + cp .env.local .env |
| 33 | + ``` |
31 | 34 |
|
32 |
| -### Abrigos |
33 |
| -- **POST /shelters** - Cadastrar um novo abrigo. |
34 |
| -- **PUT /shelters/:shelterId** - Atualizar um abrigo existente. |
35 |
| -- **GET /shelters** - Listar abrigos. |
| 35 | +2. Use o seguinte comando para criar e iniciar o banco via Docker: |
| 36 | + ```bash |
| 37 | + docker-compose -f docker-compose.dev.yml up |
| 38 | + ``` |
36 | 39 |
|
37 |
| -### Suprimentos |
38 |
| -- **POST /supply** - Cadastrar um novo item de suprimento. |
39 |
| -- **PUT /supplies/:supplyId** - Atualizar um suprimento. |
40 |
| -- **GET /supplies** - Listar suprimentos. |
| 40 | +Adicione a porta do serviço de banco no `docker-compose.dev.yml` para acessos externos: |
41 | 41 |
|
42 |
| -### Categorias de Suprimentos |
43 |
| -- **POST /supply-categories** - Cadastrar uma nova categoria de suprimentos. |
44 |
| -- **PUT /supply-categories/:categoryId** - Atualizar uma categoria de suprimentos. |
45 |
| -- **GET /supply-categories** - Listar categorias de suprimentos. |
| 42 | +```yaml |
| 43 | +ports: |
| 44 | + - '5432:5432' |
| 45 | + - '4000:4000' |
| 46 | +``` |
46 | 47 |
|
47 |
| -## Configuração Inicial |
| 48 | +## 🚀 Configuração Inicial Local |
48 | 49 |
|
49 | 50 | 1. Clone o repositório:
|
50 | 51 | ```bash
|
51 | 52 | git clone https://github.com/seuusuario/projeto-enchentes-backend.git
|
52 | 53 | ```
|
53 |
| -2. Entre no diretório do projeto: |
54 |
| - ```bash |
55 |
| - cd projeto-enchentes-backend |
56 |
| - ``` |
57 |
| -3. Instale as dependências: |
| 54 | +2. Instale as dependências: |
58 | 55 | ```bash
|
59 |
| - npm install |
| 56 | + npm install |
| 57 | + npx prisma generate |
| 58 | + npx prisma migrate dev |
| 59 | + npm run start:dev |
60 | 60 | ```
|
61 |
| -4. Inicie o servidor: |
| 61 | +3. Inicie o servidor: |
62 | 62 | ```bash
|
63 | 63 | npm start
|
64 | 64 | ```
|
65 |
| - A API estará acessível via `http://localhost:4000`. |
| 65 | + A API estará disponível em `http://localhost:4000`. |
| 66 | + |
| 67 | +## 📡 API Endpoints |
| 68 | + |
| 69 | +### 🧑💻 Usuários |
| 70 | + |
| 71 | +- **📝 POST /users** - Registra um novo usuário. |
| 72 | +- **🔧 PUT /users** - Atualiza um usuário existente. |
| 73 | + |
| 74 | +### 🚪 Sessões |
| 75 | + |
| 76 | +- **📝 POST /sessions** - Inicia uma nova sessão de usuário. |
| 77 | +- **👀 GET /sessions/:sessionId** - Retorna detalhes de uma sessão. |
| 78 | +- **🔧 PUT /sessions/:sessionId** - Atualiza uma sessão. |
| 79 | + |
| 80 | +### 🏠 Abrigos |
| 81 | + |
| 82 | +- **📝 POST /shelters** - Registra um novo abrigo. |
| 83 | +- **🔧 PUT /shelters/:shelterId** - Atualiza um abrigo. |
| 84 | +- **👀 GET /shelters** - Lista abrigos. |
| 85 | + |
| 86 | +### 📦 Suprimentos |
| 87 | + |
| 88 | +- **📝 POST /supply** - Registra um novo item de suprimento. |
| 89 | +- **🔧 PUT /supplies/:supplyId** - Atualiza um suprimento. |
| 90 | +- **👀 GET /supplies** - Lista suprimentos. |
| 91 | + |
| 92 | +### 🏷️ Categorias de Suprimentos |
66 | 93 |
|
67 |
| -## Contribuição |
| 94 | +- **📝 POST /supply-categories** - Registra uma nova categoria de suprimentos. |
| 95 | +- **🔧 PUT /supply-categories/:categoryId** - Atualiza uma categoria. |
68 | 96 |
|
69 |
| -Contribuições são bem-vindas! Se quiser contribuir, por favor faça um fork do repositório, crie uma branch para suas modificações e depois envie um pull request. |
| 97 | +## 🤝 Contribuição |
70 | 98 |
|
| 99 | +Contribuições são muito bem-vindas! Se deseja ajudar, faça um fork do repositório, crie uma branch com suas modificações, e envie um pull request. |
71 | 100 |
|
72 |
| -Sua participação é essencial para ajudarmos a comunidade afetada pelas enchentes no Rio Grande do Sul! |
| 101 | +Sua ajuda é crucial para apoiar a comunidade afetada pelas enchentes no Rio Grande do Sul! |
0 commit comments