Skip to content

ASTRALLIBERTAD/LMS-alternative

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

75 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

LMS Alternative

Python Flet Google Drive API

๐Ÿ“– Description

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.

๐ŸŽฏ Purpose

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.


โœจ Features

๐ŸŽ“ LMS Features

  • ๐Ÿ“‹ 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 Drive Management

  • ๐Ÿ” 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

๐Ÿ“‹ Prerequisites

  • Python 3.8 or higher
  • Google Cloud Platform project with Drive API enabled
  • OAuth 2.0 credentials (credentials.json)
  • Firebase project for notifications

๐Ÿš€ Installation

1. Clone the Repository

git clone https://github.com/ASTRALLIBERTAD/LMS-alternative.git
cd LMS-alternative

2. Create Virtual Environment

python -m venv venv

# Windows
venv\Scripts\activate

# macOS/Linux
source venv/bin/activate

3. Install Dependencies

pip install flet google-auth google-auth-oauthlib google-api-python-client plyer firebase-admin

4. Set Up Google Cloud Credentials

  1. Go to Google Cloud Console
  2. Create a new project
  3. Enable Google Drive API:
    • Navigate to APIs & Services โ†’ Library
    • Search for Google Drive API โ†’ Enable
  4. 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
  5. Save the file as credentials.json in the services/ folder:
    src/services/credentials.json
    
  6. Add test users:
    • Go to APIs & Services โ†’ OAuth consent screen
    • Add Gmail accounts that will test the app

5. Set Up Firebase for Notifications

  1. Go to Firebase Console
  2. Create a new project
  3. Generate Firebase Admin SDK credentials:
    • Project Settings โ†’ Service Accounts โ†’ Generate New Private Key
    • Save as firebase-admin-credentials.json in services/ folder
  4. Get Firebase configuration:
    • Project Settings โ†’ General โ†’ Your Apps
    • Copy the config and create firebase_config.json in services/ 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"
    }
  5. Generate web push key:
    • Project Settings โ†’ Cloud Messaging โ†’ Web Push certificates
    • Generate key pair and create web.json in services/ 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)

โš ๏ธ Security: Add these files to .gitignore to prevent committing sensitive credentials!

๐ŸŽฎ Usage

Run the application:

flet main.py

First Launch

  1. Click "Login with Google"
  2. A browser window will open for Google authentication
  3. Grant the requested permissions
  4. You'll be redirected to the main dashboard

Main Features

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

๐Ÿ“ Project Structure

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 environment

๐Ÿ”ง Configuration

The 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)

๐Ÿ›ก๏ธ Security

  • 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
    

๐Ÿ“ Supported Google Drive Link Formats

The app supports pasting links in these formats:

  • https://drive.google.com/drive/folders/FOLDER_ID
  • https://drive.google.com/file/d/FILE_ID
  • https://drive.google.com/...?id=ID

๐Ÿค Contributing

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:

  1. Fork the repository
  2. Follow the setup instructions in CONTRIBUTING.md
  3. Create a feature branch: git checkout -b feature/amazing-feature
  4. Make your changes and commit: git commit -m "feat: add amazing feature"
  5. Push to your fork: git push origin feature/amazing-feature
  6. Open a Pull Request

๐Ÿ“„ License

This project is licensed under the MIT License. See LICENSE for more information.

๐Ÿ™ Acknowledgments

  • Flet โ€“ Cross-platform UI framework for Python
  • Google Drive API โ€“ Cloud storage API
  • Firebase โ€“ Cloud messaging and notifications

๐Ÿ“ž Support

About

A Python-based desktop/mobile application built with Flet that combines Google Drive file management with a learning management system (LMS).

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages