A modern, offline-capable Cross-Platform Mobile Application built with Flutter and Firebase. This application serves as a comprehensive University Lecture Management System, designed for Students, Teachers, and Administrators to seamlessly manage educational content and collaborate.
- Role-Based Authentication (RBAC): Distinct interfaces and privileges for Students, Teachers, and Admins.
- Lecture & Document Management: Upload, view, and manage PDF lectures effortlessly. (Integrated with Zipline Storage for reliable multipart uploading).
- Offline Support: Caching system allows students to view previously loaded lectures and announcements without an internet connection.
- AI Chat Assistant: Integrated AI study partner powered by n8n workflows and an Express.js proxy.
- Announcements System: Real-time push notifications and global announcements for homework, exams, and university events.
- Customizable Theming: Beautiful Light & Dark mode setups with user-configurable accent presets.
- Cross-Platform: Compiles to iOS, Android, macOS, Windows, Linux, and Web from a single codebase.
- Framework: Flutter (Dart)
- Backend & Database: Firebase (Auth, Firestore)
- Cloud Storage: Zipline (Object Storage for PDFs)
- AI Backend: Express.js Proxy + n8n + PostgreSQL
- State Management: Provider
- Local Storage: Flutter Secure Storage (for offline caching)
Follow these instructions to get a copy of the project up and running on your local machine for development and testing purposes.
You will need the following installed on your environment:
- Flutter SDK (Version 3.24+ recommended)
- Dart SDK
- An IDE (Android Studio, VS Code, or IntelliJ)
- A Firebase Project
git clone https://github.com/AhmadTchnology/LMS_Mobile_App.git
cd LMS_Mobile_App/lms_mobile_appFetch all the required Dart packages:
flutter pub getThis project relies on localized environment variables and Firebase configurations that are intentionally excluded from version control to protect API keys.
-
Firebase Configuration:
- Open
lib/config/firebase_config.example.dart - Duplicate the file and rename it to
firebase_config.dart - Replace the placeholder variables (
YOUR_API_KEY_HERE, etc.) with the actual credentials from your Firebase Console.
- Open
-
Backend & AI Configuration:
- Open
lib/config/env_config.example.dart - Duplicate the file and rename it to
env_config.dart - Insert your Zipline URLs, API Tokens, and your Express AI Proxy endpoint.
- Open
You can run the application on any connected emulator or device.
To run on a mobile emulator (iOS/Android):
flutter runTo run on Chrome (Web):
Note: If connecting to the AI Express proxy backend, you must run the web server specifically on port 5173 to bypass CORS whitelisting.
flutter run -d chrome --web-port=5173lms_mobile_app/
├── lib/
│ ├── config/ # Environment and Firebase configs
│ ├── models/ # Dart data models (UserModel, LectureModel)
│ ├── providers/ # State management (AuthProvider, ThemeProvider)
│ ├── screens/ # UI Pages (Admin, Teacher, Student views)
│ ├── services/ # External API communicators (Firestore, Zipline, AI)
│ ├── theme/ # App styling, Colors, and Dark Mode definitions
│ └── main.dart # Application Entry Point- Firebase Rules: Ensure your Firestore database rules restrict access appropriately based on the User's role (
uidvalidation). - Secrets: Never commit
firebase_config.dartorenv_config.dart. They are strictly tracked in.gitignore.
Contributions, issues, and feature requests are always welcome! Feel free to check the issues page before opening a pull request.