CourseScope CMU is a web platform designed for Carnegie Mellon University (CMU) students to review and rate their courses. The website allows students to explore courses, instructors, and specific course offerings while accessing detailed ratings and statistics such as overall quality, teaching effectiveness, material quality, course value, workload, difficulty, and grading. Users can also share their experiences by commenting on courses.
- Browse Courses: Explore the list of courses offered at CMU.
- Instructor Details: Get insights about the instructors teaching different courses.
- Course Ratings: View detailed statistics and distributions on various aspects of courses including teaching, materials, and more.
- User Comments: Drop comments and read other students' opinions about courses.
- Responsive Design: Access the website comfortably from any device.
- Frontend: SvelteKit
- Backend: Golang
- Database: PostgreSQL
- Node.js
- Go
- PostgreSQL
- Golang-migrate (for running database migrations)
To get CourseScope CMU running locally, follow these steps:
-
Clone the repository:
git clone https://github.com/LiamT01/course-scope-cmu.git cd course-scope-cmu
-
Create the PostgreSQL database
-
Setup the environment variables:
Create a .env file in the root of the project and fill in the following information:
PORT=your_backend_port DB_DSN=postgresql://username:password@localhost:5432/db_name?sslmode=disable REMOTE_DB_DSN=(Not used in development mode) EMAIL_HOST=smtp.gmail.com EMAIL_PORT=587 EMAIL_HOST_USER=your_email_address EMAIL_HOST_PASSWORD=your_email_password EMAIL_FRONTEND_LINK=http://localhost:5173
-
Run the database migrations:
cd backend make db/migrations/up
-
Run the backend development server:
make audit make run
This will start the backend server on
http://localhost:$PORT
-
Install frontend dependencies:
cd ../frontend pnpm install
-
Run the frontend development server:
pnpm dev
This will start the SvelteKit frontend on
http://localhost:5173
.
Distributed under the Apache-2.0 license. See LICENSE
for more information.