Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/guilhermecampellof/trybesmith-backend
API de uma loja de itens medievais, utilizando Typescript e Sequelize. Projeto desenvolvido durante o curso de formação Full-Stack da Trybe.
https://github.com/guilhermecampellof/trybesmith-backend
api-rest jwt mysql sequelize typescript
Last synced: 7 days ago
JSON representation
API de uma loja de itens medievais, utilizando Typescript e Sequelize. Projeto desenvolvido durante o curso de formação Full-Stack da Trybe.
- Host: GitHub
- URL: https://github.com/guilhermecampellof/trybesmith-backend
- Owner: GuilhermeCampelloF
- Created: 2024-07-24T15:52:43.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-07-24T18:02:42.000Z (6 months ago)
- Last Synced: 2024-11-21T12:48:12.008Z (2 months ago)
- Topics: api-rest, jwt, mysql, sequelize, typescript
- Language: TypeScript
- Homepage:
- Size: 215 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## TRYBESMITH
O projeto Trybesmith foi desenvolvido durante o curso de formação full-stack pela Trybe.
A aplicação consiste em uma loja de itens medievais, como aquelas espadas feitas sob encomenda para uma pessoa específica, no formato de uma _API_, utilizando _Typescript_ e _Sequelize_.
Foram desenvolvidas as camadas de _Service_ e _Controllers_ da aplicação, utilizando _JWT_ para autenticar algumas rotas, além de testes para garantir o correto funcionamento delas. A aplicação possui _endpoints_ que dão suporte a operações de criação, leitura e atualização de informações.
## REQUISITOS
- Node.js
- Docker/Docker Compose🐳 Especificações sobre uso do Docker
- Clone o repositório (`git clone`) e instale as depedências com o comando `npm install`
> Após, 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` 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;
🖥️ Rodando testes
Para rodar os testes da aplicação localmente, utilize o seguinte comando:```bash
npm run test:local
```Para verificar a cobertura do código, utilize o seguinte comando:
```bash
npm run test:coverage
```🎲 Tabelas
O banco possui duas tabelas: pessoas usuárias (`users`) e produtos (`products`).
Toda a parte de criação do banco de dados, das tabelas, seeders e _models_ do sequelize já está pronta. Você pode verificar toda a configuração e associações nos arquivos dentro do diretório `src/database`.
## 📖 HABILIDADES TRABALHADAS 📖
- Desenvolvimento de API seguindo o padrão REST;
- Interação com banco de dados MySQL;
- Validação de dados recebidos pela API;
- _Type Assertion_;
- Autenticação utilizando JWT;
- Criação de testes para garantir correta implementação dos endpoints;## IMPLEMENTAÇÕES REALIZADAS
- É possível ver o desenvolvimento passo-a-passo dos tópicos abaixo através do histórico de commits da aplicação
Endpoint para o cadastro de produtos e respectivos testes
- `POST /products`: Os produtos enviados são salvos na tabela `products` do banco de dados.
Endpoint para a listagem de produtos e respectivos testes
- `GET /products`: Retorna os produtos salvos na tabela `products` do banco de dados.
Endpoint para a listagem de usuários e respectivos testes
- `GET /users`: Retorna o nome de todas as pessoas usuárias e os `id`s dos seus respectivos produtos;
- Todos os produtos são itens artesanais, portanto, únicos. Por isso os produtos contêm os `id`s dos seus respectivos donos - que são pessoas usuárias.Endpoint para o login de usuários e respectivos testes
- `POST /login`: Recebe os campos `username` e `password`, que são validados no banco de dados;
- Um token `JWT` é gerado e retornado caso haja sucesso no _login_, utilizando no _payload_ o `id` e `username`;
- A requisição enviada ao endpoint é validada, retornando um _status code_ e uma _message_ personalizada a depender do caso.Validações para a criação de produtos e respectivos testes
- Validações referentes ao endpoint `POST /products`.
## ©️ DISCLAIMER
Com exceção das alterações destacadas acima no tópico "implementações realizadas", TODOS OS DEMAIS ARQUIVOS foram desenvolvidos e estão sob responsabilidade da TRYBE, incluindo, mas não se limitando aos: models, database, seeders, containers docker e organização dos demais diretórios da aplicação.