{"id":19623747,"url":"https://github.com/jvitoralb/catalogo-filmes","last_synced_at":"2026-04-12T09:31:58.224Z","repository":{"id":209719248,"uuid":"724663574","full_name":"jvitoralb/catalogo-filmes","owner":"jvitoralb","description":"App built with Docker, Nestjs, Redis, PostgreSQL following REST and TDD.","archived":false,"fork":false,"pushed_at":"2023-12-03T17:18:18.000Z","size":332,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-26T19:38:40.667Z","etag":null,"topics":["docker","jwt","nestjs","postgresql","redis","rest-api","tdd","typescript"],"latest_commit_sha":null,"homepage":"https://catalogo-filmes.onrender.com/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jvitoralb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-28T14:41:35.000Z","updated_at":"2023-11-29T20:36:27.000Z","dependencies_parsed_at":"2023-12-03T18:24:57.712Z","dependency_job_id":null,"html_url":"https://github.com/jvitoralb/catalogo-filmes","commit_stats":null,"previous_names":["jvitoralb/catalogo-filmes"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jvitoralb/catalogo-filmes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jvitoralb%2Fcatalogo-filmes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jvitoralb%2Fcatalogo-filmes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jvitoralb%2Fcatalogo-filmes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jvitoralb%2Fcatalogo-filmes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jvitoralb","download_url":"https://codeload.github.com/jvitoralb/catalogo-filmes/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jvitoralb%2Fcatalogo-filmes/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31710788,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-12T06:22:27.080Z","status":"ssl_error","status_checked_at":"2026-04-12T06:21:52.710Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","jwt","nestjs","postgresql","redis","rest-api","tdd","typescript"],"created_at":"2024-11-11T11:35:19.404Z","updated_at":"2026-04-12T09:31:58.202Z","avatar_url":"https://github.com/jvitoralb.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Catalogo Filmes\n\nUma 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.\n\nA Stack do app consiste em:\n- TypeScript\n- Nest.js\n- TypeORM\n- Swagger\n- Docker\n- Redis\n- PostgreSQL\n\nCom 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.\n\nO desenvolvimento foi feito seguindo uma prática de TDD.\n\nO deploy foi feito na plataforma render utilizando docker hub e pode demorar um pouco pra carregar, mas o serviço está online!  \nPara interagir com a API, acesse o [Swagger UI](https://catalogo-filmes.onrender.com/api)\n\n### API\n\n#### Auth\nAqui é 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.  \nComo 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. \n\n`/auth`:\n- `POST /signup`:\n    - Requer um corpo com email e senha.\n    - Retorna um JWT se o email for único, caso contrário retorna um `BadRequest`.\n- `POST /login`:\n    - Requer um corpo com email e senha.\n    - Retorna um JWT se os dados estiverem corretos, caso contrário retorna um `BadRequest`.\n\n#### Movies\nAqui é onde o usuário tem acesso - quando portando o `Authorization header`, aos catálogo de filmes, podendo bucar, criar atualizar e deletar.\n\n`/movies`:\n- `POST /`:\n    - Requer um corpo com título, descrição e ano.\n    - Retorna um objeto com as informações do filme, caso falte alguma informação retorna um `BadRequest`.\n- `GET /`:\n    - Retorna um arranjo com todos os filmes registrados.\n    - Caso não tenha nada do banco de dados, retorna um aranjo vazio.\n- `GET /:id`:\n    - Retorna o filme que corresponde ao `:id` enviado.\n    - Caso não conste no banco de dados, retorna um `BadRequest`.\n- `PUT /:id`:\n    - Requer um corpo com título, descrição e ano, caso falte alguma informação no corpo retorna um `BadRequest`.\n    - 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`.\n- `DELETE /:id`:\n    - Não retorna corpo algum.\n    - Caso o `:id` não conste no banco de dados, retorna um `BadRequest`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjvitoralb%2Fcatalogo-filmes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjvitoralb%2Fcatalogo-filmes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjvitoralb%2Fcatalogo-filmes/lists"}