Code Monkey home page Code Monkey logo

archive-me's Introduction

Project Status

CodeQL Docker Image CI Run Behave Tests Run Blackboard Session Tests

Archive-Me

Archive Me is a tool for students to easily archive and track their course materials on Blackboard. It helps students store and organize their coursework for long-term access and reference. This tool is useful for college students to preserve their academic records.

This platform is specifically designed for Kettering University students to extract their course information from Blackboard. It uses session requests and Python to automate the login process and extract the necessary data. Please note that this tool is only intended for use by Kettering University students. I apologize for any inconvenience this may cause to users from other institutions.

Background

I developed Archive-Me, a full-stack application project, during my breaks from work and school. It's hosted on a Raspberry Pi 4 and utilizes Github Actions, Watchtower, and Portainer for seamless integration. The system automates build and deployment processes in response to PRs and main branch updates. The application uses NGINX as a reverse proxy to manage incoming traffic and expose specific ports. It routes requests to the uWSGI server, which communicates with the Flask application via WebSocket. A system diagram is provided for detailed architecture.

System Diagram

The diagram below displays how the user authentication process is employed by Archive-Me, detailing the steps involved in authenticating a user's access to various resources.

User Authentication

Below is the session diagram which goes more indepth with how user sessions are handled.

Session Diagram

Features

  • Automated login

  • Course information extraction

  • Data organization

Intended for Kettering University students: This tool is specifically designed for use by students at Kettering University and may not be compatible with other institutions.

    

Usage/Demo

Demo: Archive Demo

Try Archive-Me out here!

Stats

Lifetime Users!

Authors

Descripton

Archive Me is a Python-based tool specifically designed for Kettering University students to efficiently archive and manage their course materials and grades on Blackboard. By leveraging session requests for automated login and web navigation, along with Beautiful Soup for parsing web content, it extracts detailed course information and organizes it for easy access and long-term reference. Try it out here.

archive-me's People

Contributors

themanwholikestocode avatar

Stargazers

anthony avatar  avatar David  avatar

Watchers

Kostas Georgiou avatar  avatar

archive-me's Issues

[Feature] - Task Queue

Having a task queue to allow for multiple users at once so when one user is scraping it won't stop another user from login in.

[P2] File Mangement Test Coverage increase.

Add and implement test coverage both behave and unit tests for the File Management. I also don't know if it's worth turning it into an object or just keep them as functions.

[P2] Login Indexing

Describe the bug
When user's login they're successfully logged in however on the backend in the logs there's an indexing error in the logs.

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'loginpage'
  2. Login
  3. Observe error

Expected behavior
Not quite sure what's causing this or how significant this is however I'm 99% sure it's not supposed to be doing this.

[Bug] - Blackboard Session Manager - Failed Login Session Management

Priority Level

{"label"=>"P2 - Medium"}

Describe the bug

The case were a login is incorrect it creates a blackboard session with a not logged in tag. This is correct but I don't like that there's just memory being held up with failed log in even though they're deleted after 60 minutes.

To Reproduce

  1. Fail a login
  2. See the session not get deleted

Expected Behavior

  1. On a failed login
  2. Possibly delete the session?

Actual Behavior

  1. Fail a login
  2. See the session not get deleted

Screenshots

No response

Additional context

No response

[Bug] - Test Issue

Priority Level

{"label"=>"P1 - High"}

Describe the bug

This is a test issue

To Reproduce

This is a test issue

Expected Behavior

This is a test issue

Actual Behavior

This is a test issue

Screenshots

No response

Additional context

No response

[{{ priority-level.label }}] -

Priority Level

{"label"=>"P2 - Medium"}

Describe the bug

Test

To Reproduce

Test

Expected Behavior

Test

Actual Behavior

test

Screenshots

No response

Additional context

No response

Search Bar / Functionality

Is your feature request related to a problem? Please describe.
When more folders get added to the directory it'll become tedious to scroll through all of them.

Describe the solution you'd like
It'll be better to have a search bar and a limited view.

Describe alternatives you've considered

  • Search Bar
  • Limited Page View
  • Nothing

Documentation

Is your feature request related to a problem? Please describe.
Increased documentation using visuals to help display what exactly this program is doing

[P1] Naming Courses

Describe the bug
The naming of course folders isn't working correctly.

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'userpage'
  2. Click on 'directory'
  3. See long course names

Expected behavior
There's supposed to be a formatted course name to allow for easier parsing of directory.

Screenshots
image

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

Js Query Optimization

Issue: Optimize Redundant Queries in JavaScript

Problem:

JavaScript executes redundant queries without saving them. For example, when navigating to the "demo" section then directory, the query is repeated.

Expected:

Optimize code to save and reuse queries, reducing redundancy.

Steps to Reproduce:

  1. Go to "archive-me.net/demo."
  2. Open console and notive how it's sending a get request to browse

Additional Info:

  • JavaScript environment.
  • Any query libraries or frameworks in use.

Solution:

Implement query caching or js rework

[P2] - Incorrect Handling of Logged in users

Priority Level

  • P0 - Critical
  • P1 - High
  • P2 - Medium

Describe the bug
instead of correctly handling the case where a logged in user is attemping to login it instead returns an indexing error and proceeds as expected

To Reproduce
Steps to reproduce the behavior:

  1. Login
  2. Clear cookies
  3. Login again

Expected Behavior
It's supposed to return already logged in and take the user to the user page

Actual Behavior
It asks the user for their login information and "logs" them in

[P0] Loading Screen Not Loading

Describe the bug
Loading screen not displaying when archive button is pressed. This causes users to spam the button which locks the servers.

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'userpage'
  2. Click on 'archive X times'
  3. Watch the world burn

Expected behavior
Have a cooldown per user or have a loading screen to stop the user from clicking the button allowing them to know it's working

Screenshots
Frozen system

[P2] Fix Cumulative Action

Describe the bug
when set to run at the end of the day it runs for the next day instead of the current day. Auto merge failing as well.

Expected behavior
Once at the end of each day get the visitors from cloudflare and update the visual.

Empty Folder, Single File Navigation

Describe the bug
When navigating to the file directory on Archive-Me and clicking a folder containing nothing or a single file it fails to fetch instead of getting the correct error message

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'directory'
  2. Click on 'All the folders'
  3. See error

Expected behavior
Gracefully catch by returning the single file or returning that the folder is empty

Screenshots
N/A

Desktop (please complete the following information):

  • Browser Chrome

Additional context
Add any other context about the problem here.

[P0] Fix blackboard scraper for other users

Describe the bug
Failed to load bug

To Reproduce
Steps to reproduce the behavior:

  1. Go to Login
  2. Login
  3. Click Archive Courses
  4. Fails

Expected behavior
It's supposed to archive the users' courses.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: IOS
  • Browser: Safari

Smartphone (please complete the following information):

  • Device: IPAD
  • OS: Newest IOS 1/18/2024

Additional context
I assume this issue stems from my correction to blackboard session class that works for off term students

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.