Skip to content

OtavioXimarelli/AiFoodApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 
Ā 

Repository files navigation

AI Food App

Spring Boot Java Spring AI PostgreSQL Flyway Docker Docker Compose OAuth2


šŸ“ Sobre o Projeto

O AI Food App integra o gerenciamento inteligente de alimentos com IA para gerar receitas personalizadas e anÔlises nutricionais. A autenticação é feita via Google OAuth2, garantindo segurança e praticidade.


šŸ“‹ SumĆ”rio


šŸ” Fluxo de Autenticação

  1. Iniciar Login

    • UsuĆ”rio clica no botĆ£o de login com Google.
    • Frontend redireciona para /oauth2/authorization/google.
    • Spring Security processa e redireciona para login do Google.
  2. Autorização Google

    • UsuĆ”rio autentica no Google.
    • Google retorna para /login/oauth2/code/google com o código.
  3. Processamento

    • Spring Security processa o código, cria sessĆ£o e define o cookie JSESSIONID.
    • UsuĆ”rio Ć© redirecionado para a pĆ”gina inicial.
  4. Verificação

    • Frontend consulta /api/auth/status.
    • Se autenticado, busca dados do usuĆ”rio em /api/auth.

šŸ› ļø Tecnologias Utilizadas

  • Spring Boot 3.5.4: Backend Java
  • Spring Data JPA: PersistĆŖncia
  • Spring AI: Integração IA
  • Maritaca AI: API de receitas e nutrição
  • Spring Security & OAuth2: Autenticação Google
  • Spring Session JDBC: SessƵes persistentes
  • PostgreSQL 15: Banco relacional
  • Flyway: Versionamento do banco
  • Lombok: Menos boilerplate
  • RESTful API: Integração backend
  • Docker & Docker Compose: Containers e orquestração
  • Nginx: Proxy reverso e SSL
  • AWS EC2: Hospedagem

šŸ—ļø Arquitetura

  • Controller: Endpoints REST
  • Service: Lógica de negócio
  • Repository: Acesso a dados
  • Model: Entidades do domĆ­nio
  • DTO & Mapper: TransferĆŖncia e conversĆ£o de dados
  • Config & Security: ConfiguraƧƵes gerais e autenticação
  • Filter: Processamento de requisiƧƵes (paths, rate limiting, diagnósticos)

šŸ”’ SeguranƧa e Autenticação

  • OAuth2 Google: Login seguro, sem senha
  • Spring Session JDBC: SessƵes no banco
  • Cookie Seguro: Configuração avanƧada (secure, SameSite, domain)
  • Rate Limiting: Proteção contra brute force
  • Diagnóstico: Monitoramento do fluxo de autenticação

Exemplo de configuração (application.yaml)

spring:
  security:
    oauth2:
      client:
        registration:
          google:
            client-id: ${GOOGLE_CLIENT_ID}
            client-secret: ${GOOGLE_CLIENT_SECRET}
            scope:
              - openid
              - profile
              - email
  session:
    store-type: jdbc
    jdbc:
      initialize-schema: never
    timeout: 2592000  # 30 dias
    cookie:
      secure: ${COOKIE_SECURE:true}
      same-site: ${COOKIE_SAME_SITE:lax}
      domain: ${COOKIE_DOMAIN:.aifoodapp.site}

šŸ—ƒļø Estrutura do Banco de Dados

  • tb_food_item: Alimentos e informaƧƵes nutricionais
  • tb_recipes: Receitas geradas
  • tb_recipe_instructions: Passos das receitas
  • tb_recipes_nutritional_info: Nutrição das receitas
  • tb_recipe_ingredients: Ingredientes de receitas
  • tb_users: UsuĆ”rios (OAuth2 e perfil)
  • spring_session: SessƵes persistidas

🌐 Arquitetura de Implantação

  • Frontend: Site estĆ”tico servido pelo Nginx
  • Backend: Spring Boot em container Docker
  • Banco de Dados: PostgreSQL em container Docker
  • Nginx: Proxy reverso, SSL e API gateway
  • Docker Compose: Orquestração de todos os serviƧos
  • AWS EC2: Infraestrutura de hospedagem

šŸš€ Funcionalidades

Autenticação Social

  • Login com Google OAuth2
  • SessƵes persistentes (30 dias)
  • Redirecionamentos seguros

Gerenciamento de Alimentos

  • CRUD completo
  • Categorização e nutrição

Geração de Receitas IA

  • Receitas automĆ”ticas baseadas nos alimentos do usuĆ”rio
  • InstruƧƵes detalhadas
  • Nutrição estimada

AnƔlise Nutricional

  • Perfil nutricional das receitas
  • RecomendaƧƵes baseadas em necessidades dietĆ©ticas

šŸ”Œ API Endpoints

Autenticação e UsuÔrio

  • GET /oauth2/authorization/google — Inicia login Google OAuth2
  • GET /login/oauth2/code/google — Callback de autenticação
  • GET /api/auth/status — Status de autenticação
  • GET /api/auth — Dados do usuĆ”rio autenticado
  • POST /api/auth/logout — Logout

Alimentos

  • POST /api/foods/create — Criar alimento
  • GET /api/foods/list — Listar alimentos
  • GET /api/foods/list/{id} — Buscar alimento por ID
  • PUT /api/foods/update — Atualizar alimento
  • DELETE /api/foods/delete/{id} — Remover alimento

Receitas

  • GET /api/recipes/gen — Gerar receita com IA
  • GET /api/recipes/analyze/{id} — Analisar nutrição da receita
  • GET /api/recipes/user — Listar receitas do usuĆ”rio

šŸ’» Como Executar o Projeto

Execução Local

  1. Clone o repositório:

    git clone https://github.com/OtavioXimarelli/AiFoodApp.git
    cd AiFoodApp
  2. Crie um arquivo .env na raiz com as variƔveis necessƔrias.

  3. Execute com Docker Compose:

    docker-compose up -d

Implantação em Produção (AWS EC2)

  1. Configure as credenciais AWS e acesso SSH à sua instância EC2.

  2. Faça o upload dos arquivos do projeto e das variÔveis de ambiente para a instância.

  3. Execute os containers Docker na EC2 normalmente:

    docker-compose up -d

🧪 Status Atual do Projeto

  • āœ… Estrutura completa
  • āœ… Autenticação Google OAuth2
  • āœ… SessƵes persistentes
  • āœ… Gerenciamento de alimentos (CRUD)
  • āœ… Integração Maritaca AI
  • āœ… Geração de receitas IA
  • āœ… AnĆ”lise nutricional
  • āœ… Deploy automatizado AWS EC2
  • āœ… HTTPS via Nginx

šŸ“‹ Próximos Passos

  • Melhorias na interface do usuĆ”rio
  • RecomendaƧƵes personalizadas por perfil
  • Sistema de favoritos/histórico
  • Integração com mĆŗltiplos provedores de IA
  • CI/CD e monitoramento aprimorados

šŸ› ļø Solução de Problemas

Autenticação

  • 404 em /oauth2/authorization/google: Verifique configuração do Nginx.
  • Cookies nĆ£o persistentes: Veja SameSite e domĆ­nio dos cookies.
  • 401 Unauthorized: Verifique logs para sessĆ£o/token.
  • Redirecionamentos Infinitos: Revise configuração do proxy Nginx.

Comandos Úteis

  • Ver logs do backend: docker logs aifoodapp
  • Testar configuração do Nginx: sudo nginx -t
  • Aplicar nova config Nginx: ./update_nginx.sh
  • Reiniciar serviƧos: docker-compose restart

šŸ‘„ ContribuiƧƵes

Contribuições são bem-vindas! Abra issues e pull requests para melhorias.


šŸ“„ LicenƧa

Este projeto estĆ” licenciado sob a MIT License.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages