--> Demo available here! <-- Note: one backend component has not been connected, so we hardcoded some data.
✨ Inspiration
Studying effectively can be a challenge for students, especially throughout the pandemic, where it is difficult to connect with classmates to form study groups. Study++ aims to make it easier for students to study with or without others by providing a way to generate study questions to facilitate active learning.
As students who entered university during the pandemic, it was hard for us to develop the learning habits required for a typical university environment. Many other students our age also faced this problem, so we developed this tool to make our study lives a little easier. Plus, better and shorter study sessions means more time to invest in our personal interests!
🔎 What it does
Study++ is a tool that allows students to extract study questions from a pdf file. Essentially, students can upload a pdf document, and Study++ will analyze the text to give you the most relevant questions. These come in the form of a csv file, which can be uploaded to a study card app.
Here is how to use Study++, step-by-step:
- Open Study++ and upload a PDF file.
- Save the csv file generated by Study++.
- Import the csv file into your favorite study card application. We suggest Anki.
- Study away with your new study questions!
🔧 How we built it
The frontend is a static HTML/JS/CSS site that allows a user to upload a pdf. From there, we extract the text from the pdf, call the APIs and give the user the final csv file.
One component of our backend was made using Node.js. This API uses Natural Language Processing from Google Cloud to analyze the text and decide which questions are the most relevant to the text. The front-end calls this API, which is hosted on Heroku.
Another component of our backend was made using Django. It generates question-answer pairs based on the inputted text.
🏔 Challenges we ran into
Putting everything together: although we were able to get each component working individually, we were not able to host the Django API to suit our project. Because we had limited experience with web-hosting tools, we were not able to figure out how to link all of our components together in time.
Technical challenges: we each faced our own unique technical challenges along the way. Whether it was learning how to read and extract text from a pdf, creating and hosting an API on Heroku or designing the front-end, we all took on and conquered a challenge at our skill levels! We spent time learning from documentation and each other, which took more time than we anticipated.
Sorting out our portion of the analysis: to build onto Google Cloud's API results, we wanted to challenge ourselves to add to it by determining the most relevant questions from the list we get from the API. It took some thorough discussions to work out the logic to accomplish this task, but we certainly learned a lot from bouncing ideas off each other.
Syntax: we all have experience with different programming languages and we had to use languages we were not quite as familiar with in this project. As a result, we struggled with syntax at the beginning of the hackathon, which slowed us down a little.
😊 Accomplishments that we're proud of
This is our first time working together as a team, so we had a fun weekend getting to know each other and creating a project together. Given our scattered technical backgrounds and knowledge, we're glad we were able to coordinate to divvy up the work and complete our project.
We learned new languages and technologies! Some of us were new to what we were working with, and we're proud that we were able to make something together and learn new skills along the way. From working with basic HTML/JS/CSS to creating an API using Node.js, we were all able to learn a bit more about these languages and apply our newly gained knowledge to a real project.
We're proud of our unique retro design! Though we aren't designers by any means, we had a lot of fun designing and implementing a distinctive theme that we think stands out from the popular modern/minimalistic style.
We did not push private credentials to GitHub, hooray!
📈 What we learned
Natural language processing is a lot more complicated than we thought. We started our project thinking we could create a scuffed model from scratch and do it ourselves, but it proved to be quite a daunting feat! Especially since most of us have no experience with machine learning, we quickly realized this was not feasible for a hackathon project. Instead, we decided to use the available tools and build onto them to focus on areas that are within our grasp.
Debugging and miscellaneous tasks take a long time! Since most of us were all looking into technologies we have little experience with, it took a long time to ramp up enough knowledge to put it to use. In future hackathons, we'll try to determine what we will need to work with ahead of time and learn the basics before the hackathon starts. This way, we will be able to dedicate more of our project time to creating rather than learning!
🎈 What's next for Study++
One possible extension would be to create a custom study question app so users can study without having to import the questions to a third-party application. This would make it easer to use Study++, and make questions even more accessible!
We plan to allow users to scan pages using a device's camera, and extract questions from the text found on the page. We recognize that not everybody may have access to a digital copy of their notes, so this would make Study++ compatible with even more file formats.
Log in or sign up for Devpost to join the conversation.