Skip to content

ASTRALLIBERTAD/LMS-alternative

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

32 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
  • ๐Ÿ“‚ Shared Drives Support โ€“ Access and browse shared drives
  • ๐Ÿ”— Paste Drive Links โ€“ Open folders/files directly by pasting Google Drive links
  • โญ Favorites โ€“ Save frequently accessed folders organized by category
  • ๐Ÿ“ 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)

๐Ÿš€ Installation

1. Clone the Repository

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

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

4. Set Up Google Cloud Credentials

  1. Go to Google Cloud Console.

  2. Create a new project.

  3. In the left sidebar, go to APIs & Services โ†’ Library.

  4. Search for Google Drive API.

  5. Click on Google Drive API โ†’ Enable.

  6. Go to APIs & Services โ†’ Credentials.

  7. Click Create Credentials โ†’ OAuth 2.0 Client ID.

  8. If prompted, configure the OAuth consent screen:

    • Select External for testing or Internal if only for your organization.
    • Fill in App Name, User Support Email, and Developer Email.
    • Save and continue (you can skip scopes for now for basic setup).
  9. Back to Create OAuth 2.0 Client ID:

    • Select Desktop App as the application type.
    • Give it a name (e.g., MLS-alternative).
    • Click Create.
  10. After creating, click Download JSON.

  11. Save it in your project folder, e.g., services/credentials.json.

  12. In the left sidebar:

    • APIs & Services โ†’ OAuth consent screen
  13. Scroll down to the section Test users.

  14. Click Add users.

  15. Enter the Gmail accounts that will be allowed to use your OAuth app in testing mode:

    • You can add your own Gmail.
    • You can add multiple test accounts if needed.

๐ŸŽฎ 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/
โ”œโ”€โ”€ main.py                 # Application entry point
โ”œโ”€โ”€ README.md               # Project Overview
โ”œโ”€โ”€ saved_links.json        # Saved Drive links (auto-generated)
โ”œโ”€โ”€ favorites.json          # Saved favorites (auto-generated)
โ”œโ”€โ”€ services/
โ”‚   โ”œโ”€โ”€ auth_service.py     # Google OAuth authentication
โ”‚   โ”œโ”€โ”€ drive_service.py    # Google Drive API operations
โ”‚   โ”œโ”€โ”€ credentials.json    # OAuth credentials (you provide)
โ”‚   โ””โ”€โ”€ token.pickle        # Auth token (auto-generated)
โ”œโ”€โ”€ ui/
โ”‚   โ”œโ”€โ”€ dashboard.py        # Main dashboard UI
โ”‚   โ”œโ”€โ”€ login.py            # Login screen
โ”‚   โ””โ”€โ”€ custom_control/     # Custom UI components
โ””โ”€โ”€ venv/                   # Virtual environment

๐Ÿ”ง Configuration

The application stores configuration in the following files:

File Purpose
services/credentials.json Google OAuth credentials (required)
services/token.pickle Authentication token (auto-generated)
saved_links.json Saved Drive links
favorites.json Favorite folders by category

๐Ÿ›ก๏ธ Security

  • OAuth tokens are stored locally in token.pickle
  • Credentials never leave your device
  • Add the following to .gitignore:
    services/credentials.json
    services/token.pickle
    

๐Ÿ“ 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! Follow these steps to contribute to this project:

1. Fork the repository

Click the Fork button at the top-right of this repository to create your own copy.

2. Clone your fork locally

git clone https://github.com/<your-username>/LMS-alternative.git 
cd LMS-alternative

3. Setup the Workspace

3.1 Create Virtual Environment:

python -m venv venv

# Windows
venv\Scripts\activate

# macOS/Linux
source venv/bin/activate

3.2 Install Dependencies:

pip install flet google-auth google-auth-oauthlib google-api-python-client

3.3 Set Up Google Cloud Credentials

  1. Go to Google Cloud Console.

  2. Create a new project.

  3. In the left sidebar, go to APIs & Services โ†’ Library.

  4. Search for Google Drive API.

  5. Click on Google Drive API โ†’ Enable.

  6. Go to APIs & Services โ†’ Credentials.

  7. Click Create Credentials โ†’ OAuth 2.0 Client ID.

  8. If prompted, configure the OAuth consent screen:

    • Select External for testing or Internal if only for your organization.
    • Fill in App Name, User Support Email, and Developer Email.
    • Save and continue (you can skip scopes for now for basic setup).
  9. Back to Create OAuth 2.0 Client ID:

    • Select Desktop App as the application type.
    • Give it a name (e.g., MLS-alternative).
    • Click Create.
  10. After creating, click Download JSON.

  11. Save it in your project folder, e.g., services/credentials.json.

  12. In the left sidebar:

    • APIs & Services โ†’ OAuth consent screen
  13. Scroll down to the section Test users.

  14. Click Add users.

  15. Enter the Gmail accounts that will be allowed to use your OAuth app in testing mode:

    • You can add your own Gmail.
    • You can add multiple test accounts if needed.
  16. Click Save.

4. Create a feature branch

git checkout -b feature/amazing-feature

5. Make your changes

Implement your feature or fix a bug.

6. Commit your changes

git add .
git commit -m "Add amazing feature"

7. Push to your branch

git push origin feature/amazing-feature

8. Open a Pull Request (PR)

Go to your fork on GitHub and click Compare & Pull Request to submit your changes to the original repository.

Tips: Keep branch names descriptive (feature/... or fix/...), write clear commit messages, and make sure your code is tested before submitting.

๐Ÿ“„ License

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

๐Ÿ™ Acknowledgments

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages