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
UC Santa Cruz
🐌 Getting course information is piece of banana cake.
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.
Where's my university? 🤷♂️
👩👧 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
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:
On Windows Command Line:
One Windows Powershell
📦 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
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.
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).