Inspiration
We all know finding a study group is a good idea. However, for students with busy schedules, organizing times that everyone can meet is a hassle. As a group, we envisioned a service that would would allow students to find common meeting times at the push of a button.
What it does
Students can submit their iCalendar schedules from myPurdue to our StudyWithClass, and it will automatically find other students in the same classes and form study groups based on common free times. StudyWithClass will then send text messages to students with common free time to start a group conversation based on a selection prompt for times that work.
How we built it
We built the majority of this project's backend in Python, and the frontend was designed using flask and bootstrap. The backend logic starts by using the iCalendar API to parse students' schedules and determine common time slots where students (in the same classes) do not have classes- with a little bit of help from SQLite. Flask is then used as the "bridge" between the backend and the frontend, and it had an added benefit of working really well with the twilio python scripts that we used to send out group text messages.
Challenges we ran into
Parsing iCalendar events and handling recurring events: the events(class times) on myPurdue is determined by defining a 'start time' and recurrence rules are used to calculate the rest of the occurrences of the event. We used recurring-ical-events to help and we were able to create a custom algorithm to determine when students had classes recursively. Twilio: None of the members were experienced with the service provided, but with the help of the detailed documentation and staff members on site, we were able to get the service up and running. We ran into some issues regarding specific group chats, but were able to come up with a creative workaround.
Accomplishments that we're proud of
As a team, we're extremely proud of our program's ability to do what we scoped it out to do. It has the ability to determine common study time slots for students in the same classes, given several icalendar links. Not only that, we're able to send real people text messages to notify them over SMS what groups they were placed in. When we got that working for the first time, our minds were collectively blown and we got even more excited about the project.
What we learned
How to use Twilio to connect students in the same class, helping them form study groups. Creating a weekly schedule for a student by parsing an iCalendar URL. How to use Flask in parallel with other program extensions. Setting up a virtual environment to test our services and simulate an online environment.
What's next for StudyWithClass
Optimize the search for common time slots by using datetime objects. Allow students to specify range of time they are willing to study (e.x. 12:00PM-7:00PM Monday, 11:00AM-5:00PM Friday). Add more activities and sync them with purdue's official event calendar so that people can plan to attend purdue events together.
Log in or sign up for Devpost to join the conversation.