LMS Alternative is a robust desktop application designed to streamline the academic workflow for students and educators. Built with Flet (Python), it functions as a lightweight Learning Management System (LMS) that integrates seamless file management with essential academic tools.
By layering organizational features over Google Drive, this application provides a centralized dashboard where users can manage assignments, track deadlines, and organize course materials without the complexity of traditional LMS platforms. Whether you need to submit assignments, manage shared resources, or simply keep your digital workspace tidy, LMS Alternative offers a simple, efficient solution.
This application serves as a lightweight alternative to traditional Learning Management Systems (LMS), specifically designed to solve common student challenges:
- ๐ Centralized Assignment Management โ No more hunting through countless Google Drive links for different subjects and assignments
- โ To-Do List with Smart Notifications โ Track assignments with due dates and get timely reminders before and after deadlines
- โฐ Time Tracking โ See remaining time for each assignment at a glance
- ๐ Quick Link Access โ Organize and access all your course folders and assignment submission links in one place
- ๐ Subject-Based Organization โ Keep everything organized by subject/course for easy navigation
Perfect for students who need a simple, efficient way to manage their academic workload without the complexity of full-featured LMS platforms.
- ๐ Assignment To-Do List โ Create and manage assignments with due dates
- ๐ Smart Notifications โ Get reminders before and after assignment due dates
- โฑ๏ธ Time Remaining Tracker โ Visual countdown showing time left to complete tasks
- ๐ Subject Organization โ Organize assignments and folders by course/subject
- ๐ Assignment Link Management โ Store and quickly access Google Drive submission folders for each assignment
- ๐ Google OAuth Authentication โ Secure login using your Google account
- ๐ Browse & Navigate โ Explore your Google Drive folders with an intuitive interface
- ๐ Search โ Quickly find files and folders across your Drive
- ๐ Paste Drive Links โ Open folders/files directly by pasting Google Drive links
- ๐ File Operations โ Create folders, upload files, rename, and delete
- ๐พ Saved Links โ Keep a list of important Drive links for quick access
- ๐ Caching โ Smart caching for improved performance and reduced API calls
- Python 3.8 or higher
- Google Cloud Platform project with Drive API enabled
- OAuth 2.0 credentials (
credentials.json) - Firebase project for notifications
git clone https://github.com/ASTRALLIBERTAD/LMS-alternative.git
cd LMS-alternativepython -m venv venv
# Windows
venv\Scripts\activate
# macOS/Linux
source venv/bin/activatepip install flet google-auth google-auth-oauthlib google-api-python-client plyer firebase-admin- Go to Google Cloud Console
- Create a new project
- Enable Google Drive API:
- Navigate to APIs & Services โ Library
- Search for Google Drive API โ Enable
- Create OAuth 2.0 credentials:
- Go to APIs & Services โ Credentials
- Click Create Credentials โ OAuth 2.0 Client ID
- Configure the OAuth consent screen if prompted
- Select Desktop App as the application type
- Download the JSON file
- Save the file as
credentials.jsonin theservices/folder:src/services/credentials.json - Add test users:
- Go to APIs & Services โ OAuth consent screen
- Add Gmail accounts that will test the app
- Go to Firebase Console
- Create a new project
- Generate Firebase Admin SDK credentials:
- Project Settings โ Service Accounts โ Generate New Private Key
- Save as
firebase-admin-credentials.jsoninservices/folder
- Get Firebase configuration:
- Project Settings โ General โ Your Apps
- Copy the config and create
firebase_config.jsoninservices/folder:
{ "apiKey": "YOUR_API_KEY", "authDomain": "your-project.firebaseapp.com", "projectId": "your-project-id", "storageBucket": "your-project.appspot.com", "messagingSenderId": "123456789", "appId": "1:123456789:web:abcdef123456", "measurementId": "G-XXXXXXXXXX" } - Generate web push key:
- Project Settings โ Cloud Messaging โ Web Push certificates
- Generate key pair and create
web.jsoninservices/folder:
{ "vapidKey": "YOUR_VAPID_KEY_HERE" }
Required files in services/ folder:
credentials.json(Google OAuth)firebase-admin-credentials.json(Firebase Admin SDK)firebase_config.json(Firebase configuration)web.json(Firebase web push key)
.gitignore to prevent committing sensitive credentials!
Run the application:
flet main.py- Click "Login with Google"
- A browser window will open for Google authentication
- Grant the requested permissions
- You'll be redirected to the main dashboard
| Feature | Description |
|---|---|
| Your Folders | Browse folders in your personal Drive |
| Shared Drives | Access shared/team drives |
| Paste Links | Open Drive links directly by pasting them |
| Search | Find files and folders by name |
| New | Create new folders or upload files |
| Favorites | Save folders organized by subject/category |
capstone/
โโโ src/
โ โโโ main.py # Application entry point
โ โโโ assets/
โ โ โโโ icon_android.png
โ โ โโโ icon.png
โ โ โโโ splash_android.png
โ โโโ services/
โ โ โโโ auth_service.py # Google OAuth authentication
โ โ โโโ credentials.json # OAuth credentials (you provide)
โ โ โโโ drive_service.py # Google Drive API operations
โ โ โโโ fcm_integration.py
โ โ โโโ fcm_service.py
โ โ โโโ file_preview_service.py
โ โ โโโ firebase_config.json # Firebase config (you provide)
โ โ โโโ firebase-admin-credentials.json # Firebase Admin SDK (you provide)
โ โ โโโ notification_service.py
โ โ โโโ token.pickle # Auth token (auto-generated)
โ โ โโโ web.json # Firebase web push key (you provide)
โ โโโ ui/
โ โ โโโ custom_control/ # Custom UI components
โ โ โ โโโ __init__.py
โ โ โ โโโ custom_controls.py
โ โ โ โโโ gmail_profile_menu.py
โ โ โ โโโ multi_account_manager.py
โ โ โโโ dashboard_modules/
โ โ โ โโโ __init__.py
โ โ โ โโโ file_manager.py
โ โ โ โโโ folder_navigator.py
โ โ โ โโโ paste_links_manager.py
โ โ โโโ todo_modules/
โ โ โ โโโ __init__.py
โ โ โ โโโ assignment_manager.py
โ โ โ โโโ data_manager.py
โ โ โ โโโ storage_manager.py
โ โ โ โโโ student_manager.py
โ โ โ โโโ submission_manager.py
โ โ โโโ __init__.py
โ โ โโโ firebase_mobile_login.py
โ โ โโโ login.py # Login screen
โ โ โโโ todo_view.py
โ โ โโโ dashboard.py # Main dashboard UI
โ โโโ utils/
โ โ โโโ common.py
โโโ README.md # Project Overview
โโโ CONTRIBUTING.md # Contribution Guidelines
โโโ saved_links.json # Saved Drive links (auto-generated)
โโโ favorites.json # Saved favorites (auto-generated)
โโโ venv/ # Virtual environmentThe application stores configuration in the following files:
| File | Purpose |
|---|---|
services/credentials.json |
Google OAuth credentials (required - you provide) |
services/firebase-admin-credentials.json |
Firebase Admin SDK (required - you provide) |
services/firebase_config.json |
Firebase configuration (required - you provide) |
services/web.json |
Firebase web push key (required - you provide) |
services/token.pickle |
Authentication token (auto-generated) |
saved_links.json |
Saved Drive links (auto-generated) |
favorites.json |
Favorite folders by category (auto-generated) |
- OAuth tokens are stored locally in
token.pickle - Credentials never leave your device
- Add the following to
.gitignore:# Google OAuth services/credentials.json services/token.pickle # Firebase services/firebase_config.json services/firebase-admin-credentials.json services/web.json
The app supports pasting links in these formats:
https://drive.google.com/drive/folders/FOLDER_IDhttps://drive.google.com/file/d/FILE_IDhttps://drive.google.com/...?id=ID
We welcome contributions! Please see our CONTRIBUTING.md for detailed guidelines on:
- Setting up the development environment
- Configuring Google Cloud and Firebase
- Code style guidelines
- Submitting pull requests
- Reporting bugs and suggesting features
Quick Start for Contributors:
- Fork the repository
- Follow the setup instructions in CONTRIBUTING.md
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and commit:
git commit -m "feat: add amazing feature" - Push to your fork:
git push origin feature/amazing-feature - Open a Pull Request
This project is licensed under the MIT License.
See LICENSE for more information.
- Flet โ Cross-platform UI framework for Python
- Google Drive API โ Cloud storage API
- Firebase โ Cloud messaging and notifications
- Documentation: Check CONTRIBUTING.md for detailed setup
- Issues: GitHub Issues
- Questions: Open an issue with the
questionlabel