Uma loja de itens medievais, no formato de uma API, utilizando Typescript.
🐳 Rodando com Docker
Rode os serviços
node
edb
com o comandodocker-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 chamadotrybesmith_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:
- 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.- 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
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
POST /users
- Cadastrar usuário
- O endpoint deve receber a seguinte estrutura:
{
"username": "MAX",
"classe": "swordsman",
"level": 10,
"password": "SavingPeople"
}
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"
}
POST /login
- Fazer login
- O endpoint deve receber a seguinte estrutura:
{
"username": "string",
"password": "string"
}