The Problem and How CoRe Solves It
Accessibility to education, especially CS education, comes at a price. Quite literally. There are a vast number of resources and courses available on the internet, however for somebody who is trying to self-learn, it is difficult to find quality resources at a low cost. One of the biggest hindrances to availing a CS education/resources is the cost of these courses that one has to bear. With CoRe, finding free or low-cost CS content is a few keystrokes away.
CoRe (or Course Refiner) is a webapp that sources the cheapest courses from major learning platforms, like Udemy and Udacity, and displays them in a comparative fashion. Alongside this, CoRe also displays similar free resources such as YouTube playlists that cover the same CS content.
Team Member Had to Leave
The day after we settled on the idea and started opening issues on GitHub, one of our teammates found a great opportunity that he couldn't pass up. This unfortunately meant that he couldn't stay on with the Fellowship, and therefore, participate in the hackathon. We had already began to divvy up the tasks, so some time was spent reassigning and prioritizing. Fortunately, once we regained our bearings, the team's momentum continued strong.
Finding Suitable Course APIs
CoRe's main goal is to quickly find affordable online Computer Science courses according to the user's key terms. For this to work, we needed reliable places to access a large quantity of course information. Many popular course publishers have course catalog APIs, though they are often unmaintained. This resulted in a lot of time was spent on researching these APIs, from documented endpoints not returning data as expected, to using trial and error to learn about undocumented routes. Ultimately, we were able to reliably get meaningful course and pricing information Udemy's and Udacity's APIs.
Stylex and the Frontend
Integration and configuring Stylex was quite a task - inspite of clear documentation as this was our first attempt at it. We managed to get it injected into babel and have leveraged this open-source library for all internal styling for the application!
If We Had More Time
If we had more time to develop CoRe before the hackathon submission, we would have liked to include course catalogs from more course publishers, like edX and Coursera. Additionally, some quality of life additions like auto-complete and filtering (by ratings/reviews, by course publisher, etc.)
The following integrations are planned for the next versions of CoRe:
- UI Layout to highlight free courses/segregate free and paid resources
- Include course catalogs from other major CS education platforms
- Embedd a preview within the app itself for youtube videos
What We Learned
- Working with React.js
- Modelling API responses to a general front-end
I learned a lot of things through this whole week, the highlights being:
Integration of an e2e application using React + Express.js
Injection of third party libraries like Stylex along with Craco.js integration
Working with API responses and integrating them to the frontend
Foresight is important: It is crucial to analyse the constraints you are working with before jumping straight into developing the project as this would allow you to take all factors into consideration thus helping you make the correct decisions
This was my first time really learning about and using GitHub's organizational features when concepting, planning, and implementing functionality. It was actually kind of fun to link issues and PRs together and have this interconnected sense of progress spanning the project. Furthermore, it was great to have a tangible list of things that have to get done and easily link them to PRs.