Esta é uma API de Marketplace desenvolvida para o desafio PS Desenvolvedor Back-End - 2025 da UX-Software.
- NestJS: Framework progressivo Node.js para a construção de aplicações server-side eficientes e escaláveis.
- TypeScript: Linguagem de programação que adiciona tipagem estática ao JavaScript.
- Drizzle ORM: ORM moderno e leve para TypeScript.
- PostgreSQL: Sistema de gerenciamento de banco de dados relacional.
- Redis: Servidor de estrutura de dados em memória, usado para cache e mensagens.
- JWT (JSON Web Tokens): Para autenticação e autorização.
- Bcrypt: Para hash de senhas.
- Docker Compose: Para orquestração de serviços de banco de dados e cache.
- Zod: Biblioteca de validação de esquemas TypeScript-first.
- ESLint: Para manter a consistência do código.
- Jest: Framework de testes.
- Swagger: Documentação da API.
Siga os passos abaixo para configurar e executar o projeto localmente.
Certifique-se de ter as seguintes ferramentas instaladas:
- Node.js (versão 18 ou superior)
- npm (gerenciador de pacotes do Node.js)
- Docker e Docker Compose
Crie um arquivo .env na raiz do projeto, baseado no .env.example, e preencha as variáveis de ambiente necessárias. As variáveis mínimas esperadas são:
DATABASE_URL="postgresql://user:password@localhost:5432/database_name"
REDIS_HOST="localhost"
REDIS_PORT=6379
JWT_SECRET="your_jwt_secret"
- Clone o repositório:
git clone [https://github.com/rayzen2002/ux-desafio-backend] cd ux-desafio - Instale as dependências:
npm install
npm install
npm run start:dev
Certifique-se de que o Docker esteja em execução. Em seguida, inicie os serviços de banco de dados e Redis:
Este comando irá iniciar um contêiner PostgreSQL e um contêiner Redis.
npm run services:upEsses comandos servem para pausar ou derrubar os serviços
npm run services:stop
npm run services:downApós os serviços estarem em execução, execute as migrações do banco de dados para criar as tabelas necessárias:
npm run db:migrate Use esse comando para ter acesso ao banco de dados atráves da UI do drizzle studio
npm run db:studio Para iniciar a aplicação em modo de desenvolvimento (com hot-reload):
npm run start:devA API estará disponível em http://localhost:3000 (ou a porta configurada).
Documentação da API feita com Swagger dispinível em http://localhost:3000/api/docs
Para executar os testes:
# Executar todos os testes
npm testnpm run test:watch