Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jvitoralb/catalogo-filmes
App built with Docker, Nestjs, Redis, PostgreSQL following REST and TDD.
https://github.com/jvitoralb/catalogo-filmes
docker jwt nestjs postgresql redis rest-api tdd typescript
Last synced: about 1 month ago
JSON representation
App built with Docker, Nestjs, Redis, PostgreSQL following REST and TDD.
- Host: GitHub
- URL: https://github.com/jvitoralb/catalogo-filmes
- Owner: jvitoralb
- Created: 2023-11-28T14:41:35.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2023-12-03T17:18:18.000Z (about 1 year ago)
- Last Synced: 2024-11-11T11:47:40.823Z (3 months ago)
- Topics: docker, jwt, nestjs, postgresql, redis, rest-api, tdd, typescript
- Language: TypeScript
- Homepage: https://catalogo-filmes.onrender.com/
- Size: 324 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Catalogo Filmes
Uma REST API que faz o controle de um catálogo de filmes, onde esse catálogo só pode ser acessado caso o usuário seja autenticado. Esse projeto foi construido como parte de um processo seletivo.
A Stack do app consiste em:
- TypeScript
- Nest.js
- TypeORM
- Swagger
- Docker
- Redis
- PostgreSQLCom a exceção de Docker - `6m de exp.`, TypeScript - `2 anos de exp.` , PostgreSQL - `1 ano de exp.` e Swagger - `6m de exp.`, essa foi a minha primeira vez trabalhando com essas tecnologias, e posso dizer que gostei bastante, especialmente do framework Nestjs, que com certeza vou aprofundar os estudos sobre.
O desenvolvimento foi feito seguindo uma prática de TDD.
O deploy foi feito na plataforma render utilizando docker hub e pode demorar um pouco pra carregar, mas o serviço está online!
Para interagir com a API, acesse o [Swagger UI](https://catalogo-filmes.onrender.com/api)### API
#### Auth
Aqui é onde o usuário faz a sua autenticação, que se dá através da utilização de `JWT` junto à 2 chaves `RSA`, uma pública e outra privada.
Como o servico de Auth tem contato o serviço User, é por aqui que acontece o registo - `signup` do usuário, ou o acesso - `login` à sua conta.`/auth`:
- `POST /signup`:
- Requer um corpo com email e senha.
- Retorna um JWT se o email for único, caso contrário retorna um `BadRequest`.
- `POST /login`:
- Requer um corpo com email e senha.
- Retorna um JWT se os dados estiverem corretos, caso contrário retorna um `BadRequest`.#### Movies
Aqui é onde o usuário tem acesso - quando portando o `Authorization header`, aos catálogo de filmes, podendo bucar, criar atualizar e deletar.`/movies`:
- `POST /`:
- Requer um corpo com título, descrição e ano.
- Retorna um objeto com as informações do filme, caso falte alguma informação retorna um `BadRequest`.
- `GET /`:
- Retorna um arranjo com todos os filmes registrados.
- Caso não tenha nada do banco de dados, retorna um aranjo vazio.
- `GET /:id`:
- Retorna o filme que corresponde ao `:id` enviado.
- Caso não conste no banco de dados, retorna um `BadRequest`.
- `PUT /:id`:
- Requer um corpo com título, descrição e ano, caso falte alguma informação no corpo retorna um `BadRequest`.
- Retorna o filme que corresponde ao `:id` após as mudanças, caso o `:id` não conste no banco de dados, retorna um `BadRequest`.
- `DELETE /:id`:
- Não retorna corpo algum.
- Caso o `:id` não conste no banco de dados, retorna um `BadRequest`.