Coder Social home page Coder Social logo

prairie-learn-deadline-feature's Introduction

prairie-learn-deadline-feature

Inspiration

Every time we log in to PrairieLearn, all we really care about is which assignments are upcoming. However, it can be time-consuming and tedious to manually go through every course instance to find all the upcoming assignments, which has resulted in us missing deadlines. To solve this problem, we wanted to create a tool that would easily display upcoming assignments and add them to our Google Calendar, so that we could get notifications.

What it Does

Our program parses all the relevant course data on the user's PrairieLearn homepage, and then sorts it by the most recent deadlines. Then we add sub-sections to each course instance in the homepage displaying the upcoming assignments in a clickable view that redirects them to the given assignment. Additionally, you can export your assignments to Google Calendar such that all assignment instances that exist get added to PrairieLearn.

We built the tool mostly using the Beautiful Soup and Selenium libraries. Parsing the data was done by reading and inspecting a lot of the elements since the data is all rendered client-side. We faced some challenges while parsing the data since the structure of loading all the elements into Python was not straightforward, and the Beautiful Soup docs were not that helpful. However, we were able to figure it out by working together as a team and experimenting with different approaches.

Adding elements, and especially the deadline course instances to the home page was really challenging since we were building it using Python, and the code was not robust enough to add a JavaScript environment to it. Therefore, we had to code the JavaScript using Python scripting and string insertions. This was a very time-consuming process, but it helped us to understand how the front-end and back-end interact with each other.

Working with the Google Calendar API proved to be non-trivial, and we faced a lot of issues by integrating the PrairieLearn data into a large-scale object that can be created into calendar event instances. However, we were able to overcome these issues by working collaboratively and breaking down the problem into smaller sub-problems.

Accomplishments that we're proud of

We are extremely proud of our teamwork and how well we were able to delegate tasks based on each member's interests. When we first got all the data in a representable object, and being able to push events to the calendar using the data was an incredible breakthrough moment for the group that we all enjoyed.

Another accomplishment that we are proud of is learning many good team practices in coding, especially using git as a team, and maintaining different branches in an organized manner. We also learned all the tech we used for this project, including Beautiful Soup, Selenium, and all the Google APIs we had to use.

What we learned

We learned that altering some small sections of a website is a lot more work than it seems like. We also learned how to work collaboratively as a team to overcome complex problems. Additionally, we gained a lot of experience working with the different technologies we used for this project, such as Beautiful Soup, Selenium, and Google APIs.

What's next for PrairieLearn Deadline Calendar View

Our next step is to make the tool more user-friendly and scalable. We want to integrate it fully into the browser, so that the script doesn't have to re-run every time we want to use it. We can do this in two different ways. We can add it as a Chrome extension, or we can try to create a pull request to the open-sourced PrairieLearn git and see if we can commit our changes with the main base.

On top of that, there are a lot of design choices we want to add, such as being able to alter how many upcoming assignments are available and how the Google Calendar implementation is for each

Built With

beautiful-soup css github google google-calendar html5 javascript pycharm python selenium

prairie-learn-deadline-feature's People

Contributors

danielodicho avatar nlnhsr avatar y3jun avatar korokkun avatar

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.