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 π data easier to responsibly access and more "edible" π° for developers, we hope CourseCake gives a smooth approach to build useful tools for students.
- π΄ 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.
π΄ 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.
π 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.
π 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.
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.
π©βπ§ Clone repository
git clone https://github.com/nananananate/CourseCake
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://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
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).