WellPlate is a comprehensive nutrition management platform that connects users with professional nutritionists through AI-powered meal planning. The application leverages Google's Gemini AI to generate personalized meal plans while providing real-time communication channels between users and nutritionists for plan validation and customization.
- π€ AI-Powered Meal Planning: Generate personalized 7-day meal plans using Google Gemini AI
- π¨ββοΈ Professional Validation: Connect with certified nutritionists for plan review and approval
- π¬ Real-time Communication: Built-in chat system for user-nutritionist collaboration
- π Progress Tracking: Monitor daily meal completion and nutritional goals
- π Multi-language Support: Internationalization support for global accessibility
- π± Cross-Platform: Native mobile apps for iOS, Android, and web platforms
- πΊοΈ Location Services: Find nearby nutritionists and set office locations
- π Subscription Management: Free and Pro tier support
- Framework: Flutter 3.0+ with Dart
- State Management: Riverpod for reactive state management
- Local Storage: Isar database for offline data persistence
- UI Components: Material Design with adaptive layouts for phones and tablets
- Authentication: AWS Amplify Cognito integration
- API: GraphQL with AWS AppSync
- Database: DynamoDB for data persistence
- Compute: AWS Lambda functions for business logic
- AI Integration: Google Gemini API for meal plan generation
- Workflow: AWS Step Functions for orchestration
- Storage: S3 for profile pictures and media
- Infrastructure: AWS CDK for Infrastructure as Code
- Meal Plan Generation: Step Functions workflow with Gemini AI
- Real-time Notifications: AppSync subscriptions
- File Management: S3 with presigned URLs
- Authentication: Cognito User Pools with role-based access
- User Dashboard: Clean, intuitive interface for meal planning
- Theme Support: Both light and dark mode available
- Meal Plan Management: Easy-to-use interface for viewing and managing meal plans
- Progress Tracking: Visual indicators for meal completion status
- Flutter SDK 3.0 or higher
- Node.js 18+ and npm
- AWS CLI configured with appropriate permissions
- Dart SDK 3.6.0 or higher
- Git for version control
git clone <repository-url>
cd DIMA-2024
cd backend
npm install
npm run build
npm run deploy
cd frontend
flutter pub get
flutter pub run build_runner build
flutter gen-l10n
- Copy
amplify_outputs.json
from backend to frontend root - Configure AWS credentials
- Set up Google Gemini API key in AWS Secrets Manager
# Backend (in backend directory)
npm run watch
# Frontend (in frontend directory)
flutter run
# Android
flutter build apk --release
# iOS
flutter build ios --release
# Web
flutter build web --release
DIMA-2024/
βββ backend/ # AWS CDK Backend
β βββ lib/ # CDK Stack definitions
β βββ src/lambda/ # Lambda function implementations
β βββ resolvers/ # GraphQL resolvers
β βββ graphql/ # GraphQL schema
β βββ templates/ # VTL templates
βββ frontend/ # Flutter Application
β βββ lib/
β β βββ Views/ # UI screens and components
β β βββ models/ # Data models and Isar schemas
β β βββ services/ # API and business logic
β β βββ providers/ # Riverpod state providers
β βββ assets/ # Images and static resources
β βββ l10n/ # Internationalization files
βββ deliverables/ # Documentation and presentations
- Flutter: Cross-platform UI framework
- Riverpod: State management and dependency injection
- Isar: Local database for offline functionality
- Amplify: AWS integration and authentication
- Material Design: UI component library
- AWS CDK: Infrastructure as Code
- AppSync: GraphQL API with real-time subscriptions
- DynamoDB: NoSQL database
- Lambda: Serverless compute functions
- Step Functions: Workflow orchestration
- Cognito: User authentication and authorization
The application uses DynamoDB with the following main entities:
- MealPlan: User meal plans with daily meal data
- UserDetails: User preferences and profile information
- NutritionistProfile: Professional nutritionist profiles
- ChatMetadata: Chat session management
- ChatMessage: Real-time messaging data
- PlanDayCompletion: Daily progress tracking
- USERS: Regular users who can create meal plans and chat with nutritionists
- NUTRITIONISTS: Professionals who can validate and modify meal plans
- JWT-based authentication via AWS Cognito
- Role-based access control (RBAC)
- API-level authorization with GraphQL directives
- Secure file uploads with presigned URLs
The application supports multiple languages through Flutter's internationalization system:
- English (default)
- Italian
- Additional languages can be added via ARB files
# 1. Add strings to app_{locale}.arb files
# 2. Merge ARB files
python scripts/merge_arb.py
# 3. Generate localization classes
flutter gen-l10n
- AI Model: Google Gemini 2.5 Flash
- Input: User preferences, dietary restrictions, allergies
- Output: Structured 7-day meal plans with nutritional data
- Validation: Professional nutritionist review process
- Personalized macro and micronutrient calculations
- Allergy and dietary restriction compliance
- Multi-language recipe generation
- Realistic portion sizes and preparation instructions
cd backend
npm run deploy
# Android
flutter build apk --release
# Deploy to Google Play Store
# iOS
flutter build ios --release
# Deploy to App Store
# Web
flutter build web --release
# Deploy to AWS S3/CloudFront
- Offline Support: Local data caching with Isar
- Lazy Loading: Efficient data pagination
- Image Optimization: Compressed assets and lazy loading
- State Management: Efficient re-rendering with Riverpod
- API Optimization: GraphQL query optimization
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Follow Flutter/Dart style guidelines
- Write comprehensive tests
- Update documentation for new features
- Use conventional commit messages
This project is licensed under the MIT License - see the LICENSE file for details.
Built with β€οΈ using Flutter and AWS