Skip to content

renatonunes74/foodminder

Repository files navigation

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"

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.

About

Receitas preparadas com os ingredientes presentes no estoque

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published