Database, scripts, and application to help students quickly search through all Stanford Courses.
https://github.com/ellcrev/intelliplan.git
cd intelliplan
npm install
npm run init
- Downloads Meilisearch for Local Development
- Scrapes data from Explore Courses.
npm run dev
Runs the next dev script (live website preview) Runs the meilisearch local instance (live database preview)
1. NextJS & React (Docs)
- Used as the full-stack framework for serverless functions, website hosting, and javascript processing.
- Chosen for popularity and well-defined documentation.
2. MaterialUI (Docs)
- Accessible and open source react component library for rapidly prototyping UI.
3. Meilisearch (Docs)
- Used to deliver the quickest database queries possible.
- Powered by LMDB, the world's fast read database.
- Well-defined documentation and simple key-value storage model.
4. Typescript (Docs)
- Compile-time Errors > Run-time Errors
- Static, predictable types for every layer of abstraction (components, functions, data, etc.)
- Vercel - Hosts Server Side Rendered Progressive Web App & Serverless Functions
- Google Cloud Platform Compute Engine - Hosts Meilisearch Instance
I have been experimenting with GPT and this course data list. Right now I have it so GPT can generate keywords from the course data.
(1) Call npm run gpt MATH51
(or any course code)
(2) The CLI will prompt you for an OpenAI key.
(3) Once you enter your OpenAI key, it is saved in the '.env'.
(5) The request sytem uses templates. Since GPT can only input strings and output strings, we want to use a template that lets us create custom strings based on each individual course data. I.E.
The template for the keyword generator is:
const template = (courseDescription) => `
${courseDescription}
Generate 10 keywords from the description above.
`;
Templates are stored in .scripts/gpt/templates.ts
(6) So the CLI generates a template for each course and sends the populated string to GPT which processes it and send back a string, which the CLI parses and saves to JSON in data/gpt.
(7) I have it so it works for individual courses, but not yet for all courses. This requires modifying the workerpool to handle requests to GPT.
We can come up with more clever things for it to do later on, but at least its mostly set up.