A modern Flutter application for viewing Moodle assignment deadlines with a beautiful, priority-based interface.
Built to improve two things about Moodle's default experience:
- Notifications — proactive, deadline-aware reminders for upcoming assignments
- Home-screen widget — see upcoming assignments at a glance without opening the app
Personal app I use to track my own Moodle deadlines — not on the Play Store.
- 🎨 Priority-Based Design: Color-coded cards (red for today, yellow for tomorrow, blue for future)
- 🕐 Time-Based Greetings: Personalized Hebrew greetings based on time of day
- 📊 Smart Categorization: Events grouped by היום, מחר, השבוע, שבוע הבא, החודש, מעל חודש
- 🌙 Dark Mode Support: Beautiful dark theme for night usage
- 🔔 Smart Notifications: Get notified about upcoming deadlines
- 🏠 Home Screen Widget: View your tasks directly from your home screen
- 📱 Cross-Platform: Works on Android (iOS coming soon)
- 🎯 Material Design 3: Modern, clean UI following Material guidelines
- Flutter SDK (≥3.10.1)
- Dart SDK (≥3.0.0)
- A Moodle account with API access
-
Clone the repository:
git clone <repository-url> cd moodle-monitor
-
Install dependencies:
flutter pub get
-
Configure environment variables:
Create a
.envfile in the root directory:MOODLE_TOKEN=your_moodle_api_token MOODLE_URL=https://your-moodle-instance.com
-
Run the app:
flutter run
- Log in to your Moodle instance
- Go to: Profile → Preferences → Security Keys
- Create a new service token
- Copy the token to your
.envfile
This project follows a feature-based architecture with clear separation of concerns:
lib/
├── constants/ # Colors, strings, text styles
├── models/ # Data structures
├── services/ # API clients
├── utils/ # Business logic
├── widgets/ # Reusable UI components
└── screens/ # Top-level pages
For detailed architecture documentation, see ARCHITECTURE.md.
- Constants (
lib/constants/): Centralized styling and strings - Models (
lib/models/): Data models (MoodleEvent) - Services (
lib/services/): Moodle API integration - Utils (
lib/utils/): Business logic (date grouping, event counting, greetings) - Widgets (
lib/widgets/): Reusable components (EventCard, GreetingHeader) - Screens (
lib/screens/): Main application screens
- Follow Dart Style Guide
- Use
flutter formatbefore committing - Run
flutter analyzeto check for issues
Add all user-facing strings to lib/constants/app_strings.dart:
static const String newString = 'תרגום בעברית';Colors are defined in lib/constants/app_colors.dart:
- High Priority (Today): Pastel Red (#EF5350)
- Medium Priority (Tomorrow): Pastel Yellow (#FFCA28)
- Low Priority (Future): Pastel Blue (#64B5F6)
flutter build apk --release
# or for Google Play
flutter build appbundle --releaseflutter build ios --release# Run all tests
flutter test
# Run with coverage
flutter test --coverage- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
See the issues page for known bugs and planned enhancements.
- Built with Flutter
- Uses Moodle Web Services API
- Icons from Material Symbols
For questions or issues:
- Check ARCHITECTURE.md
- Search existing issues
- Create a new issue with details
Made with ❤️ using Flutter



