Skip to content

Latest commit

 

History

History
206 lines (189 loc) · 6.48 KB

README.md

File metadata and controls

206 lines (189 loc) · 6.48 KB

GitHub top language" Repository size" GitHub last commit" Repository issues" GitHub

FoodMinder

Receitas preparadas com os ingredientes presentes
Esta em desenvolvimento!

Porque usar - Como usar - Quando usar - Aonde usar - Testes - Diagramas

Pré-visualização

Porque usar

  • Focado em auxiliar no controle mais amigável do estoque de comida, e a possibilidade de integração com outras ferramentas!

Como usar

  1. Execute os containers / Instale:
    • Redis
      • doas docker run -p 6379:6379 --name=redis redis
    • MySQL
      • doas docker run -p 3306:3306 --name=mysql mysql
    • OBS: Caso altere a porta, mude também em Foodminder/src/main/resources/application.properties
  2. Clone o repositório
    • git clone https://github.com/renatonunes74/foodminder
  3. Entre na pasta
    • cd foodminder/FoodMinder
  4. Rode localmente
    • CLI / via Terminal:
      • mvn spring-boot:run
    • Via IDE (JetBrains, Eclipse...)
  5. Agora é só fazer as requisições para a API

Funcionalidades

  • Usuario
    • Cadastrar
      • http://localhost:8080/auth/registrar
        •   {
            	"login": "nome",
            	"password": "senha",
            	"role": "USER"
            }
          • Aonde "role":
            • pode ter "USER" ou "ADMIN"
    • Logar
      • http://localhost:8080/auth/login
        •   {
            	"login": "nome",
            	"password": "senha",
            }
  • OBS: Usar o Authorization: Bearer {token} nas requisições abaixo:
  • Listar (GET)
    • Planejamentos
      • Todos
        • http://localhost:8080/planejamento
      • Por ID
        • http://localhost:8080/planejamento/{id}
          • exemplo:
            • http://localhost:8080/planejamento/1
    • Refeições
      • Todas
        • http://localhost:8080/refeicao
      • Por ID
        • http://localhost:8080/refeicao/{id}
          • exemplo:
            • http://localhost:8080/refeicao/1
    • Tipos de refeições
      • Todos
        • http://localhost:8080/tipoRefeicao
      • Por ID
        • http://localhost:8080/tipoRefeicao/{id}
          • exemplo:
            • http://localhost:8080/tipoRefeicao/1
  • Adicionar (POST)
    • Novo planejamento
      • http://localhost:8080/planejamento
        •    {
              "data": "2023-08-12",
              "tipoRefeicao": {
            	"id": 1
              },
              "refeicao": {
            	"id": 1
              }
            }
    • Nova refeição
      • http://localhost:8080/refeicao
        •   {
            	"nome": "Lasanha"
            	"receita": "receita.md"
            }
    • Novo tipo de refeição
      • http://localhost:8080/tipoRefeicao
        •   {
            	"tipo": "Café da Tarde"
            }
  • Atualizar (PUT)
    • Planejamento por ID
    • Refeição por ID
    • Tipo de refeição por ID
    • Usuario por ID
  • Deletar (DELETE)
    • Planejamento por ID
      • http://localhost:8080/planejamento/{id}
        • exemplo
          • http://localhost:8080/planejamento/1
    • Refeição por ID
      • http://localhost:8080/refeicao/{id}
        • exemplo
          • http://localhost:8080/refeicao/1
    • Tipo de refeição por ID
      • http://localhost:8080/tipoRefeicao/{id}
        • exemplo
          • http://localhost:8080/tipoRefeicao/1
    • Usuario por ID

Dependências necessárias

Tecnologias usadas

  • Linguagem: Java
    • Frameworks:
    • Testes:
      • Unitários: jUnit5
      • Mutação e Cobertura: Pitest (Testes de mutação)
    • Bibliotecas:
      • Lombok (Anotações para gerar automaticamente métodos getters, setters, construtores, entre outros, em tempo de compilação)
      • FlyWay (Versionamento do banco de dados)
  • Banco de dados: MySQL
  • Banco de dados em memória: Redis
  • Mensageria: RabbitMQ
  • Complementares:
    • Mermerd (Criação automática de diagrama de relacionamento)
    • Spring Initializer CLI (Para a criação do Spring Boot)
    • VHS (Criação de GIF do terminal via código)
    • httpie (Maior facilidade para requisições HTTP (alternativa ao curl))

Quando usar

  • Simples, quando tiver feito uma compra no mercado, liste os itens comprados, além de gerar uma ideia dos custos, também fará uma maior gestão daquilo que consome!

Aonde usar

  • A aplicação esta em desenvolvimento e por enquanto será possível por meio de requisições HTTP...

Testes

Testes por mutação e cobertura

  • 06-08-2023
    • Pitest

Diagramas

Diagrama de relacionamento

erDiagram
    tipo_refeicao {
        int id PK
        varchar tipo 
    }

    planejamento {
        int id PK
        date data 
        int tipo_refeicao_id FK
        int refeicao_id FK
    }

    refeicao {
        int id PK
        varchar nome 
        text receita 
    }

    planejamento }o--|| tipo_refeicao : "tipo_refeicao_id"
    planejamento }o--|| refeicao : "refeicao_id"
Loading

Alternativas

  • MealCLI
    • Gerenciador de refeições CLI usando SHELL

Contribuição

Estou aberto a contribuições, feedback e opiniões da comunidade! Se você tiver alguma ideia para melhorar o projeto, correções de bugs ou sugestões de novos recursos, ficarei feliz em receber sua contribuição! Basta enviar um Pull Request no repositório do projeto.