An educational Flutter application built by our team to streamline learning for Students, Admins, and Super Admins. The app provides AI-powered study assistance, track-based courses, resource management, and role-based dashboards for seamless interaction.
This platform leverages modern technologies to create an interactive learning environment with real-time features, AI assistance, and comprehensive content management capabilities.
- π Authentication System: Complete login/register flow with role-based access
- π Personalized Dashboard with:
- π― Learning Tracks: Structured courses in Flutter, Data Analysis, Cybersecurity, etc.
- π€ AI-Powered Q&A: Intelligent responses using Gemini AI integration
- π Resources Hub: Documents, guides, and reference materials
- β Starred Questions: Bookmark important Q&A for quick access
- π€ Profile Management: Settings and personalization options
- π Multilingual Support: English & Arabic with RTL support
- π Theme System: Light/Dark mode with smooth transitions
- π± Responsive Design: Optimized for various screen sizes
- π Role-Based Access Control: Secure admin panel access
- π’ Notification Management: Create, send, and manage system notifications
- π₯ User Management: Monitor and manage user activities
- π Analytics Dashboard: Track platform usage and engagement
- βοΈ System Settings: Configure platform-wide settings
- ποΈ Comprehensive Dashboard: Full platform activity monitoring
- β Content Management: Add and manage tracks, resources, and curriculum items
- π Performance Metrics: Monitor system performance and user engagement
- π Quick Actions: Streamlined administrative tasks
- π§ System Configuration: Advanced platform configuration options
- Framework: Flutter 3.8.1+ (Dart)
- Architecture: Clean Architecture + MVVM + BLoC Pattern
- Backend: Firebase (Firestore, Authentication, Cloud Messaging)
- State Management: BLoC / Cubit Pattern
- Local Storage: Shared Preferences with Custom Cache Helper
- Remote Data: Firebase Firestore with Real-time Updates
- AI Integration: Google Gemini API for intelligent Q&A
- Chat System: Flutter Chat Core & UI for messaging
- Push Notifications: Firebase Cloud Messaging (FCM)
- Design System: Custom Material Design 3 implementation
- Theming: Dynamic Light/Dark themes with custom colors
- Localization: Flutter Intl with English/Arabic support
- Fonts: Inter, Tajawal, Roboto font families
- Animations: Custom page transitions and micro-interactions
- Dependency Injection: Manual DI with service locators
- Code Generation: Flutter Assets Manager, Flutter Intl
- Linting: Flutter Lints with custom rules
- Testing: Flutter Test framework
- Build Tools: Flutter Native Splash, Flutter Launcher Icons
The project follows Clean Architecture + MVVM + BLoC principles for optimal scalability, maintainability, and testability. The architecture is designed to separate concerns and promote code reusability across different layers.
graph TB
subgraph "Presentation Layer"
A[Views/Screens] --> B[BLoC/Cubit]
B --> C[UI Components]
end
subgraph "Domain Layer"
D[Business Logic] --> E[Use Cases]
E --> F[Entities/Models]
end
subgraph "Data Layer"
G[Repositories] --> H[Data Sources]
H --> I[Firebase API]
H --> J[Local Cache]
end
subgraph "Core Layer"
K[Utilities] --> L[Helpers]
L --> M[Services]
M --> N[Configurations]
end
A --> D
D --> G
G --> K
π± final_project_iti/
βββ π lib/
β βββ π§ core/ # Core utilities & shared code
β β βββ π bloc_observer/ # BLoC state monitoring
β β βββ βοΈ config/ # App configuration
β β βββ π οΈ functions/ # Utility functions
β β β βββ π§ navigations/ # Navigation helpers
β β β βββ π network/ # Network utilities
β β β βββ β¨ transitions/ # Page transitions
β β β βββ β
validation/ # Input validation
β β βββ π§ helper/ # Helper classes
β β β βββ πΎ cashe_helper/ # Local storage
β β β βββ π services/ # External services
β β βββ π§ routing/ # Route management
β β βββ π¨ theme/ # Theme management
β β βββ π οΈ utilities/ # Shared utilities
β β βββ π§© widgets/ # Reusable widgets
β β
β βββ π― generated/ # Generated files
β β βββ π intl/ # Internationalization
β β
β βββ π l10n/ # Localization files
β β
β βββ π₯ user/ # Feature-based modules
β βββ π¨βπ» admin/ # Admin features
β β βββ π features/
β β βββ ποΈ admin_panel/
β β βββ πΎ data/ # Data layer
β β βββ π¨ presentation/ # UI layer
β β βββ π controller/ # State management
β β
β βββ π¨βπ student/ # Student features
β β βββ π features/
β β βββ π Auth/ # Authentication
β β βββ π home/ # Main dashboard
β β βββ π forget_password/ # Password recovery
β β βββ π onboarding/ # Onboarding flow
β β βββ π« splash_view/ # Splash screen
β β
β βββ ποΈ super_admin/ # Super admin features
β βββ β‘ features/
β βββ β add_item/ # Add curriculum items
β βββ π add_resource/ # Resource management
β βββ π dashboard/ # Admin dashboard
β
βββ π pubspec.yaml # Dependencies
βββ π§ analysis_options.yaml # Code analysis
βββ π firebase_options.dart # Firebase config
βββ π main.dart # App entry point
- ποΈ Clean Architecture: Separation of concerns with clear layer boundaries
- π― MVVM Pattern: Model-View-ViewModel for UI logic separation
- π BLoC Pattern: Business Logic Component for state management
- π¦ Repository Pattern: Data access abstraction
- π¨ Singleton Pattern: For shared services and utilities
- π Factory Pattern: For object creation and dependency injection
An educational Flutter application built by our team to streamline learning for Students, Admins, and Super Admins. The app provides AI-powered study assistance, track-based courses, resource management, and role-based dashboards for seamless interaction.
π Live Website & Demo
You can explore the features and download the app here:
π ITI Learning Platform Website
- Mahmoud Elnagar - Initial work - GitHub
- Youssef Mahmoud - Initial work - GitHub
- Moaz Ayman - Initial work - GitHub
- Youssef Ahmed - Initial work - GitHub
Before running this application, ensure you have the following installed and configured:
- Flutter SDK:
^3.8.1or higher - Dart:
>=3.0.0 - Android Studio / Xcode: For mobile development
- Firebase Account: For backend services
- Google Cloud Project: For AI integration (Gemini API)
# Clone the repository
git clone https://github.com/your-repo/iti-learning-platform.git
# Navigate to project directory
cd iti-learning-platform# Install Flutter dependencies
flutter pub get
# Generate required files
flutter pub run flutter_gen
flutter pub run flutter_intl- Go to Firebase Console
- Create a new project or select existing one
- Enable the following services:
- Authentication
- Firestore Database
- Firebase Cloud Messaging (FCM)
- Storage (if needed)
# Install Firebase CLI (if not installed)
npm install -g firebase-tools
# Login to Firebase
firebase login
# Initialize Firebase in your project
flutterfire configure- Go to Firebase Console β Project Settings β Service Accounts
- Generate new private key
- Save the JSON file as
assets/service_account.json
Create a .env file in the root directory:
# Firebase Configuration
FIREBASE_API_KEY=your_api_key_here
FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
FIREBASE_PROJECT_ID=your_project_id
FIREBASE_STORAGE_BUCKET=your_project.appspot.com
FIREBASE_MESSAGING_SENDER_ID=your_sender_id
FIREBASE_APP_ID=your_app_id
# Gemini AI Configuration
GEMINI_API_KEY=your_gemini_api_key_here
# App Configuration
APP_NAME=ITI Learning Platform
APP_VERSION=1.0.0# Generate app icons
flutter pub run flutter_launcher_icons
# Generate splash screen
flutter pub run flutter_native_splash:create# Generate localization files
flutter gen-l10n
# Generate assets
flutter pub run build_runner build# Run in debug mode
flutter run
# Run with specific device
flutter run -d chrome # Web
flutter run -d emulator # Android Emulator
flutter run -d simulator # iOS Simulator# Build for Android APK
flutter build apk --release
# Build for iOS
flutter build ios --release
# Build for Web
flutter build web --release- β Android: API 21+ (Android 5.0+)
- β iOS: iOS 11.0+
- β Web: Chrome, Firefox, Safari, Edge
- β macOS: macOS 10.14+
- β Windows: Windows 10+
- β Linux: Ubuntu 18.04+
- Purpose: AI-powered Q&A responses
- Configuration: Requires API key in
.env - Endpoint: Gemini API v1
- Features: Text generation, conversational AI
- Authentication: User management and authentication
- Firestore: Real-time database for content
- Cloud Messaging: Push notifications
- Storage: File storage for resources
- CacheHelper: Local data persistence
- FirebaseApi: Firebase service wrapper
- AppRouter: Navigation management
- ThemeManager: Dynamic theming system
sequenceDiagram
participant User
participant UI
participant BLoC
participant Repository
participant Firebase
participant Cache
User->>UI: Interaction
UI->>BLoC: Event
BLoC->>Repository: Data Request
Repository->>Firebase: API Call
Firebase->>Repository: Response
Repository->>Cache: Store Data
Cache->>Repository: Cached Data
Repository->>BLoC: Processed Data
BLoC->>UI: State Update
UI->>User: Updated View
# Generate signed APK
flutter build apk --release --split-per-abi
# Generate App Bundle (recommended)
flutter build appbundle --release# Build for iOS
flutter build ios --release
# Archive for App Store
flutter build ios --release --no-codesign# Build for web deployment
flutter build web --release
# Serve locally for testing
flutter serve web --release# Install Firebase CLI
npm install -g firebase-tools
# Initialize Firebase hosting
firebase init hosting
# Deploy to Firebase
firebase deploy --only hostingAndroid (Google Play):
- Generate signed App Bundle
- Create Play Store listing
- Upload bundle to Play Console
- Set up internal/external testing
- Publish to production
iOS (App Store):
- Configure iOS project in Xcode
- Archive build for App Store
- Upload to App Store Connect
- Configure TestFlight testing
- Submit for review
The application uses environment variables for configuration:
| Variable | Description | Required |
|---|---|---|
FIREBASE_API_KEY |
Firebase API key | β |
FIREBASE_PROJECT_ID |
Firebase project ID | β |
GEMINI_API_KEY |
Google Gemini API key | β |
APP_NAME |
Application name | β |
APP_VERSION |
Application version | β |
# Clean and rebuild
flutter clean
flutter pub get
flutter pub run build_runner build
# Check Flutter doctor
flutter doctor- Verify
.envfile exists and contains correct values - Check Firebase project configuration
- Ensure service account JSON is in correct location
- Verify network connectivity
- Check Gemini API key validity
- Verify API quota limits
- Check network connectivity to Google APIs
- Monitor BLoC state changes
- Check for memory leaks
- Verify Firebase queries are optimized
- Use Flutter DevTools for profiling
# Run with verbose logging
flutter run --verbose
# Enable BLoC observer logging
# (Check lib/core/bloc_observer/bloc_observer.dart)
# Use Flutter inspector
flutter run --enable-software-renderingWe welcome contributions! Please follow these guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow Flutter's effective Dart guidelines
- Use meaningful variable and function names
- Add comments for complex logic
- Ensure all tests pass before submitting
- Update the README.md with details of changes if needed
- Update the version numbers in relevant files
- The PR will be merged once you have reviewers' approval
This project is licensed under the MIT License - see the LICENSE file for details.
- Flutter Team for the amazing framework
- Firebase for backend services
- Google AI for Gemini API
- Our amazing team for their dedication and hard work
For support, email [email protected] or join our Slack channel.
Happy Learning! π




