{"id":20299328,"url":"https://github.com/samuelrocha91/trybesmith","last_synced_at":"2025-06-15T12:34:11.452Z","repository":{"id":196402869,"uuid":"695684982","full_name":"SamuelRocha91/TrybeSmith","owner":"SamuelRocha91","description":"Este projeto consistiu na criação de uma api de manipulação de dados de itens medievais, utilizando Node,Typescript e Sequelize.","archived":false,"fork":false,"pushed_at":"2024-10-06T13:59:21.000Z","size":407,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-09T00:49:39.517Z","etag":null,"topics":["bcryptjs","express","jsonwebtoken","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/SamuelRocha91.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}},"created_at":"2023-09-23T22:22:43.000Z","updated_at":"2024-10-07T08:02:30.000Z","dependencies_parsed_at":null,"dependency_job_id":"2921f735-a738-494e-8dfb-60f566c55cd5","html_url":"https://github.com/SamuelRocha91/TrybeSmith","commit_stats":null,"previous_names":["samuelrocha91/trybesmith"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SamuelRocha91%2FTrybeSmith","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SamuelRocha91%2FTrybeSmith/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SamuelRocha91%2FTrybeSmith/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SamuelRocha91%2FTrybeSmith/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SamuelRocha91","download_url":"https://codeload.github.com/SamuelRocha91/TrybeSmith/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233876725,"owners_count":18744248,"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":["bcryptjs","express","jsonwebtoken","mysql","sequelize","typescript"],"created_at":"2024-11-14T16:14:16.492Z","updated_at":"2025-01-14T10:20:40.433Z","avatar_url":"https://github.com/SamuelRocha91.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \u003cimg src=\"https://cdn-icons-png.flaticon.com/128/5968/5968322.png\" alt=\"Node Logo\" width=\"52\" height=\"30\" /\u003e Projeto Trybe Smith \u003cimg src=\"https://cdn-icons-png.flaticon.com/128/5968/5968322.png\" alt=\"Node Logo\" width=\"52\" height=\"30\" /\u003e\n\n## 🌐 [![Português](https://img.shields.io/badge/Português-green)](https://github.com/SamuelRocha91/TrybeSmith/blob/main/README.md) [![Español](https://img.shields.io/badge/Español-yellow)](https://github.com/SamuelRocha91/TrybeSmith/blob/main/README_es.md) [![English](https://img.shields.io/badge/English-blue)](https://github.com/SamuelRocha91/TrybeSmith/blob/main/README_en.md) [![Русский](https://img.shields.io/badge/Русский-lightgrey)](https://github.com/SamuelRocha91/TrybeSmith/blob/main/README_ru.md) [![中文](https://img.shields.io/badge/中文-red)](https://github.com/SamuelRocha91/TrybeSmith/blob/main/README_ch.md) [![العربية](https://img.shields.io/badge/العربية-orange)](https://github.com/SamuelRocha91/TrybeSmith/blob/main/README_ar.md)\n\n![Preview da aplicação](./assets/trybeSmith.png)\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003ch2\u003e📜 Descrição\u003c/h2\u003e\u003c/summary\u003e\n\n  Trata-se de um projeto avaliativo desenvolvido no módulo de BackEnd do curso de Desenvolvimento Web da Trybe. O projeto envolveu o uso de **Typescript**, **Sequelize** e **JWT**. Durante o desenvolvimento, diversas competências foram aprimoradas:\n\n  - Manipulação de testes\n  - Uso da arquitetura MSC (Model-Service-Controller)\n  - Criação de rotas para criação, leitura e atualização de informações\n  - Autenticação de rotas\n\n  Este projeto consistiu na criação de uma loja de itens medievais utilizando **Typescript** e **Sequelize**. O foco principal foi no desenvolvimento das camadas de **Service** e **Controllers**.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003ch2\u003e🛠️ Tecnologias Utilizadas\u003c/h2\u003e\u003c/summary\u003e\n\n  - **Node.js**\n  - **Express**\n  - **Typescript**\n  - **Sequelize**\n  - **MySQL**\n  - **JWT (JSON Web Token)**\n  - **Docker e Docker Compose**\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003ch2\u003e📂 Estrutura do Projeto\u003c/h2\u003e\u003c/summary\u003e\n\n  O projeto está estruturado de acordo com a arquitetura MSC, onde as responsabilidades são separadas entre Model, Service e Controller. A seguir, estão algumas das principais rotas implementadas:\n\n  ### Rotas\n\n  - **POST /login**: Realiza o login do usuário.\n  - **POST /products**: Adiciona um novo produto (valida nome e preço).\n  - **GET /products**: Retorna todos os produtos cadastrados.\n  - **GET /orders**: Retorna todos os pedidos cadastrados.\n  - **POST /orders**: Cria um novo pedido (valida JWT, ID do usuário e ID do produto).\n\n  ### Middlewares\n\n  O projeto utiliza diversos middlewares para validação, incluindo:\n\n  - `validateProducts`: Valida os dados do produto (nome e preço).\n  - `validateUser`: Valida os dados do usuário.\n  - `validateProductById`: Valida a existência do produto pelo ID.\n  - `validateJWT`: Valida o token JWT para autenticação.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003ch2\u003e🚀 Execução do Projeto\u003c/h2\u003e\u003c/summary\u003e\n\n  Para executar o projeto, siga os passos abaixo:\n\n  ### Pré-requisitos\n\n  - Ter o **Docker** e **Docker Compose** instalados.\n  - Ter o **Node.js** instalado (opcional, se você deseja executar localmente sem Docker).\n\n  ### Passos para Execução\n\n  1. Clone o repositório:\n     ```bash\n     git clone https://github.com/seu_usuario/trybe-smith.git\n     cd trybe-smith\n     ```\n\n  2. Crie um arquivo `.env` na raiz do projeto com as seguintes variáveis de ambiente:\n     ```plaintext\n     DB_USER=root\n     DB_PASSWORD=password\n     DB_HOST=db\n     DB_PORT=3306\n     DB_NAME=Trybesmith\n     JWT_SECRET=secret\n     ```\n\n  3. Execute o Docker Compose para construir e iniciar os containers:\n     ```bash\n     docker-compose up --build\n     ```\n\n  4. Acesse a API no seu navegador ou ferramenta de API (como Postman) em `http://localhost:3001`.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003ch2\u003e🔗 Outros projetos\u003c/h2\u003e\u003c/summary\u003e\n\n  - ⚽ [Typescript FootBall API](https://github.com/SamuelRocha91/trybeFutebolClube)\n  - 🐉 [Trybers and Dragons](https://github.com/SamuelRocha91/trybeAndDragons)\n  - 🪧 [Blogs Api](https://github.com/SamuelRocha91/BlogsApi)\n\n\u003c/details\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamuelrocha91%2Ftrybesmith","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsamuelrocha91%2Ftrybesmith","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamuelrocha91%2Ftrybesmith/lists"}