Sistema que cria uma loja virtual de itens medievais, no formato de uma API REST, utilizando Typescript.
- Docker
- Node.js
- Express.js
- MySQL
- Arquitetura MSC (Models, Services e Controllers)
- Middlewares de erro
- Lib
restify-errors
para tratamento de erros - Typescript
🐳 Rodando no Docker vs Localmente
Antes de começar, seu docker-compose precisa estar na versão 1.29 ou superior. Veja aqui ou na documentação como instalá-lo. No primeiro artigo, você pode substituir onde está com
1.26.0
por1.29.2
.
- Clone o repositório:
git clone git@github.com:hgo19/Trybesmith.git
- Inicie os containers através do comando:
docker-compose up -d
- Entre no container com node e instale as dependências:
docker exec -it trybesmith bash
Dentro do Container:
npm install
Para criar o banco de dados:
npm run createDB
Para iniciar a aplicação na porta 3000:
npm run dev
- A aplicação estará rodando na porta 3000, para acessála basta acessar o endereço: http://localhost:3000 e então utilizar os endpoints.
- Instale as dependências com:
npm install
-
Na aplicação tem um arquivo chamado
.env.example
, renomei para apenas.env
e o configure para que consiga rodar localmente. -
Para rodar localmente você precisa ter instalado o
Node.js
na sua máquina, em que, a versão deve ser"node": ">=16.0.0"
e a versão do"npm": ">=7.0.0"
. -
Em seguida digite os seguintes comandos em seu terminal:
Para criar o banco de dados:
npm run createDB
Para iniciar a aplicação na porta 3000:
npm run dev
Função de criação de banco de dados e query para criar o mesmo escritos por: Trybe.
Todos os ENDPOINTS precisam de um
TOKEN
válido para ser realizada a requisição, exceto o de login e o de criação de usuário, ambos terão um token na sua resposta
- POST
/login
retornará umTOKEN
em caso de login bem sucedido(usuário presente no banco de dados com a senha correta). Usuário já cadastrado no Banco de Dados para testes:
{
"username": "Zoro",
"password": "cabecademarimo"
}
- POST
/users
endpoint para cadastro de usuário, retornará umTOKEN
em caso de sucesso. Para cadastrar o usuário a requisição deve conter o seguinte body:
{
"username": "Sanji",
"vocation": "fighter",
"level": 7,
"password": "sombrancelhudo"
}
- GET
/orders
retornará todos os pedidos já feitos na loja - POST
/orders/
cadastra um novo pedido e retorna o pedido cadastrado, o pedido deve ter o seguinte body na sua requisição:
{
"productsIds": [1, 2]
}
- POST
/products
adicionará um novo produto ao banco de dados, a requisição deve ter seu body da seguinte maneira:
{
"name": "Espada longa",
"amount": "30 peças de ouro"
}
- GET
/products
retornará a listagem com todos os produtos disponíveis no banco de dados
Projeto desenvolvido por: Hugo Leonardo.