Este projeto é uma API construÃda com NestJS para gerenciar clientes e produtos favoritos, utilizando PostgreSQL como banco de dados.
- Requisitos
- Tecnologias
- Estrutura do Projeto
- Configuração do Ambiente
- Autenticação JWT
- Rodando o Projeto
- Scripts de Banco de Dados
- Utilizando Docker
- Testes
- Documentação da API
- Node.js >= 18.x
- pnpm >= 8.x
- Docker (opcional, recomendado para banco de dados)
src/customer
: Módulo de clientessrc/favorite
: Módulo de favoritossrc/shared
: Módulos e utilitários compartilhadostest
: Scripts e utilitários para configuração e execução dos testes
-
Copie o arquivo
.env.example
para.env
e configure as variáveis de ambiente necessárias. Para configurações JWT, veja na sessão Autenticação JWT -
Instale as dependências:
pnpm install
A API utiliza autenticação baseada em JWT (JSON Web Token) com um par de chaves assimétricas (RSA) para maior segurança. É necessário gerar uma chave privada e uma chave pública para assinar e validar os tokens.
Tip
Ao copiar o arquivo .env.example
para seu ambiente de testes, ele já vem com chaves prontas para serem usadas apenas em testes. Não use essas chaves em produção.
Execute os comandos abaixo no terminal para criar as chaves:
# Gerar chave privada (private.pem)
openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048
# Gerar chave pública (public.pem) a partir da privada
openssl rsa -pubout -in private.pem -out public.pem
Para utilizar as chaves como variáveis de ambiente, converta-as para Base64. Para facilitar use serviços da web, como: Base64 Encode
# .env
JWT_PRIVATE_KEY="PRIVATE_TOKEN_BASE64"
JWT_PUBLIC_KEY="PUBLIC_TOKEN_BASE64"
Essas variáveis serão utilizadas pela aplicação para assinar e validar os tokens JWT.
Lembre-se de estar com o banco de dados rodando. Veja em: Utilizando Docker
# Rodar as migrations e o projeto em desenvolvimento
pnpm dev
Todas migrations
necessárias serão adicionadas ao banco de dados, e a aplicação estará disponÃvel na porta definida em PORT
(padrão: 3000).
O projeto utiliza TypeORM para gerenciamento de migrations.
pnpm customer:db:generate
pnpm customer:db:run
pnpm favorite:db:generate
pnpm favorite:db:run
O projeto inclui um arquivo docker-compose.yaml
para facilitar o uso do banco PostgreSQL.
docker-compose up -d
Certifique-se de que a variável DATABASE_URL
no .env
está apontando para o banco do Docker.
pnpm test:e2e
Após rodar o projeto, acesse a documentação Swagger
em:
http://localhost:3000/docs
Gabriel Duarte - Software Developer Backend
[email protected] - LinkedIn