O Foodiary é uma aplicação inovadora de registro e análise nutricional de refeições que permite aos usuários documentar suas refeições através de fotos ou gravações de áudio. Utilizando inteligência artificial avançada da OpenAI, a aplicação automaticamente identifica os alimentos, calcula as informações nutricionais e oferece insights detalhados sobre o consumo alimentar.
- 📸 Registro por Imagem: Tire uma foto da sua refeição e receba análise nutricional completa
- 🎙️ Registro por Áudio: Descreva sua refeição por voz e obtenha as informações nutricionais
- 🤖 IA Avançada: Processamento inteligente com GPT-4o e Whisper da OpenAI
- 📊 Análise Nutricional: Cálculo automático de calorias, carboidratos, proteínas e gorduras
- ☁️ Processamento Serverless: Arquitetura escalável na AWS
- 📱 Mobile First: Aplicativo React Native otimizado para dispositivos móveis
- 📱 Upload: Usuário envia foto/áudio através do app React Native
- 🔗 URL Pré-assinada: API gera URL pré-assinada do S3 para upload seguro
- ☁️ Armazenamento: Arquivo é enviado diretamente para o bucket S3
- ⚡ Evento S3: Upload dispara evento que adiciona o arquivo na fila SQS
- 🔄 Processamento: Lambda consome a fila e processa o arquivo com OpenAI
- 💾 Persistência: Dados nutricionais são salvos no banco de dados
- 📊 Visualização: Usuário visualiza os resultados no aplicativo
- Frontend: React Native com Expo
- Backend: Node.js com Serverless Framework
- Storage: Amazon S3 para arquivos de mídia
- Queue: Amazon SQS para processamento assíncrono
- Database: Neon PostgreSQL com Drizzle ORM
- IA: OpenAI GPT-4o e Whisper para análise
- Deploy: AWS Lambda Functions
O design completo do aplicativo móvel foi cuidadosamente elaborado no Figma, incluindo todas as telas, fluxos de usuário e componentes da interface.
👀 Visualizar Design: Foodiary - Design no Figma
- 🔐 Autenticação: Login e cadastro
- 🏠 Dashboard: Visão geral nutricional
- 📸 Captura: Interface para foto/áudio
- 📊 Análise: Resultados da IA
- 👤 Perfil: Configurações do usuário
- 📱 Responsivo: Adaptado para diferentes dispositivos
- React Native com Expo SDK 53
- TypeScript para tipagem estática
- TailwindCSS com NativeWind para estilização
- React Query para gerenciamento de estado
- React Hook Form para formulários
- Expo Router para navegação
- Axios para requisições HTTP
- Node.js 22.x com TypeScript
- Serverless Framework para deploy na AWS
- Drizzle ORM para interação com banco de dados
- AWS SDK para integração com serviços AWS
- OpenAI SDK para processamento de IA
- Zod para validação de dados
- JWT para autenticação
- Lambda Functions para lógica de negócio
- S3 Bucket para armazenamento de arquivos
- SQS Queue para processamento assíncrono
- API Gateway para endpoints REST
- Dead Letter Queue para tratamento de erros
foodiary-ai/
├── foodiary/ # 📱 Aplicativo React Native
│ ├── src/
│ │ ├── contexts/ # Contextos React (Auth, etc.)
│ │ ├── hooks/ # Custom hooks
│ │ ├── services/ # Serviços e APIs
│ │ └── components/ # Componentes reutilizáveis
│ ├── app.json
│ ├── package.json
│ └── tailwind.config.js
├── foodiary-api/ # ⚡ Backend Serverless
│ ├── src/
│ │ ├── functions/ # Funções Lambda
│ │ ├── services/ # Serviços (IA, Database)
│ │ └── types/ # Tipos TypeScript
│ ├── serverless.yml # Configuração Serverless
│ ├── drizzle.config.ts # Configuração do ORM
│ └── package.json
└── assets/ # 🖼️ Imagens e recursos
├── foodiary-main-mockup.png
└── arch-diagram-light.png
- Node.js (versão 22 ou superior)
- npm ou yarn
- Expo CLI:
npm install -g @expo/cli - Serverless Framework:
npm install -g serverless - Conta AWS configurada
- Conta OpenAI com API Key
Crie um arquivo .env na pasta foodiary-api/:
# Banco de Dados
DATABASE_URL=your_neon_database_url
# JWT
JWT_SECRET=your_jwt_secret_key
# OpenAI
OPENAI_API_KEY=your_openai_api_keygit clone <repository-url>
cd foodiary-project# Navegue para o diretório da API
cd foodiary-api
# Instale as dependências
npm install
# Configure as variáveis de ambiente
cp .env.example .env
# Edite o arquivo .env com suas credenciais
# Execute localmente com Serverless Offline
npm run dev# Em outro terminal, navegue para o diretório do app
cd foodiary
# Instale as dependências
npm install
# Inicie o servidor de desenvolvimento
npm start- Android: Execute
npm run androidou escaneie o QR code com o app Expo Go - iOS: Execute
npm run iosou escaneie o QR code com o app Expo Go - Web: Execute
npm run webpara versão web de desenvolvimento
cd foodiary-api
# Configure suas credenciais AWS
aws configure
# Deploy para produção
sls deploy --stage prodcd foodiary
# Build para produção
expo build:android # Para Android
expo build:ios # Para iOS- Upload de fotos das refeições
- Identificação automática de alimentos
- Estimativa de porções e quantidades
- Cálculo nutricional preciso
- Gravação de descrições das refeições
- Transcrição com Whisper AI
- Extração de dados nutricionais do texto
- Suporte para português brasileiro
- Sistema de autenticação JWT
- Perfis personalizados com metas nutricionais
- Histórico completo de refeições
- Cálculo de macronutrientes
- Fila SQS para processamento escalável
- Dead Letter Queue para tratamento de erros
- Timeout configurável para operações IA
- Retry automático em caso de falha
POST /signin- Login de usuárioPOST /signup- Cadastro de usuárioGET /me- Informações do usuário
POST /meals- Criar nova refeição (retorna URL pré-assinada)GET /meals- Listar refeições do usuárioGET /meals/{mealId}- Obter detalhes de uma refeição
- CloudWatch Logs para logs das Lambda functions
- SQS Metrics para monitoramento da fila
- S3 Events para rastreamento de uploads
- Dead Letter Queue para análise de falhas
- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
Desenvolvido com ❤️ usando React Native + Serverless Framework + OpenAI

