Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lionelsu/smith-store-api
RESTful API developed with a focus on quality and following the TDD methodology, the API adopts a layered architecture consistent with Model, Service, Controller (MVC). This API offers operations related to products, authentication, and orders.
https://github.com/lionelsu/smith-store-api
api api-rest chai docker docker-compose mocha mysql nodejs orm postman sequelize sinon typescript
Last synced: 7 days ago
JSON representation
RESTful API developed with a focus on quality and following the TDD methodology, the API adopts a layered architecture consistent with Model, Service, Controller (MVC). This API offers operations related to products, authentication, and orders.
- Host: GitHub
- URL: https://github.com/lionelsu/smith-store-api
- Owner: lionelsu
- Created: 2023-10-17T18:20:13.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2023-10-23T00:13:37.000Z (about 1 year ago)
- Last Synced: 2024-10-11T22:41:48.546Z (about 1 month ago)
- Topics: api, api-rest, chai, docker, docker-compose, mocha, mysql, nodejs, orm, postman, sequelize, sinon, typescript
- Language: TypeScript
- Homepage:
- Size: 223 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Smith Store
[Documentação da API no Postman](https://documenter.getpostman.com/view/30159355/2s9YRB3Y1d)
Smith Store API é uma solução completa para gerenciar uma loja de ferreiros. Esta API oferece operações relacionadas a produtos, autenticação e pedidos. Desenvolvida com foco na qualidade e seguindo a metodologia TDD (Test-Driven Development), a API adota uma arquitetura em camadas consistente com Model, Service e Controller (MSC) e o esquema do banco de dados utiliza o Diagrama de Entidade-Relacionamento (DER).
## Ferramentas Utilizadas
- **Tecnologias Principais:**
- Node.js
- Express.js
- MySQL Server
- Sequelize ORM- **Testes:**
- Mocha
- Chai
- Sinon- **Documentação:**
- Postman## Pré-Requisitos
Node versão igual ou superio a 16.14.0 LTS:
- [Node.js](https://nodejs.org/en/)
Docker e Docker Compose:
- [Docker & Docker Compose](https://docs.docker.com/compose/)
## Instalação
Com Docker
1. Clonar o Repositório
Primeiro, copie ou clone este repositório para o seu sistema local usando o Git:
```bash
git clone [email protected]:lionelsu/smith-store-api.git && cd smith-store-api
```2. Iniciar o Contêiner Docker
Utilize o Docker Compose para iniciar o contêiner do Smith Store API:
```bash
docker compose up -d
```3. Popular o Banco de Dados
Utilize o Docker para popular o banco de dados:
```bash
docker exec smithstore_api npm run db:reset
```Localmente com NodeJs
1. Clonar o Repositório
Primeiro, copie ou clone este repositório para o seu sistema local usando o Git:
```bash
git clone [email protected]:lionelsu/smith-store-api.git && cd smith-store-api
```2. Instalar as Dependências
Em seguida, instale as dependências do projeto usando o `npm`:
```bash
npm install
```3. Popular o Banco de Dados
```bash
npm run db:reset
```4. Iniciar o Servidor
Inicie o servidor para executar a API:
```bash
npm run dev
```## Uso
Para interagir com o Smith Store, você pode usar os seguintes comandos:
Visualização de Logs
```bash
docker logs -n 10 -f smithstore_api
```Linha de Comando Interativa, usada para **[testar](#testes)** a aplicação
```bash
docker exec -it smithstore_api bash
```Resetar o Banco de Dados (deve ser executado dentro da **[linha de comando interativa](#uso)**)
```bash
npm run db:reset
```## Rotas da API
**Produtos:**
- **`POST /products`**: Cadastra um novo produto.
- **`GET /products`**: Retorna todos os produtos cadastrados.**Pedidos:**
- **`POST /orders`**: Cadastra um novo pedido.
- **`GET /orders`**: Retorna todos os pedidos cadastradas.## Testes
- Dentro da **[linha de comando interativa](#uso)**, você pode executar os seguintes testes:
- Testes Unitários:
```bash
npm run test:mocha
```- Cobertura de Testes:
```bash
npm run test:coverage
```## Habilidades desenvolvidas
Desenvolvi minha aplicação usando `Node.js` com `Express.js` como base. Isso me permitiu criar facilmente endpoints `HTTP` para atender às necessidades do sistema.
Escolhi usar o banco de dados `MySQL Server` para armazenar informações sobre produtos, vendas e outros aspectos importantes do sistema.
A regra de negocio foi implementada utilizando o `Sequelize ORM` para facilitar a interação com o banco de dados e os algorithmos de classificação foram implementados utilizando o `JavaScript` em uma camada especifica para isso.
Para garantir a qualidade do código, realizei testes rigorosos com `Mocha`, `Chai` e `Sinon`. Esses testes verificaram minuciosamente os endpoints, serviços e funções para garantir que tudo funcione corretamente.
Também criei uma Documentação no `Postman` para facilitar os testes e interações com a `API`.
Com essas etapas concluídas, estou confiante na entrega de uma `API` sólida e funcional, pronta para atender às necessidades dos usuários.