Este é um guia para configurar e executar uma API Node.js com TypeScript, usando MongoDB como banco de dados e JWT para autenticação.
- Node.js (versão 14 ou superior)
- TypeScript
- Docker
- Docker Compose
- Postman (para testar a API)
- Acesse nodejs.org
- Baixe a versão LTS
- Execute o instalador e siga as instruções na tela
- Instale o TypeScript globalmente:
npm install -g typescript
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs
npm install -g typescript
# Usando Homebrew
brew install node
npm install -g typescript
- Baixe o Docker Desktop
- Execute o instalador e siga as instruções
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
-
Clone este repositório
-
Configure os arquivos de ambiente:
a. Copie o arquivo
app.env.example
paraapp.env
:cp app.env.example app.env
b. Copie o arquivo
mongo.env.example
paramongo.env
:cp mongo.env.example mongo.env
-
Edite os arquivos com suas configurações:
app.env
:DB_HOST=mongodb DB_PORT=27017 DB_NAME=meubancodedados MONGODB_USERNAME=usuario MONGODB_PASSWORD=senha SECRET=minhachavesecretajwt
mongo.env
:MONGO_INITDB_ROOT_USERNAME=usuario MONGO_INITDB_ROOT_PASSWORD=senha MONGO_INITDB_DATABASE=meubancodedados
-
Instale as dependências do projeto:
npm install
Para compilar o projeto TypeScript para JavaScript:
npm run build
Isso irá gerar os arquivos JavaScript na pasta dist/
.
Para executar o projeto em modo de desenvolvimento com recarga automática:
npm run dev
-
O projeto já contém um arquivo
docker-compose.yaml
configurado com dois serviços:- MongoDB: banco de dados
- API: aplicação Node.js com TypeScript
-
Para iniciar a aplicação, execute:
docker-compose up -d
-
Para verificar os logs da aplicação:
docker-compose logs -f api
-
Para parar a aplicação:
docker-compose down
-
Compile o projeto TypeScript:
npm run build
-
Inicie o MongoDB localmente ou use um serviço hospedado
-
Inicie o servidor:
npm start
- Abra o Postman
- Clique em "Import" na barra superior
- Arraste o arquivo
API_NODEJS_MONGODB_JWT.postman_collection.json
ou navegue até ele - Clique em "Import"
Certifique-se de configurar as seguintes variáveis de ambiente no Postman:
base_url
: http://localhost:3000 (ou a URL onde sua API está hospedada)
A coleção inclui testes automatizados para cada requisição. Para executá-los:
- Clique com o botão direito na coleção importada
- Selecione "Run collection"
- Configure as iterações e outras opções, se necessário
- Clique em "Run"
-
Cadastro de Usuário
- Método: POST
- Endpoint:
{{base_url}}/api/auth/signup
- Body:
{ "username": "usuarioteste", "email": "usuario@teste.com", "password": "senha123" }
-
Login
- Método: POST
- Endpoint:
{{base_url}}/api/auth/signin
- Body:
{ "username": "usuarioteste", "password": "senha123" }
-
Rota Pública
- Método: GET
- Endpoint:
{{base_url}}/api/test/all
- Descrição: Acessível para todos os usuários, sem autenticação
-
Rota de Usuário (requer autenticação)
- Método: GET
- Endpoint:
{{base_url}}/api/test/user
- Header:
x-access-token: {{auth_token}}
- Descrição: Acessível apenas para usuários autenticados
-
Rota de Moderador (requer autenticação + papel de moderador)
- Método: GET
- Endpoint:
{{base_url}}/api/test/mod
- Header:
x-access-token: {{auth_token}}
- Descrição: Acessível apenas para moderadores
-
Rota de Administrador (requer autenticação + papel de administrador)
- Método: GET
- Endpoint:
{{base_url}}/api/test/admin
- Header:
x-access-token: {{auth_token}}
- Descrição: Acessível apenas para administradores
src/
├── config/ # Configurações da aplicação
├── controllers/ # Controladores da API
├── middlewares/ # Middlewares personalizados
├── models/ # Modelos do MongoDB
│ └── interfaces/ # Interfaces TypeScript para os modelos
├── routes/ # Rotas da API
└── server.ts # Arquivo principal da aplicação
dist/ # Código JavaScript compilado
- Execute "Cadastro de Usuário" para criar um novo usuário
- Execute "Login" para obter um token JWT
- Teste as diferentes rotas com níveis de acesso:
/api/test/all
(acesso público)/api/test/user
(requer autenticação)/api/test/mod
(requer papel de moderador)/api/test/admin
(requer papel de administrador)
- Verifique se as credenciais estão corretas no arquivo
app.env
- Verifique se o serviço do MongoDB está rodando
- Verifique se o token JWT está sendo enviado corretamente no header
x-access-token
- Verifique se a chave secreta (SECRET) está configurada corretamente no arquivo
app.env
- Verifique se todas as dependências de tipos estão instaladas:
npm install --save-dev @types/express @types/mongoose @types/node @types/bcryptjs @types/jsonwebtoken @types/cors
- Verifique a configuração no arquivo
tsconfig.json
Para contribuir com este projeto, por favor:
- Faça um fork do repositório
- Crie um branch para sua feature (
git checkout -b feature/nova-feature
) - Faça commit das suas alterações (
git commit -m 'Adiciona nova feature'
) - Envie para o branch (
git push origin feature/nova-feature
) - Abra um Pull Request
Este projeto está licenciado sob a licença MIT.