π Live Demo: https://academic-tools.org
Fermi Plus is a comprehensive education management platform that revolutionizes classroom management and student engagement. Built with Flutter and Firebase, it provides real-time collaboration tools for teachers, students, and parents, creating a unified educational ecosystem.
Empowering educators with modern technology to create engaging, efficient, and data-driven learning environments that improve student outcomes and streamline administrative tasks.
- Real-Time Collaboration: Instant updates across all devices with Firebase real-time sync
- Behavior Point System: Unique gamified approach to student behavior management
- Cross-Platform Native: Single codebase for Web, iOS, Android, and Windows
- Role-Based Architecture: Tailored experiences for teachers, students, and parents
- Privacy-First Design: FERPA-compliant with granular access controls
- Progressive Web App: Installable web app with offline capabilities
- Create unlimited classes with custom subjects and grade levels
- Generate unique enrollment codes for easy student registration
- Manage class rosters with bulk operations
- Archive and restore classes by academic year
- Real-time student attendance tracking
- Rich text assignment creation with file attachments
- Customizable due dates and submission requirements
- Auto-grading for objective questions
- Rubric-based assessment tools
- Assignment templates and reusability
- Bulk assignment operations
- Comprehensive gradebook with weighted categories
- Real-time grade calculations and progress tracking
- Performance analytics and trend visualization
- Custom grading scales and standards
- Grade export to CSV/Excel
- Parent-viewable progress reports
- Behavior Points System (Unique Feature)
- Award positive points for achievements
- Track negative points for infractions
- Visual performance indicators
- Weekly/monthly behavior reports
- Customizable behavior categories
- Class-wide behavior analytics
- Direct messaging with students and parents
- Class-wide announcements
- Discussion boards for collaborative learning
- Scheduled message delivery
- Read receipts and typing indicators
- File and media sharing
- Personalized dashboard with upcoming assignments
- Real-time grade visibility
- Behavior point tracking and achievements
- Calendar integration with due dates
- Assignment submission portal
- Resource library access
- Interactive discussion participation
- Peer collaboration spaces
- Educational games (Jeopardy-style quizzes)
- Study groups and chat rooms
- Assignment clarification requests
- Portfolio showcase
- Account claim system for student ownership
- Profile customization
- Notification preferences
- Parent account linking
- Multi-device synchronization
- Real-time access to student grades
- Behavior point tracking
- Assignment completion status
- Teacher communication portal
- Attendance records
- Progress reports and analytics
lib/
βββ features/ # Feature-based modular architecture
β βββ admin/ # Admin management features
β β βββ data/ # Data sources and repositories
β β βββ domain/ # Business logic and models
β β βββ presentation/ # UI screens and providers
β βββ assignments/ # Assignment management
β βββ auth/ # Authentication system
β βββ behavior_points/ # Behavior tracking (Unique)
β βββ calendar/ # Calendar integration
β βββ chat/ # Real-time messaging
β βββ classes/ # Class management
β βββ dashboard/ # Dashboard views
β βββ discussions/ # Discussion boards
β βββ games/ # Educational games
β βββ grades/ # Grading system
β βββ notifications/ # Push notifications
β βββ student/ # Student management
β βββ students/ # Students listing and management
β βββ teacher/ # Teacher features
βββ shared/ # Shared components
β βββ core/ # App initialization, DI
β βββ models/ # Shared data models
β βββ providers/ # Global state providers
β βββ routing/ # Navigation configuration
β βββ screens/ # Common screens
β βββ services/ # Shared services layer
β βββ theme/ # Theming and styling
β βββ utils/ # Utility functions
β βββ widgets/ # Reusable UI components
βββ main.dart # Application entry point
- Flutter 3.32.0 - Cross-platform UI framework
- Dart 3.8.0 - Programming language
- Provider - State management solution
- GoRouter 16.2 - Declarative navigation
- Material 3 - Modern design system
- Firebase Auth - Multi-provider authentication
- Cloud Firestore - NoSQL real-time database
- Firebase Storage - Media and file storage
- Firebase Functions - Serverless backend logic
- Firebase Hosting - Web deployment
- Firebase Cloud Messaging - Push notifications
- fl_chart - Data visualization
- cached_network_image - Image optimization
- video_player - Media playback
- flutter_local_notifications - Local notifications
- sign_in_with_apple - iOS authentication
- google_sign_in - Google OAuth
- device_calendar - Calendar sync
- file_picker - File selection
- image_picker - Camera/gallery access
- Provider Pattern: Reactive state management
- Repository Pattern: Data access abstraction
- Service Layer: Business logic encapsulation
- Feature-First Architecture: Modular organization
- Clean Architecture: Separation of concerns
- SOLID Principles: Maintainable code structure
- Flutter SDK (>=3.32.0, <4.0.0)
- Dart SDK (>=3.8.0)
- Firebase CLI
- Node.js (for Firebase Functions)
- Git
- IDE (VS Code or Android Studio)
-
Clone the repository
git clone https://github.com/your-org/fermi-plus.git cd fermi-plus -
Install Flutter dependencies
flutter pub get
-
Firebase Configuration
# Install Firebase CLI npm install -g firebase-tools # Login to Firebase firebase login # Initialize Firebase (if needed) flutterfire configure --project=teacher-dashboard-flutterfire
-
Environment Setup Create a
.envfile in the root directory:GOOGLE_OAUTH_CLIENT_ID=your_client_id GOOGLE_OAUTH_CLIENT_SECRET=your_client_secret
-
Platform-Specific Setup
Android:
- Place
google-services.jsoninandroid/app/
iOS:
- Place
GoogleService-Info.plistinios/Runner/ - Configure Sign in with Apple in Xcode
Web:
- Firebase config is embedded in
web/index.html
- Place
# Web (recommended for development)
flutter run -d chrome
# Android
flutter run -d android
# iOS (macOS only)
flutter run -d ios
# Windows
flutter run -d windows
# List all available devices
flutter devices# Web
flutter build web --release
# Android APK
flutter build apk --release
# Android App Bundle
flutter build appbundle --release
# iOS
flutter build ios --release
# Windows
flutter build windows --release// Users Collection
users/{userId} {
email: string,
displayName: string,
role: "teacher" | "student" | "parent" | "admin",
createdAt: timestamp,
emailVerified: boolean,
profileImageUrl?: string,
settings?: object
}
// Classes Collection
classes/{classId} {
teacherId: string,
name: string,
subject: string,
gradeLevel: string,
enrollmentCode: string,
studentIds: string[],
createdAt: timestamp,
academicYear: string,
isArchived: boolean
}
// Assignments Collection
assignments/{assignmentId} {
classId: string,
teacherId: string,
title: string,
description: string,
dueDate: timestamp,
points: number,
status: "draft" | "published" | "closed",
attachments?: string[],
rubric?: object
}
// Behavior Points Collection
behaviorPoints/{pointId} {
studentId: string,
teacherId: string,
classId: string,
points: number,
category: string,
description: string,
createdAt: timestamp,
isPositive: boolean
}
// Grades Collection
grades/{gradeId} {
studentId: string,
assignmentId: string,
classId: string,
score: number,
maxScore: number,
feedback?: string,
submittedAt: timestamp,
gradedAt: timestamp
}
// Messages Collection
messages/{messageId} {
senderId: string,
recipientIds: string[],
content: string,
timestamp: timestamp,
readBy: object,
attachments?: string[]
}
// Discussion Boards Collection
discussionBoards/{boardId} {
classId: string,
title: string,
description: string,
createdBy: string,
createdAt: timestamp,
posts: subcollection
}The application implements comprehensive Firestore security rules that ensure:
- Authentication Required: All database access requires authentication
- Role-Based Access: Teachers, students, and parents have different permissions
- Data Isolation: Users can only access their authorized data
- Email Verification: Sensitive operations require verified email
- Domain Validation: School email domains are enforced
- Write Protection: Only authorized users can modify data
Example security rule pattern:
match /classes/{classId} {
allow read: if request.auth != null &&
(isTeacher() || isStudentInClass(classId));
allow write: if request.auth != null &&
isTeacher() && request.auth.uid == resource.data.teacherId;
}test/
βββ unit/ # Unit tests for services and models
βββ widget/ # Widget tests for UI components
βββ integration/ # Integration tests
βββ fixtures/ # Test data and mocks
# Run all tests
flutter test
# Run tests with coverage
flutter test --coverage
# Run specific test file
flutter test test/unit/auth_service_test.dart
# Run integration tests
flutter test integration_test/# Analyze code
flutter analyze
# Format code
dart format .
# Check for issues
dart fix --dry-run
# Apply fixes
dart fix --applyThe project includes comprehensive CI/CD automation:
-
CI Workflow (
01_ci.yml)- Code quality checks
- Dead code detection
- Linting and formatting
- Triggered on pull requests
-
Web Deployment (
02_deploy_web.yml)- Builds production web app
- Deploys to Firebase Hosting
- Updates Firestore rules
- Triggered on main branch
-
Platform Releases
- Windows release workflow
- macOS release workflow
- Mobile build workflows
-
Code Review Automation
- Claude Code review integration
- Gemini AI-powered issue triage
- Automated PR reviews
# Deploy everything to Firebase
firebase deploy
# Deploy specific services
firebase deploy --only hosting
firebase deploy --only firestore:rules
firebase deploy --only storage:rules
firebase deploy --only functions
# Preview deployment
firebase hosting:channel:deploy preview- Lazy Loading: Components load on demand
- Image Caching: Cached network images for performance
- Pagination: Large lists are paginated
- Debouncing: Search and input optimization
- Code Splitting: Web build optimization
- Tree Shaking: Unused code elimination
- Firebase Performance Monitoring
- Custom performance metrics
- Error tracking with stack traces
- User session analytics
- OAuth 2.0: Secure authentication
- Email Verification: Required for sensitive operations
- Domain Validation: School email enforcement
- Role-Based Access: Granular permissions
- Data Encryption: In-transit and at-rest
- Session Management: Secure token handling
- FERPA Compliant: Educational privacy standards
- COPPA Considerations: Child privacy protection
- Data Minimization: Only essential data collected
- User Control: Data export and deletion
- Transparent Policies: Clear privacy documentation
We welcome contributions! Please see our Contributing Guidelines.
- Fork the repository
- Create feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'feat: add amazing feature') - Push to branch (
git push origin feature/AmazingFeature) - Open Pull Request
feat:New featuresfix:Bug fixesdocs:Documentationstyle:Formattingrefactor:Code restructuringtest:Testingchore:Maintenance
- β Core platform features
- β Multi-platform support
- β Real-time collaboration
- β Behavior point system
- β Firebase integration
- β Student management improvements
- Parent portal enhancements
- Advanced analytics dashboard
- Attendance tracking system
- Report card generation
- Bulk import/export tools
- AI-powered insights
- Video conferencing integration
- LMS integration (Canvas, Blackboard)
- Multi-language support
- Custom branding options
- Offline mode with sync
- Voice assistant integration
- AR/VR learning experiences
- Blockchain certificates
- API for third-party integrations
- Documentation: Wiki
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: support@fermi-plus.com
- Discord: Join our community
This project is licensed under the MIT License - see the LICENSE file for details.
- Flutter team for the amazing framework
- Firebase team for the robust backend platform
- Material Design team for design guidelines
- Open source community for invaluable packages
- Our educators for feedback and insights
- Students and parents for their patience and support
Built with β€οΈ by the Fermi Plus Team
Transforming education through technology, one classroom at a time.