CourseCake Build Status Codacy Badge Coverage Status Website last commit commits activity

There are three main features CourseCake offers that make university course information more "edible" for developers:

CourseCake aims to create an API to access course data, where college course information is unified by our schemas. By making course πŸ“š data easier to responsibly access and more "edible" 🍰 for developers, we hope CourseCake gives a smooth approach to build useful tools for students.

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

🐴 Create course discovery applications faster

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

🐌 Getting course information is piece of banana cake.

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

🐜 Zot your courses easier and responsibly

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.


🌐 Web API

πŸ’Ύ Database

πŸ” Scrapers


πŸ‘©β€πŸ‘§ Clone repository

git clone
cd CourseCake

🐍 Create Python virtual environment

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.

βœ… Activate virtual environment

On macOS and Linux: source env/bin/activate

On Windows Command Line: .\env\Scripts\activate.bat

One Windows Powershell .\env\Scripts\activate.ps1

πŸ“¦ Navigate to the repository folder and install packages

python -m pip install -r requirements.txt

πŸƒβ€β™€οΈ Deploy Fast API Application locally

We are no longer using Flask!

πŸ¦„ Run Fast API using uvicorn

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://←[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.


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).

GitHub license

Built With

Share this project: