{"id":21289998,"url":"https://github.com/guilhermecampellof/trybesmith-backend","last_synced_at":"2026-04-20T13:37:23.800Z","repository":{"id":250031015,"uuid":"833227909","full_name":"GuilhermeCampelloF/trybesmith-backend","owner":"GuilhermeCampelloF","description":"API de uma loja de itens medievais, utilizando Typescript e Sequelize. Projeto desenvolvido durante o curso de formação Full-Stack da Trybe.","archived":false,"fork":false,"pushed_at":"2024-07-24T18:02:42.000Z","size":220,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-22T06:11:39.984Z","etag":null,"topics":["api-rest","jwt","mysql","sequelize","typescript"],"latest_commit_sha":null,"homepage":"","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/GuilhermeCampelloF.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":"2024-07-24T15:52:43.000Z","updated_at":"2024-10-14T17:48:34.000Z","dependencies_parsed_at":"2024-07-24T20:45:08.840Z","dependency_job_id":"7eb19e2e-5dfe-4b55-b81b-e1a258566f33","html_url":"https://github.com/GuilhermeCampelloF/trybesmith-backend","commit_stats":null,"previous_names":["guilhermecampellof/trybesmith-backend"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GuilhermeCampelloF%2Ftrybesmith-backend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GuilhermeCampelloF%2Ftrybesmith-backend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GuilhermeCampelloF%2Ftrybesmith-backend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GuilhermeCampelloF%2Ftrybesmith-backend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GuilhermeCampelloF","download_url":"https://codeload.github.com/GuilhermeCampelloF/trybesmith-backend/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243754094,"owners_count":20342542,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["api-rest","jwt","mysql","sequelize","typescript"],"created_at":"2024-11-21T12:44:19.935Z","updated_at":"2025-10-07T11:54:04.323Z","avatar_url":"https://github.com/GuilhermeCampelloF.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## TRYBESMITH\n\nO projeto Trybesmith foi desenvolvido durante o curso de formação full-stack pela Trybe.\n\nA aplicação consiste em uma loja de itens medievais, como aquelas espadas feitas sob encomenda para uma pessoa específica, no formato de uma _API_, utilizando _Typescript_ e _Sequelize_.\n\nForam desenvolvidas as camadas de _Service_ e _Controllers_ da aplicação, utilizando _JWT_ para autenticar algumas rotas, além de testes para garantir o correto funcionamento delas. A aplicação possui _endpoints_ que dão suporte a operações de criação, leitura e atualização de informações.\n\n## REQUISITOS\n\n- Node.js\n- Docker/Docker Compose\n\n\u003cdetails\u003e\n\u003csummary\u003e🐳 Especificações sobre uso do Docker\u003c/summary\u003e\n\u003cbr\u003e\n\n- Clone o repositório (`git clone`) e instale as depedências com o comando `npm install`\n\n\u003e Após, rode os serviços `app-trybesmith` e `db` com o comando `docker-compose up -d --build`.\n\n- Lembre-se de parar o `mysql` se estiver usando localmente na porta padrão (`3306`), ou adapte, caso queria fazer uso da aplicação em containers\n- Esses serviços irão inicializar um container chamado `trybesmith_api` e outro chamado `trybesmith_db`.\n- A partir daqui você pode rodar o container `trybesmith_api` via CLI ou abri-lo no VS Code.\n\n  \u003e Rode o comando `npm run db:reset` para criar o banco de dados, as tabelas que serão utilizadas e populá-las.\n\n  \u003e Use o comando `docker exec -it trybesmith_api bash` para entrar no container.\n\n  - Ele te dará acesso ao terminal interativo do container criado pelo compose, que está rodando em segundo plano.\n\n- Para visualizar o logs do nodemon em seu terminal use os seguintes comandos:\n\n  \u003e `docker ps`: para visualizar os containers ativos e pegar o `CONTAINER ID`;\n\n  \u003e `docker logs -f \u003cid_do_container\u003e`: para visualizar os logs do seu servidor com nodemon;\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e🖥️ Rodando testes\u003c/summary\u003e\n\u003cbr\u003e\nPara rodar os testes da aplicação localmente, utilize o seguinte comando:\n\n```bash\nnpm run test:local\n```\n\nPara verificar a cobertura do código, utilize o seguinte comando:\n\n```bash\nnpm run test:coverage\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cstrong\u003e🎲 Tabelas\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr\u003e\n\nO banco possui duas tabelas: pessoas usuárias (`users`) e produtos (`products`).\n\nToda a parte de criação do banco de dados, das tabelas, seeders e _models_ do sequelize já está pronta. Você pode verificar toda a configuração e associações nos arquivos dentro do diretório `src/database`.\n\n\u003c/details\u003e\n\n## 📖 HABILIDADES TRABALHADAS 📖\n\n- Desenvolvimento de API seguindo o padrão REST;\n- Interação com banco de dados MySQL;\n- Validação de dados recebidos pela API;\n- _Type Assertion_;\n- Autenticação utilizando JWT;\n- Criação de testes para garantir correta implementação dos endpoints;\n\n## IMPLEMENTAÇÕES REALIZADAS\n\n- É possível ver o desenvolvimento passo-a-passo dos tópicos abaixo através do histórico de commits da aplicação\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eEndpoint para o cadastro de produtos e respectivos testes\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr\u003e\n\n- `POST /products`: Os produtos enviados são salvos na tabela `products` do banco de dados.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eEndpoint para a listagem de produtos e respectivos testes\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr\u003e\n\n- `GET /products`: Retorna os produtos salvos na tabela `products` do banco de dados.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eEndpoint para a listagem de usuários e respectivos testes\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr\u003e\n\n- `GET /users`: Retorna o nome de todas as pessoas usuárias e os `id`s dos seus respectivos produtos;\n- Todos os produtos são itens artesanais, portanto, únicos. Por isso os produtos contêm os `id`s dos seus respectivos donos - que são pessoas usuárias.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eEndpoint para o login de usuários e respectivos testes\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr\u003e\n\n- `POST /login`: Recebe os campos `username` e `password`, que são validados no banco de dados;\n- Um token `JWT` é gerado e retornado caso haja sucesso no _login_, utilizando no _payload_ o `id` e `username`;\n- A requisição enviada ao endpoint é validada, retornando um _status code_ e uma _message_ personalizada a depender do caso.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eValidações para a criação de produtos e respectivos testes\u003c/strong\u003e\u003c/summary\u003e\n\u003cbr\u003e\n\n- Validações referentes ao endpoint `POST /products`.\n\n\u003c/details\u003e\n\n## ©️ DISCLAIMER\n\n\u003cdiv align=\"justify\"\u003e\nCom exceção das alterações destacadas acima no tópico \"implementações realizadas\", \u003cb\u003eTODOS OS DEMAIS ARQUIVOS\u003c/b\u003e foram desenvolvidos e estão sob responsabilidade da TRYBE, incluindo, mas não se limitando aos: models, database, seeders, containers docker e organização dos demais diretórios da aplicação.\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguilhermecampellof%2Ftrybesmith-backend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguilhermecampellof%2Ftrybesmith-backend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguilhermecampellof%2Ftrybesmith-backend/lists"}