- Autenticação JWT e proteção dos endpoints
- CRUD de um catálogo de filmes
- Arquitetura composta de uma aplicação provendo uma API RESTful em JSON, utilize do Redis como seu cache
- TypeScript: 3 meses (JavaScript: 2 anos)
- Nest.js: Sem Experiência
- TypeORM: Sem Experiência com TypeORM especificamente
- Swagger: 1 ano
- Docker: Pouca Experiência Prática
- Redis: Sem Experiência
- PostgreSQL: 2 anos
Deployment realizdo como um WebService no site render.com
- Deployment: Aqui
Observação: A instância quando inativa (devido ao plano gratuito) pode demorar de 1-2 minutos para ficar ativa novamente
Cache realizado utilizando Redis Cloud
- Redis Cloud: Aqui
|-- 📂 dist
|-- 📂 node_modules
|-- 📂 src
|-- 📂 auth
|-- 📂 movies
|-- 📂 users
|-- 📂 test
|-- 📄 .env
|-- 📄 package.json
|-- ...
1. Clone o repositório
git clone https://github.com/GMalvestiti/mks-backend-challenge.git
2. Instale as dependências
npm install
3. Renomeie o arquivo .env.example para .env e preencha os valores das variáveis de ambiente
4. Execute o projeto
npm run start:dev
5. Inicie o container Docker
docker compose up
Banco de dados PostgreSQL criado no site vercel.com
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE TABLE IF NOT EXISTS users (
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email TEXT NOT NULL UNIQUE,
password TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS movies (
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
title VARCHAR(255) NOT NULL,
director VARCHAR(255),
release_year INTEGER
);
- /: Swagger UI
- /users:
POST
para registrar novos usuários - /auth/login:
POST
para autenticar usuários - /movies: CRUD de filmes
GET, POST, PATCH e DELETE
- Comando:
npm run test:e2e
DB_USER=
DB_HOST=
DB_PORT=
DB_PASSWORD=
DB_NAME=
AUTH_SECRET=
REDIS_URL=
REDIS_TTL=