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.
- Fluxo de Autenticação
- Solução de Problemas
- Tecnologias Utilizadas
- Arquitetura
- Segurança e Autenticação
- Banco de Dados
- Implantação
- Funcionalidades
- API Endpoints
- Como Executar
- Status Atual
- Próximos Passos
- ContribuiƧƵes
- LicenƧa
-
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.
-
Autorização Google
- UsuƔrio autentica no Google.
- Google retorna para
/login/oauth2/code/googlecom o código.
-
Processamento
- Spring Security processa o código, cria sessão e define o cookie
JSESSIONID. - UsuƔrio Ʃ redirecionado para a pƔgina inicial.
- Spring Security processa o código, cria sessão e define o cookie
-
Verificação
- Frontend consulta
/api/auth/status. - Se autenticado, busca dados do usuƔrio em
/api/auth.
- Frontend consulta
- 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
- 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)
- 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
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}tb_food_item: Alimentos e informações nutricionaistb_recipes: Receitas geradastb_recipe_instructions: Passos das receitastb_recipes_nutritional_info: Nutrição das receitastb_recipe_ingredients: Ingredientes de receitastb_users: UsuÔrios (OAuth2 e perfil)spring_session: Sessões persistidas
- 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
- Login com Google OAuth2
- SessƵes persistentes (30 dias)
- Redirecionamentos seguros
- CRUD completo
- Categorização e nutrição
- Receitas automƔticas baseadas nos alimentos do usuƔrio
- InstruƧƵes detalhadas
- Nutrição estimada
- Perfil nutricional das receitas
- RecomendaƧƵes baseadas em necessidades dietƩticas
GET /oauth2/authorization/googleā Inicia login Google OAuth2GET /login/oauth2/code/googleā Callback de autenticaçãoGET /api/auth/statusā Status de autenticaçãoGET /api/authā Dados do usuĆ”rio autenticadoPOST /api/auth/logoutā Logout
POST /api/foods/createā Criar alimentoGET /api/foods/listā Listar alimentosGET /api/foods/list/{id}ā Buscar alimento por IDPUT /api/foods/updateā Atualizar alimentoDELETE /api/foods/delete/{id}ā Remover alimento
GET /api/recipes/genā Gerar receita com IAGET /api/recipes/analyze/{id}ā Analisar nutrição da receitaGET /api/recipes/userā Listar receitas do usuĆ”rio
-
Clone o repositório:
git clone https://github.com/OtavioXimarelli/AiFoodApp.git cd AiFoodApp -
Crie um arquivo
.envna raiz com as variƔveis necessƔrias. -
Execute com Docker Compose:
docker-compose up -d
-
Configure as credenciais AWS e acesso SSH à sua instância EC2.
-
Faça o upload dos arquivos do projeto e das variÔveis de ambiente para a instância.
-
Execute os containers Docker na EC2 normalmente:
docker-compose up -d
- ā 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
- 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
- 404 em
/oauth2/authorization/google: Verifique configuração do Nginx. - Cookies não persistentes: Veja
SameSitee domĆnio dos cookies. - 401 Unauthorized: Verifique logs para sessĆ£o/token.
- Redirecionamentos Infinitos: Revise configuração do proxy Nginx.
- 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 são bem-vindas! Abra issues e pull requests para melhorias.
Este projeto estĆ” licenciado sob a MIT License.