There are three main features CourseCake offers that make university course information more "edible" for developers:
🌐 Web API (REST + GraphQL) coursecake.tisuela.com/api/v1 - docs💾 Database package - docs🔍 Scraper package - docs
CourseCake aims to create an API to access course data, where college course information is unified by our schemas. By making course
Recent Changes
🐴 Support for Calpoly🐌 Support for UCSC via SlugSurvival📚 📝 Separation of the Course Schema into a smaller Course Schema and a Class Schema. A Class is an offering of a Course📈 Implementing a GraphQL endpoint using Graphene.
Cal Poly
Seeking to aid applications like CollegeFlows and PolyFlowBuilder, we hope that CourseCake encourages innovation among students at Cal Poly San Luis Obispo.
UC Santa Cruz
UC Santa Cruz course data is provided by SlugSurvival's API. They have a pretty cool course planning app, check it out.
Y'all have a neat-lookin campus -- I hope CourseCake helps y'all continue to code neat-lookin apps. If you need more features from CourseCake, feel free to open up an issue. I'm always open for help too! Scroll down for cool things to jump in on.
UC Irvine
The motivation of CourseCake is to make it easier to develop tools like AntPlanner and Antscoper, and promote a responsible use of WebSoc by not abusing its resources.
All of the latest scraped data is stored in our database, which avoids congesting WebSoc and allows successful requests even when WebSoc is down.
🤷♂️
Where's my university? Open up an issue! If there's enough of a need, I'm down to add support for your school. If you'd like to help code a scraper or have an API to provide, let me know.
Documentation
Installation
git clone https://github.com/nananananate/CourseCake
cd CourseCake
There are a good amount of depencies for this project -- it will be good practice to use a virtual environment, albeit not necessary.
On macOS and Linux:
python3 -m virtualenv env
On Windows:
python -m venv env
The second argument is the location to create the virtual environment. Generally, you can just create this in your project and call it env.
On macOS and Linux:
source env/bin/activate
On Windows Command Line:
.\env\Scripts\activate.bat
One Windows Powershell
.\env\Scripts\activate.ps1
python -m pip install -r requirements.txt
We are no longer using Flask!
Install uvicorn if you haven't already (if you followed the previous step correctly, you should be gucci.
python -m pip install uvicorn
Run uvicorn.
uvicorn coursecake.fastapi_app.main:app --reload
You’ll see output similar to this:
←[32mINFO←[0m: Uvicorn running on ←[1mhttp://127.0.0.1:8000←[0m (Press CTRL+C to quit)
←[32mINFO←[0m: Started reloader process [←[36m←[1m38240←[0m] using ←[36m←[1mstatreload←[0m
←[32mINFO←[0m: Started server process [←[36m13020←[0m]
←[32mINFO←[0m: Waiting for application startup.
←[32mINFO←[0m: Application startup complete.
donezo
Future features
Things I'm working on! Open up an issue to suggest features or request to help out! I'm down to guide you in webscraping, using SQLAlchemy, or general back-end web development in Python :D
- Adding instructor ratings from Rate My Professor via ratemyprof-api
- Prerequisite mapping (AND visualization!) to create a network of classes (along with a node graph GUI) via Neo4j (probably in seperate repository).