Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jonataslaguna/legendary-smith-api
Loja de itens medievais personalizados, no formato de uma API, utilizando Typescript e Sequelize. A aplicação contém endpoints que dão suporte a operações de criação, leitura e atualização de informações. Além de utilizar JWT para autenticar algumas rotas.
https://github.com/jonataslaguna/legendary-smith-api
docker jwt mocha mysql sequelize typescript
Last synced: 9 days ago
JSON representation
Loja de itens medievais personalizados, no formato de uma API, utilizando Typescript e Sequelize. A aplicação contém endpoints que dão suporte a operações de criação, leitura e atualização de informações. Além de utilizar JWT para autenticar algumas rotas.
- Host: GitHub
- URL: https://github.com/jonataslaguna/legendary-smith-api
- Owner: jonataslaguna
- Created: 2023-12-15T14:12:10.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2023-12-21T17:13:18.000Z (11 months ago)
- Last Synced: 2024-10-11T22:41:23.088Z (about 1 month ago)
- Topics: docker, jwt, mocha, mysql, sequelize, typescript
- Language: TypeScript
- Homepage:
- Size: 668 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Lendary Smith API
Loja de itens medievais personalizados, no formato de uma _API_, utilizando _Typescript_ e _Sequelize_. A aplicação contém _endpoints_ que dão suporte a operações de criação, leitura e atualização de informações. Além de utilizar _JWT_ para autenticar algumas rotas.
## Instalação e Como Utilizar
🐳 Especificações sobre uso do Docker
#### Após clonar o repositório, navegue até a raíz do projeto e instale as dependências com o comando:
```bash
npm install
```> Rode os serviços `app-trybesmith` e `db` com o comando `docker-compose up -d --build`.
- Lembre-se de parar o `mysql` se estiver usando localmente na porta padrão (`3306`), ou adapte, caso queria fazer uso da aplicação em containers
- Esses serviços irão inicializar um container chamado `trybesmith_api` e outro chamado `trybesmith_db`.
- A partir daqui você pode rodar o container `trybesmith_api` via CLI ou abri-lo no VS Code.> Rode o comando `npm run db:reset` (este comando vai funcionar somente após a criação do tipos solicitados no requisito) para criar o banco de dados, as tabelas que serão utilizadas e populá-las.
> Use o comando `docker exec -it trybesmith_api bash` para entrar no container.
- Ele te dará acesso ao terminal interativo do container criado pelo compose, que está rodando em segundo plano.
- Para visualizar o logs do nodemon em seu terminal use os seguintes comandos:
> `docker ps`: para visualizar os containers ativos e pegar o `CONTAINER ID`;
> `docker logs -f `: para visualizar os logs do seu servidor com nodemon;
🎲 Diagrama Entidade Relacionamento
O banco de dados do projeto segue a estrutura abaixo:
O banco contém três tabelas: pessoas usuárias (`users`), produtos (`products`) e pedidos (`orders`).
## Funcionalidades
> OBS: Na raiz do projeto, você encontrará um arquivo Thunder Client (thunder-collection_Legendary Smith.json) que pode ser importado no Thunder Client para facilitar as requisições.
- **Login:**
- Endpoint: `POST /login`
- Retorna um token de acesso caso o usuário já esteja cadastrado no banco de dados.
- O corpo da requisição deve conter o nome de usuário e a senha, seguindo o formato abaixo:```json
{
"username": "Hagar",
"password": "terrível"
}
```
- Efetuando o login corretamente retornará um token neste formato:
```json
{
"token": "eyJhbGciOiJI[...]"
}
```> Aviso: Para cadastrar um novo produto ou pedido, é necessário utilizar esse token de acesso no header da requisição como no exemplo abaixo:
![DER](./public/header-auth.png)#
- **Listar Produtos:**
- Endpoint: `GET /products`
- **Listar Pedidos:**
- Endpoint: `GET /orders`- **Criar Produto:**
- Endpoint: `POST /products`
- O corpo da requisição deve estar neste formato abaixo:
```json
{
"name": "Martelo de Thor",
"price": "30 peças de ouro",
"orderId": 4
}
```## Contribuição
Este projeto está aberto para contribuições. Se você deseja contribuir, siga estas etapas:
1. Faça um fork do projeto
2. Crie uma nova branch (`git checkout -b feature/sua-feature`)
3. Faça commit das alterações (`git commit -m 'Adicione sua feature'`)
4. Faça push para a branch (`git push origin feature/sua-feature`)
5. Abra um Pull Request## Contato
Se você deseja entrar em contato comigo, sinta-se à vontade para enviar um e-mail para [[email protected]](mailto:[email protected]).