Plataforma web que transforma seus ingredientes em refeições deliciosas e nutritivas, com análise de IA e informações nutricionais completas.
Nutriva é um sistema inteligente de planejamento de receitas que combina três poderosas APIs para oferecer uma experiência única:
- 🔍 Busca Inteligente de receitas baseada em ingredientes disponíveis
- 🤖 Análise de IA personalizada usando Google Gemini
- 📊 Informações Nutricionais detalhadas dos ingredientes via FoodData Central
- ✂️ Filtros Avançados por tipo de dieta e intolerâncias alimentares
- 🌍 Tradução Automática de receitas do inglês para português
- 👤 Perfil Personalizado com preferências alimentares salvas localmente
Disciplina: Webservices
Curso: Sistemas para Internet
Tipo: Trabalho Individual
- Python 3.12+ - Linguagem principal
- Flask 3.0 - Framework web minimalista
- Flask-CORS - Gerenciamento de CORS
- Requests - Cliente HTTP para APIs externas
- python-dotenv - Gerenciamento de variáveis de ambiente
- Spoonacular API - Busca e detalhes de receitas
- Google Gemini 2.5 Flash - Análises e sugestões personalizadas com IA
- FoodData Central (USDA) - Informações nutricionais oficiais
- Deep Translator - Tradução automática de conteúdo
- HTML5 + CSS3 - Interface moderna e responsiva
- JavaScript ES6+ - Lógica de interação
- IndexedDB - Banco de dados local do navegador
- Fetch API - Comunicação HTTP com backend (usado no
apiService.js)
💡 Sobre o Fetch API: Todas as requisições HTTP para o backend Flask são feitas através do
apiService.js, que encapsula o Fetch API em métodos reutilizáveis comosearchRecipes(),getRecipeDetails(), etc.
- IndexedDB - Armazenamento local de:
- Credenciais de usuários
- Preferências alimentares
- Python 3.12+
- pip (gerenciador de pacotes Python)
- Navegador web moderno (Chrome, Firefox, Edge, Safari)
Você precisará de chaves de API (gratuitas) para:
-
Spoonacular API - Obter chave
-
Google Gemini API - Obter chave
-
FoodData Central API - Obter chave
git clone https://github.com/hugovrp/nutriva.git
cd nutriva# Windows
python -m venv venv
venv\Scripts\activate
# Linux/Mac
python3 -m venv venv
source venv/bin/activatepip install -r requirements.txtCrie um arquivo .env na raiz do projeto:
# Spoonacular API - Para buscar receitas
SPOONACULAR_API_KEY=sua_chave_spoonacular_aqui
# Google Gemini API - Para análises de IA
GOOGLE_API_KEY=sua_chave_gemini_aqui
# FoodData Central API - Para informações nutricionais
FOOD_DATA_API_KEY=sua_chave_fooddata_aquipython app.pyO servidor estará disponível em: http://localhost:5050
Sistema de login/registro usando IndexedDB para armazenamento local:
// Usuários e suas preferências são armazenados localmente
const DB_CONFIG = {
name: 'NutrivaDB',
version: 1,
stores: {
users: 'users', // Credenciais
preferences: 'preferences' // Dieta e intolerâncias
}
};Busca personalizada considerando:
- ✅ Tipo de refeição (café da manhã, almoço, jantar, sobremesa...)
- ✅ Ingredientes disponíveis
- ✅ Tipo de dieta (vegano, vegetariano, cetogênico...)
- ✅ Intolerâncias alimentares (glúten, lactose, nozes...)
@app.route('/api/recipes/search', methods=['POST'])
def search_recipes():
recipes = spoonacular.search_recipes(
meal_type=meal_type,
ingredients=ingredients,
diet=diet,
intolerances=intolerances
)
# Enriquece com análise de IA
ai_context = gemini.analyze_recipes(recipes, user_preferences)O Google Gemini analisa as receitas encontradas e fornece:
✨ Recomendações personalizadas baseadas em suas preferências
💡 Dicas de como aproveitar melhor os ingredientes
🔄 Sugestões de ajustes nas receitas
Clique em "📊 Ver Informações Nutricionais" no modal de receitas para ver:
- 🔥 Calorias por 100g de cada ingrediente
- 💪 Proteínas para acompanhamento de macros
- 🍞 Carboidratos para controle glicêmico
- 🥑 Gorduras para balanço nutricional
@app.route('/api/nutrition/compare', methods=['POST'])
def compare_ingredients_nutrition():
# Busca dados nutricionais de múltiplos ingredientes
for ingredient in ingredients:
foods = fooddata.search_food(ingredient)
# Compara e retorna tabela nutricionalTodas as receitas são automaticamente traduzidas do inglês para português:
- 📝 Títulos das receitas
- 🥘 Lista de ingredientes
- 📋 Instruções de preparo
- ℹ️ Descrições e resumos
def translate_recipe(recipe):
translated_recipe['title'] = translate_text(recipe['title'])
translated_recipe['ingredients'] = translate_ingredients(recipe['ingredients'])
translated_recipe['instructions'] = translate_instructions(recipe['instructions'])- ✅ Armazenamento Local: Credenciais mantidas apenas no navegador do usuário
- ✅ API Keys Protegidas: Mantidas no backend, nunca expostas ao frontend
- ✅ CORS Configurado: Apenas origens permitidas podem acessar a API
- ✅ Validação de Dados: Validação dupla (frontend + backend)
- ✅ Tratamento de Erros: Mensagens genéricas para o usuário, logs detalhados no servidor
- 🌱 Vegano - Sem produtos de origem animal
- 🥗 Vegetariano - Sem carne ou peixe
- 🐟 Pescetariano - Vegetariano com peixe
- 🥩 Paleo - Alimentos não processados
- 🥑 Cetogênica - Baixo carboidrato, alta gordura
- 🔄 Low FODMAP - Para síndrome do intestino irritável
- 🍖 Onívoro - Sem restrições
- 🥛 Laticínios
- 🥚 Ovo
- 🌾 Glúten
- 🌾 Grãos
- 🥜 Amendoim
- 🦐 Frutos do Mar
- 🌰 Gergelim
- 🦞 Crustáceos
- 🌰 Soja
- ⚗️ Sulfitos
- 🌰 Nozes
- 🌾 Trigo
POST /api/recipes/search Buscar receitas
GET /api/recipes/<id> Detalhes da receita
POST /api/ai/suggestions Sugestões personalizadas
GET /api/nutrition/ingredient/<nome> Info de um ingrediente
GET /api/nutrition/details/<fdc_id> Detalhes completos
POST /api/nutrition/compare Comparar ingredientes
Contribuições são muito bem-vindas! Para contribuir:
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/MinhaFeature) - Commit suas mudanças (
git commit -m 'Adiciona MinhaFeature') - Push para a branch (
git push origin feature/MinhaFeature) - Abra um Pull Request
Este projeto é um trabalho acadêmico desenvolvido para a disciplina de Webservices do curso de Sistemas para Internet.
Hugo Vinícius Rodrigues Pereira