{"id":21862106,"url":"https://github.com/igorbrizack/trybesmithts-api","last_synced_at":"2026-04-04T21:33:54.811Z","repository":{"id":115372974,"uuid":"548356080","full_name":"IgorBrizack/TrybeSmithTS-Api","owner":"IgorBrizack","description":"API MSC utilizando TypeScript","archived":false,"fork":false,"pushed_at":"2022-10-09T12:53:08.000Z","size":182,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-21T20:22:45.119Z","etag":null,"topics":["api-rest","docker","javascript","joi-validation","jwt-authentication","msc","mysql","nodejs","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/IgorBrizack.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":"2022-10-09T11:59:54.000Z","updated_at":"2022-10-09T12:55:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"788cb0f9-2bab-4a02-bd5d-2f0abb8af982","html_url":"https://github.com/IgorBrizack/TrybeSmithTS-Api","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/IgorBrizack/TrybeSmithTS-Api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IgorBrizack%2FTrybeSmithTS-Api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IgorBrizack%2FTrybeSmithTS-Api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IgorBrizack%2FTrybeSmithTS-Api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IgorBrizack%2FTrybeSmithTS-Api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IgorBrizack","download_url":"https://codeload.github.com/IgorBrizack/TrybeSmithTS-Api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IgorBrizack%2FTrybeSmithTS-Api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31415111,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T20:09:54.854Z","status":"ssl_error","status_checked_at":"2026-04-04T20:09:44.350Z","response_time":60,"last_error":"SSL_read: 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":["api-rest","docker","javascript","joi-validation","jwt-authentication","msc","mysql","nodejs","typescript"],"created_at":"2024-11-28T03:13:50.214Z","updated_at":"2026-04-04T21:33:54.405Z","avatar_url":"https://github.com/IgorBrizack.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📝 Projeto TrybeSmith Api\n\n## 📄 Sobre\n\nFoi desenvolvido uma API RESTful que interage com um banco de dados SQL e para desenvolvimento foi utilizado como linguagem o TypeScript!\n\n## 📋 Execute o projeto em sua máquina\n\nClone o repositório:\n\n```\ngit@github.com:IgorBrizack/TrybeSmithTS-Api.git\n```\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cstrong\u003e🐳 Rodando no Docker vs Localmente\u003c/strong\u003e\u003c/summary\u003e\u003cbr /\u003e\n  \n  ## Com Docker\n \n\n  \u003e Rode os serviços `node` e `db` com o comando `docker-compose up -d`.\n  - Lembre-se de parar o `mysql` se estiver usando localmente na porta padrão (`3306`), ou adapte, caso queira fazer uso da aplicação em containers\n  - Esses serviços irão inicializar um container chamado `trybesmith` e outro chamado `trybesmith_db`.\n  - A partir daqui você pode rodar o container `trybesmith` via CLI ou abri-lo no VS Code.\n\n  \u003e Use o comando `docker exec -it trybesmith bash`.\n  - Ele te dará acesso ao terminal interativo do container criado pelo compose, que está rodando em segundo plano.\n\n  \u003e Instale as dependências [**Caso existam**] com `npm install`\n\n  ⚠ Atenção ⚠ Caso opte por utilizar o Docker, **TODOS** os comandos disponíveis no `package.json` (npm start, npm test, npm run dev, ...) devem ser executados **DENTRO** do container, ou seja, no terminal que aparece após a execução do comando `docker exec` citado acima. \n\n  ⚠ Atenção ⚠ O **git** dentro do container não vem configurado com suas credenciais. Ou faça os commits fora do container, ou configure as suas credenciais do git dentro do container.\n\n  ⚠ Atenção ⚠ Não rode o comando npm audit fix! Ele atualiza várias dependências do projeto, e essa atualização gera conflitos com o avaliador.\n\n   ⚠ Atenção ⚠ Caso você esteja usando macOS e ao executar o `docker-compose up -d` se depare com o seguinte erro:\n\n  ~~~bash\n  The Compose file './docker-compose.yml' is invalid because:\n  Unsupported config option for services.db: 'platform'\n  Unsupported config option for services.node: 'platform'\n  ~~~\n\n\u003e Foram encontradas 2 possíveis soluções para este problema:\n\u003e 1. Você pode adicionar manualmente a option `platform: linux/amd64` no service do banco de dados no arquivo docker-compose.yml do projeto, mas essa é uma solução local e você deverá reproduzir isso para os outros projetos.\n\u003e 2. Você pode adicionar manualmente nos arquivos .bashrc, .zshenv ou .zshrc do seu computador a linha `export DOCKER_DEFAULT_PLATFORM=linux/amd64`, essa é uma solução global.\n\u003e As soluções foram com base [nesta fonte](https://stackoverflow.com/a/69636473).\n\n\n\n✨ **Dica:** A extensão `Remote - Containers` (que estará na seção de extensões recomendadas do VS Code) é indicada para que você possa desenvolver sua aplicação no container Docker direto no VS Code, como você faz com seus arquivos locais.\n\n\u003cimg src=\"images/remote-container.png\" width=\"800px\" \u003e\n\n---\n  \n  ## Sem Docker\n  \n  \u003e Instale as dependências [**Caso existam**] com `npm install`\n  \n  ⚠ Atenção ⚠ Não rode o comando npm audit fix! Ele atualiza várias dependências do projeto, e essa atualização gera conflitos com o avaliador.\n\n  ✨ **Dica:** Para rodar o projeto desta forma, obrigatoriamente você deve ter o `node` instalado em seu computador.\n\n\u003c/details\u003e\n\n## 👨🏻‍💻 Habilidades\n\n- Endpoints que estão conectados com o banco de dados seguindo os princípios do REST;\n- Criar uma API RESTful utilizando a arquitetura MSC (Model-Service-Controller);\n- Aplicação Back-end em Node.js;\n- Desenvolver aplicação utilizando o TypeScript;\n- Validar dados das requisições com a biblioteca Joi.\n\n## 🔎 Rotas\n\n### Login\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cstrong\u003ePOST /login\u003c/strong\u003e\u003c/summary\u003e\n  \u003c/br\u003e\n  • Se o login for feito com sucesso retorna um token para o usuário.\n  \u003c/br\u003e\n  • O endpoint deve receber a seguinte estrutura:\n  \n```json\n  {\n    \"username\": \"string\",\n    \"password\": \"string\"\n  }\n```\n  \n\u003c/details\u003e\n\n### User\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cstrong\u003ePOST /user\u003c/strong\u003e\u003c/summary\u003e\n  \u003c/br\u003e\n  • Cadastra um novo usuário, permitindo apenas um email válido, gerando um token.\n  \u003c/br\u003e \n  • O endpoint deve receber a seguinte estrutura:\n  \n  ```json\n  { \n    \"username\": \"MAX\",\n    \"classe\": \"swordsman\",\n    \"level\": 10,\n    \"password\": \"SavingPeople\"\n  }\n```\n  \n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cstrong\u003eGET /user\u003c/strong\u003e\u003c/summary\u003e\n  \u003c/br\u003e\n  • Traz todos users do banco de dados.\n  \u003c/br\u003e\n  • Valida o token - req.authorization.\n\u003c/details\u003e\n\n### Login\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cstrong\u003ePOST /Login\u003c/strong\u003e\u003c/summary\u003e\n  \u003c/br\u003e\n  • Faz o login caso encontre um úsuario e senha válidos.\n  \u003c/br\u003e\n  • Retorna um token, caso seja feito o login..\n  \u003c/br\u003e\n  • O endpoint deve receber a seguinte estrutura:\n  \n```json\n  {\n    \"username\": \"string\",\n    \"password\": \"string\"\n  }\n```\n\n\u003c/details\u003e\n\n### Products\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cstrong\u003eGET /products\u003c/strong\u003e\u003c/summary\u003e\n  \u003c/br\u003e\n  • Traz todos os produtos encontrado no banco de dados.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cstrong\u003ePOST /products\u003c/strong\u003e\u003c/summary\u003e\n  \u003c/br\u003e\n  • Inseri um produto ao banco de dados.\n  \u003c/br\u003e\n  • O endpoint deve receber a seguinte estrutura:\n  \n  ```json\n    {\n      \"name\": \"Espada longa\",\n      \"amount\": \"30 peças de ouro\"\n    }\n  ```\n  \n\u003c/details\u003e\n\n### Orders\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cstrong\u003eGET /orders\u003c/strong\u003e\u003c/summary\u003e\n  \u003c/br\u003e\n  • Traz todas as ordens encontradas no banco de dados.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cstrong\u003ePOST /orders\u003c/strong\u003e\u003c/summary\u003e\n  \u003c/br\u003e\n  • Inseri uma nova ordem ao banco de dados.\n  \u003c/br\u003e\n  • O endpoint deve receber a seguinte estrutura:\n  \n```json\n  {\n    \"productsIds\": [1, 2]\n  }\n```\n\n\u003c/details\u003e\n\n\n\n## 🛠️ Ferramentas \u0026 Metodologias Utilizadas\n\n- [Node.js](https://nodejs.org/en/);\n- [Express.js](https://expressjs.com/);\n- [MYSQL](https://www.mysql.com/);\n- [SQL](https://www.w3schools.com/sql/);\n- [mysql2](https://www.npmjs.com/package/mysql2);\n- [JWT(Autenticação)](https://jwt.io/);\n- [Joi](https://joi.dev/api/?v=17.6.0);\n- [Docker](https://www.docker.com/);\n- JavaScript ES6+;\n- [TypeScript](https://www.typescriptlang.org/);\n\n---\n⌨️ desenvolvido por [Igor Brizack](https://www.linkedin.com/in/igor-brizack/) 😄\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figorbrizack%2Ftrybesmithts-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Figorbrizack%2Ftrybesmithts-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figorbrizack%2Ftrybesmithts-api/lists"}