Skip to content

vicentevendramin/trybesmith

Repository files navigation

🛠️ TrybeSmith

O TrybeSmith é uma API RESTful que simula o gerenciamento de uma loja de itens medievais. O projeto inclui operações de criação, leitura e atualização de informações, utilizando autenticação JWT para proteger algumas rotas. Além disso, testes foram desenvolvidos para garantir o correto funcionamento das funcionalidades implementadas.


📝 Sobre o Projeto

Este projeto foi desenvolvido como parte do curso da Trybe, com o objetivo de consolidar conhecimentos sobre:

  • Arquitetura em Camadas (MSC): Divisão do código em camadas de responsabilidade bem definidas.
  • Autenticação com JWT: Proteção de rotas sensíveis com tokens.
  • Testes Automatizados: Garantia de qualidade e funcionamento correto das camadas Service e Controller.
  • Criação e Manipulação de Banco de Dados: Utilização de migrações e seeders para modelagem e preenchimento inicial.

🚀 Funcionalidades

  • Produtos:

    • Cadastro de novos produtos.
    • Listagem de todos os produtos.
    • Validações para garantir a consistência dos dados.
  • Pedidos:

    • Listagem de todos os pedidos registrados.
  • Login:

    • Autenticação de usuários com JWT.

📂 Estrutura do Projeto

O projeto segue uma organização modular para facilitar a manutenção e a escalabilidade:

📁 __tests__/                  # Testes unitários
   ├── assets/                # Mocks e utilitários para testes
   ├── 01-create-products.test.ts
   ├── 02-list-product.test.ts
   ├── 03-list-orders.test.ts
   ├── 04-login.test.ts
   ├── 05-product-validations.test.ts
   └── 06-create-order.test.ts

📁 src/                        # Código-fonte principal
   ├── controllers/            # Camada Controller
   │   ├── login.controller.ts
   │   ├── order.controller.ts
   │   └── product.controller.ts
   │
   ├── database/               # Configuração do banco de dados
   │   ├── config/
   │   │   └── database.ts     # Conexão com o banco de dados
   │   ├── migrations/         # Arquivos de migração
   │   │   ├── 01-create-users.ts
   │   │   ├── 02-create-orders.ts
   │   │   └── 03-create-products.ts
   │   ├── models/         # Arquivos das tabelas do banco de dados
   │   │   ├── index.ts
   │   │   ├── order.model.ts
   │   │   ├── product.model.ts
   │   │   └── user.model.ts
   │   └── seeders/            # Dados iniciais (seeders)
   │       ├── 1-users.ts
   │       ├── 2-orders.ts
   │       └── 3-products.ts
   │
   ├── routers/                # Definição de rotas
   │   ├── login.router.ts
   │   ├── order.router.ts
   │   └── product.router.ts
   │
   ├── services/               # Camada Service
   │   ├── login.service.ts
   │   ├── order.service.ts
   │   └── product.service.ts
   │
   ├── types/                  # Definição de tipos
   │   ├── Order.ts
   │   ├── Product.ts
   │   ├── ServiceResponse.ts
   │   ├── Token.ts
   │   └── User.ts
   │
   ├── utils/                  # Funções utilitárias
   │   ├── generateJWT.ts      # Geração de tokens JWT
   │   └── mapStatusHTTP.ts    # Mapeamento de status HTTP
   │
   ├── app.ts                  # Configuração da aplicação
   └── server.ts               # Inicialização do servidor

🛠️ Como Rodar o Projeto

  1. Clone este repositório:

    git clone https://github.com/vicentevendramin/trybesmith.git
    cd trybesmith
  2. Instale as dependências:

    npm install
  3. Configure o banco de dados MySQL:

    • Certifique-se de que o MySQL está instalado e rodando.
    • Configure o arquivo src/database/config/database.ts com as credenciais do seu banco.
  4. Execute o servidor:

    npm start
  5. Para rodar os testes:

    npm run test

🔧 Tecnologias Utilizadas

  • Node.js
  • TypeScript
  • Express.js
  • MySQL
  • JWT (Json Web Token)
  • Mocha, Chai e Sinon (para testes)

About

API RESTful para gerenciamento de uma loja de itens medievais, desenvolvida com Node.js, TypeScript e MySQL.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages