Este projeto é uma API RESTful para gerenciamento de usuários em uma plataforma de rastreamento de veículos. Foi desenvolvida utilizando Node.js com o framework NestJS e utiliza PostgreSQL como banco de dados. A autenticação é feita via JWT (JSON Web Token).
- Node.js: Ambiente de execução para JavaScript no servidor.
- NestJS: Framework para Node.js que facilita a criação de aplicativos escaláveis e robustos.
- PostgreSQL: Sistema de gerenciamento de banco de dados relacional.
- Prisma ORM: ORM (Object-Relational Mapping) para trabalhar com bancos de dados SQL.
- JWT: JSON Web Token para autenticação segura.
- Docker: Para gerenciamento de contêineres e criação de ambientes consistentes.
- Docker Compose: Ferramenta para definir e gerenciar ambientes Docker multi-conteineres.
src/
│
├── modules/
│ ├── auth/ # Módulo de autenticação
│ │ ├── decorators/
│ │ ├── guards/
│ │ ├── middlewares/
│ │ ├── models/
│ │ ├── strategies/
│ │ ├── auth.controller.ts
│ │ ├── auth.module.ts
│ │ └── auth.service.ts
│ │
│ ├── prisma/ # Configurações e serviços relacionados ao Prisma ORM
│ │ ├── prisma.module.ts
│ │ └── prisma.service.ts
│ │
│ └── user/ # Módulo de usuário
│ ├── user.controller.ts
│ ├── user.module.ts
│ ├── user.service.ts
│ ├── user.repository.ts
│ └── dto/
│ ├── create-user.dto.ts
│ ├── update-password.dto.ts
│ └── update-user.dto.ts
│
├── app.controller.ts
├── app.module.ts # Módulo principal da aplicação
└── main.ts # Ponto de entrada da aplicação
- Node.js versão 18 ou superior.
- Docker e Docker Compose instalados.
- Clone o Repositório:
git clone https://github.com/elielgomes/api-pontotrack.git
cd api-pontotrack
- Instale as Dependências:
npm install
- Configuração do Banco de Dados:
Utilize o Docker Compose para subir a instância do PostgreSQL:
docker-compose up -d
- Configuração das Variáveis de Ambiente:
Crie um arquivo .env
na raiz do projeto com o seguinte conteúdo:
DATABASE_URL="postgresql://docker:docker@localhost:5432/docker?schema=public"
JWT_SECRET=[Escolha uma chave segura para assinar os JWTs]
PORT=3001
APP_URL=[A URL local do seu front-end]
- Rodar as Migrações do Prisma:
npx prisma migrate dev
- 🚀 Iniciar a Aplicação:
npm run start:dev
Descrição: Verifica se a API está ativa.
Resposta: Código HTTP 200 se a API estiver online.
Descrição: Retorna informações do usuário autenticado.
Autenticação: Requer um JWT no cabeçalho Authorization
.
Resposta: Dados do usuário autenticado.
Descrição: Atualiza informações do usuário.
Autenticação: Requer um JWT no cabeçalho Authorization
.
Corpo da Requisição: Objeto JSON com informações a serem atualizadas.
Resposta: Dados atualizados do usuário.
Descrição: Cria um novo usuário.
Corpo da Requisição: Objeto JSON com os dados do novo usuário.
Resposta: Dados do usuário criado.
Descrição: Deleta um usuário.
Autenticação: Requer um JWT no cabeçalho Authorization
.
Resposta: Confirmação de deleção.
Descrição: Atualiza a senha do usuário.
Autenticação: Requer um JWT no cabeçalho Authorization
.
Corpo da Requisição: Objeto JSON com a nova senha.
Resposta: Confirmação de atualização da senha.
Descrição: Realiza o login do usuário.
Corpo da Requisição: Credenciais de login (email e senha).
Resposta: JWT para autenticação.
- Autenticação JWT: Utiliza JSON Web Tokens para autenticação de usuários. Assegure-se de manter o
JWT_SECRET
seguro e não o exponha em repositórios públicos. - CORS: Configurado para permitir acesso apenas de domínios confiáveis. Ajuste conforme necessário para seu ambiente de produção.
- Variáveis de Ambiente: Nunca exponha variáveis de ambiente sensíveis. Utilize ferramentas de gerenciamento de segredos quando necessário.
version: '3.9'
services:
postgres:
image: postgres
ports:
- "5432:5432"
volumes:
- ./.docker/postgres/:/var/lib/postgresql/data
restart: unless-stopped
environment:
- POSTGRES_USER=docker
- POSTGRES_PASSWORD=docker
- POSTGRES_DB=docker
networks:
- network
pgbouncer:
image: edoburu/pgbouncer
environment:
- DB_USER=docker
- DB_PASSWORD=docker
- DB_HOST=postgres
- DB_NAME=docker
- POOL_MODE=transaction
- ADMIN_USERS=docker
- AUTH_TYPE=plain
ports:
- "6432:5432"
depends_on:
- postgres
networks:
- network
networks:
network:
driver: bridge
- Subir Contêineres:
docker-compose up -d
- Derrubar Contêineres:
docker-compose down
Este projeto está sob a licença MIT. Para mais detalhes, consulte o arquivo LICENSE.
Feito por Eliel Gomes.