- Node.js (versão 20.x.x ou superior)
- NPM (Gerenciador de pacotes)
- Docker e Docker Compose (Para rodar a imagem do BBD PostgreSQL)
Siga os passos abaixo para ter a API rodando localmente:
#Clone o Repositório
git clone https://github.com/DarlanHildebrando/frontend-hackathon.git
# Vá no diretório do Projeto
cd backend-hackaton#Instale as dependências
npm installCrie um arquivo .env na raiz do projeto, baseado no arquivo .env.example.
Utilize o Docker Compose para subir o container do PostgreSQL:
docker-compose up --buildAplique o schema do BDD definido no prisma/schema.prisma:
npx prisma migrate dev --name initExecute a aplicação em modo de desenvolvimento com ts-node:
npm run devA API estará disponível em http://localhost:(numero da porta)
Aqui estão as rotas que o sistema possui:
| Método | Endpoint | Descrição | Requer |
|---|---|---|---|
| POST | /auth/login |
Gera um token JWT com os dados do usuário para realizar login no sistema | Não |
| GET | /users |
Retorna os dados de todos os usuários da tabela "Users" | Sim |
| GET | /users/:id |
Retorna os dados de um usuário especificado através de seu ID | Sim |
| POST | /users |
Cria um novo usuário no sistema e as informações são adicionadas no BDD | Não |
| PUT | /users/:id |
Atualiza as informações de um usuário já registrado no BDD | Sim |
| DELETE | /users/:id |
Deleta todas as informações de um usuário especifico do BDD | Sim |
| GET | /address |
Retorna os dados de todos os usuários da tabela "Address" | Sim |
| GET | /address/:id |
Retorna os dados de um endereço específico através do ID | Sim |
| POST | /address |
Cria um novo endereço no sistema e as informações são adicionadas no BDD | Sim |
| PUT | /address/:id |
Atualiza os dados de um endereço selecionado pelo ID | Sim |
| DELETE | /adress/:id |
Deleta todos os dados de um endereço selecionado pelo ID | Sim |
| GET | /roads |
Busca todas as jornadas no BDD | Sim |
| GET | /roads/:id |
Retorna uma jornada selecionado pelo ID | Sim |
| POST | /roads |
Adiciona uma jornada no BDD | Sim |
| PUT | /roads/:id |
Atualiza uma jornada já cadastrada através do ID | |
| DELETE | /roads/:id |
Deleta a jornada atavés do ID | Sim |
A estrutura do sistema está organizada de forma modular, com foco de separação nas responsabilidades (controllers, services, routes, zod, modules) dentro dentro de cada domínio dentro da pasta (modules).
.
├── src/
│ ├── generated/ # Arquivos gerados (ex: pelo Prisma Client)
│ ├── modules/ # Divisão por domínio (ex: user)
│ │ └── user/
│ │ ├── user.controller.ts # Tratamento de requisições
│ │ ├── user.module.ts # Definição e agrupamento do módulo
│ │ ├── user.routes.ts # Definição de Rotas
│ │ └── user.service.ts # Regras de Negócio
│ ├── prisma/ # Configuração e inicialização do Prisma Client
│ ├── app.ts # Inicialização da aplicação Express
│ └── server.ts # Arquivo principal de execução do servidor
├── prisma/ # Schema e Migrações do Banco de Dados
├── .env.example
├── .gitignore
├── LICENSE
├── package.json
├── pnpm-lock.yaml
├── prisma.config.ts
├── README.md
└── tsconfig.json
Projeto sob licança MIT.
Caso queira ver em qual repositório foi desenvolvido, clique aqui: Acessar Repositório
Repositório do Front-End: Acessar Repositório
