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.
Se você quiser discutir ideias, problemas ou contribuições, sinta-se à vontade para se juntar ao nosso servidor do Discord aqui.
- 🟢 Node.js: Ambiente de execução para JavaScript.
- 🔗 Prisma: ORM para Node.js e TypeScript, facilitando o gerenciamento do banco de dados.
- 🐳 Docker: Solução para desenvolvimento e execução de aplicativos em contêineres.
- 🐦 Nest: Framework de alto desempenho para aplicações web em Node.js.
- 📦 PostgreSQL: Banco de dados relacional robusto e eficiente.
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.
Se estiver usando Docker, os comandos para carregar o dump são:
# Copiar o dump para a pasta temporária do Docker
docker exec -it cp backup.sql POSTGRES_CONTAINER_ID:/tmp/backup.sql
# Importar o dump para o banco
docker exec -i POSTGRES_CONTAINER_ID psql -U root -d DATABASE_NAME -f /tmp/backup.sql
Para desenvolvedores de frontend que não precisam executar localmente a API e o banco, siga estes passos:
-
Clone o arquivo
.env
de exemplo:cp .env.local .env
-
Use o seguinte comando para criar e iniciar o banco via Docker:
docker-compose -f docker-compose.dev.yml up
Adicione a porta do serviço de banco no docker-compose.dev.yml
para acessos externos:
ports:
- '5432:5432'
- '4000:4000'
-
Faça um fork do repositório para o seu usuário (uma boa ideia é usar um nome mais descritivo do que
backend
, comosos-rs-backend
). -
Clone o repositório (troque
<seuusuario>
na url abaixo pelo seu usuário):git clone https://github.com/<seuusuario>/sos-rs-backend.git
-
Faça uma cópia do arquivo
.env
, e altereDB_HOST=sos-rs-db
paraDB_HOST=localhost
:sed 's/sos-rs-db/localhost/g' .env.local > .env # ou copie o arquivo e altere no seu editor preferido
-
Inicie o banco de dados com o Docker (adicione
-d
para rodar em background):docker compose -f docker-compose.dev.yml up db # ou em background: docker compose -f docker-compose.dev.yml up db -d # para ver os logs: docker logs sos-rs-db
-
Instale as dependências:
npm install npx prisma generate npx prisma migrate dev
-
Inicie o servidor:
npm start # ou com watch: npm run start:dev
A API estará disponível em http://localhost:4000. Você poderá acessar o Swagger em http://localhost:4000/api.
-
Rode os testes:
npm test # ou com watch: npm run test:watch
- Faça suas alterações;
- Rode os testes com
npm test
; - Rode o lint com
npm run lint
; - Crie um branch com o git
git checkout -b nomedobranch
; - Faça um commit com
git commit
; - Faça um push para o seu repositório com
git push
; - Sincronize seu repositório;
- Abra um pull request.
Você vai precisar, de tempos em tempos, sincronizar a branch develop
do
seu repositório. Você pode usar o botão Sync fork
do Github
(veja os docs).
Ou você pode fazer manualmente, o que te permite fazer a sincronização sem depender do Github:
-
Antes de mais nada, se estiver no meio de uma contribuição, verifique que já commitou tudo que tinha pra commitar, e então faça checkout do branch
develop
:git checkout develop
-
Adicione o repositório oficial como remoto com nome
upstream
(só necessário na primeira vez):git remote add upstream https://github.com/SOS-RS/backend.git
-
Faça pull do branch
develop
:git pull upstream develop
-
Se estiver no meio de uma contribuição, faça um rebase no branch
develop
(substitua<seubranch>
pelo nome do seu branch):git checkout <seubranch> git rebase develop
- 📝 POST /users - Registra um novo usuário.
- 🔧 PUT /users - Atualiza um usuário existente.
- 📝 POST /sessions - Inicia uma nova sessão de usuário.
- 👀 GET /sessions/:sessionId - Retorna detalhes de uma sessão.
- 🔧 PUT /sessions/:sessionId - Atualiza uma sessão.
- 📝 POST /shelters - Registra um novo abrigo.
- 🔧 PUT /shelters/:shelterId - Atualiza um abrigo.
- 👀 GET /shelters - Lista abrigos.
- 📝 POST /supply - Registra um novo item de suprimento.
- 🔧 PUT /supplies/:supplyId - Atualiza um suprimento.
- 👀 GET /supplies - Lista suprimentos.
- 📝 POST /supply-categories - Registra uma nova categoria de suprimentos.
- 🔧 PUT /supply-categories/:categoryId - Atualiza uma categoria.
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.
Sua ajuda é crucial para apoiar a comunidade afetada pelas enchentes no Rio Grande do Sul!