| title | emoji | colorFrom | colorTo | sdk | app_port | pinned |
|---|---|---|---|---|---|---|
CourseAid |
🎓 |
blue |
green |
docker |
7860 |
false |
Course selection can often feel overwhelming. As a master's student, I frequently spend a lot of time researching and comparing courses to determine which ones will best enhance our learning experience. While platforms like Rate My Professor are commonly used to gather insights, they are primarily designed for searching specific professors rather than exploring courses holistically. The existing navigation and filters are also limited, making it difficult to obtain comprehensive and comparative information for students.
This project aims to create a centralized hub for all course-related information. This application integrates objective course descriptions, student reviews, and perceptions of course difficulty based on the professor teaching the course. Additionally, it features robust filtering and search capabilities, enabling students to make more informed decisions when planning their academic paths.
Full-stack application with SQL database utilizing:
- Backend: Flask (Python) for application logic
- Database: PostgreSQL (relational and vector storage with pgvector)
- Embedding: Gemma Embedding Model for reviews and course information
- Database Hosting: Amazon RDS (AWS)
- Frontend: HTML/CSS with Jinja2 Templates
- AI Assistant: Gemini API using "gemini-2.5-flash" model
Languages:
- Python (Backend)
- SQL (Database management)
- HTML/CSS (Frontend)
Frameworks & Tools:
- Flask - Web framework
- PostgreSQL & pgvector - Database and vector storage
- AWS RDS - Database hosting
- Huggingface
- Gemma Embedding Model
- Gemini API
The data is synthetically generated. All professors, courses, reviews and users are fake. The data revovles around only one university for now.
- Total Tables: 11
- Features: Complex SQL operations including JOINs, subqueries, aggregations, and CTEs
- Schema: Designed with foreign keys and constraints for data integrity
Before running this project, ensure you have:
- Python 3.13+ installed
- Latest pip version
- API accounts and keys from:
- Hugging Face
- Gemini API
- AWS
Open the repository in your IDE.
macOS/Linux:
python3 -m venv .venv
source .venv/bin/activateWindows:
python -m venv .venv
.venv\Scripts\activatepip install -r requirements.txtThis installs all required libraries including:
- Flask - Web framework
- psycopg2-binary - PostgreSQL database adapter
- huggingface-hub - Hugging Face API integration
- google-genai - Google Gemini API
- sentence-transformers - Text embeddings
- torch - PyTorch for ML models
- pgvector - Vector similarity search for PostgreSQL
- pandas - Data manipulation
- scikit-learn - Machine learning utilities
Create a .env file in the root directory with the following credentials:
DB_HOST=
DB_NAME=
DB_USER=
DB_PORT=
DB_PASSWORD=
SECRET_KEY=
HF_TOKEN=
GEMINI_API_KEY=Note: Obtain a new HF token from Hugging Face and update the .env file.
Once your development environment is set up, run:
python3 run.pyOR
flask runThe application will start and be accessible at: http://localhost:5000 (or the port specified in your configuration)
This is the login and register page for a returning or a new user.
You can search by professor's name or course number. You can also select any departments as to filter from.
The profile shows instructor details along with the courses and departments that they are in. The instructor details contains a unique feature called consensus summary which is the summary of all the reviews of the instructor thus far and is updated every 20 reviews for that instructor. This is followed by reviews of the instructor by other students. Here the user can upvote or downvote on a review.
This where the user can upload a new review
Here the user can view all their past reviews and choose to either edit or delete their review.
This is the AI assistant which runs using the RAG setup. First, the intent from user query is identified after which the call goes to the right context builder whichbuilds relevant context by pulling data from database based on course_description embeddings and review embeddings.
1. "HF_TOKEN is expired" error
- Generate a new token at https://huggingface.co/settings/tokens
- Update the
HF_TOKENin your.envfile
2. "ModuleNotFoundError" error
- Ensure your virtual environment is activated
- Run
pip install -r requirements.txtagain
- Semantic Search: Vector-based search using embeddings for reviews and course descriptions for relevant course discovery
- AI Assistant: RAG-powered chatbot for course recommendations and comparisons
- Advanced Filtering: Robust search and filter capabilities
- User Reviews: Student-generated reviews and difficulty ratings
- Professor Insights: Course difficulty based on instructors
Planned enhancements include:
- Admin role implementation for managing courses, sections, and professors
- Real data scraping for courses, instructors, and reviews
- Automated semester updates for course information
- Caching mechanisms (KV caching for assistant, Redis integration to store consensus summaries)
- Multi-university database scaling
- Integrating LLM council into RAG for generating and validating response from multiple LLMs
- Enhanced embedding for professor profiles and additional metadata