/trybesmith

Uma loja de itens medievais, no formato de uma API, utilizando Typescript.

Primary LanguageTypeScript

TrybeSmith

Uma loja de itens medievais, no formato de uma API, utilizando Typescript.


Imagens Exemplo

login trybesmith

produtos trybesmith


Instalação

🐳 Rodando com Docker

Rode os serviços node e db com o comando docker-compose up -d.

  • 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
  • Esses serviços irão inicializar um container chamado trybesmith e outro chamado trybesmith_db.
  • A partir daqui você pode rodar o container trybesmith via CLI ou abri-lo no VS Code.

Use o comando docker exec -it trybesmith bash.

  • Ele te dará acesso ao terminal interativo do container criado pelo compose, que está rodando em segundo plano.

Instale as dependências com npm install

npm run dev

⚠ 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.

⚠ Atenção ⚠ Caso você esteja usando macOS e ao executar o docker-compose up -d se depare com o seguinte erro:

The Compose file './docker-compose.yml' is invalid because:
Unsupported config option for services.db: 'platform'
Unsupported config option for services.node: 'platform'

Foram encontradas 2 possíveis soluções para este problema:

  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.
  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. As soluções foram com base nesta fonte.

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.


🖥️ Rodando na máquina

Configurar o arquivo .evn.example com sua conexão ao MySQL.

Instale as dependências com npm install

npm run dev

Dica: Para rodar o projeto desta forma, obrigatoriamente você deve ter o node instalado em seu computador. ✨ Dica: versão do node precisa estar na versão 16.

Rodar Lint

npm run lint


Rotas

Produtos

POST /products
  • Cadastrar um produto
  • O corpo da requisição deverá seguir o formato abaixo:
   {
    "id": 1,
    "name": "Poção de cura",
    "amount": "20 gold",
  }
 
GET /products
  • Lista todos os produtos

Usuário

POST /users
  • Cadastrar usuário
  • O endpoint deve receber a seguinte estrutura:
{ 
  "username": "MAX",
  "classe": "swordsman",
  "level": 10,
  "password": "SavingPeople"
}
 

Pedidos

GET /orders
  • Listar todos os pedidos
POST /orders
  • Listar todos os pedidos
  • O endpoint deve receber a seguinte estrutura:
 {
   "productsIds": [1, 2]
 }
  • Deve estar logado com um token ativo: (exemplo de token)
 {
   "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXlsb2FkIjp7ImlkIjo1LCJkaXNwbGF5TmFtZSI6InVzdWFyaW8gZGUgdGVzdGUiLCJlbWFpbCI6InRlc3RlQGVtYWlsLmNvbSIsImltYWdlIjoibnVsbCJ9LCJpYXQiOjE2MjAyNDQxODcsImV4cCI6MTYyMDY3NjE4N30.Roc4byj6mYakYqd9LTCozU1hd9k_Vw5IWKGL4hcCVG8"
 }

Login

POST /login
  • Fazer login
  • O endpoint deve receber a seguinte estrutura:
{
   "username": "string",
   "password": "string"
}
 


Tecnologias e bibliotecas usadas

Autor