Skip to content

Repository files navigation

CourseX

coursex.school.rip

A modern reimagining of USC's Schedule of Classes, built by students, for students. CourseX puts the browsing experience front and center — fast search, rich course details, enrollment status, instructor info, and syllabus access, all in one clean interface.

All contributions are welcome.


Features

  • Three-panel layout — browse programs and terms, scan the course list, and view full section details all at the same time
  • Fast course search & filtering — search by keyword, filter by GE requirement, units, days, and more with a virtualized list that handles hundreds of courses without lag
  • Instructor RMP — see instructors' RateMyProfessors ratings
  • Schedule calendar — visual weekly schedule preview for any selected section
  • Syllabus links — direct links to cached syllabi when available, no more simple syllabus headache
  • Google OAuth login — sign in to view classes, as per current USC requirement ;)

Tech Stack

Layer Technology
Framework Nuxt 4 + Vue 3
Styling Tailwind CSS v4 + Nuxt UI v3
State Pinia
Database Drizzle ORM + Neon (PostgreSQL)
Auth nuxt-auth-utils (Google OAuth)
Virtualization TanStack Virtual
Runtime Bun
Deployment Cloudflare Workers

Getting Started

Prerequisites

1. Clone the repository

git clone https://github.com/MeloticZ/CourseX
cd CourseX

2. Install dependencies

bun install

3. Configure environment variables

Create a .env file in the project root:

DATABASE_URL=postgresql://<user>:<password>@<host>/<db>?sslmode=require
NUXT_OAUTH_GOOGLE_CLIENT_ID=your_google_client_id
NUXT_OAUTH_GOOGLE_CLIENT_SECRET=your_google_client_secret
NUXT_SESSION_PASSWORD=a_random_32_char_secret
NUXT_PUBLIC_SYLLABUS_DOMAIN=https://your-syllabus-bucket-url

4. Push the database schema

bunx drizzle-kit push

5. Start the development server

bun run dev

The app will be available at http://localhost:3000.


Contributing

Contributions, bug reports, and feature requests are all welcome. Please open an issue or submit a pull request.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/my-feature)
  3. Commit your changes (git commit -m 'Add my feature')
  4. Push to the branch (git push origin feature/my-feature)
  5. Open a Pull Request

About

Custom USC classes registry with student experience at the center of focus.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages