Skip to content

dalhaqq/course-compass

Repository files navigation

Course Compass

Udemy course recommender system based on learning roadmaps and existing skills. Select a roadmap, mark the skills you already know, and get personalized course recommendations — ranked using a hybrid Reciprocal Rank Fusion approach that combines semantic search with full-text search.

Built as an undergraduate thesis project (S1 Informatika, Universitas Jenderal Soedirman, 2025).


How it works

  1. Choose a roadmap — pick a learning path (e.g. Backend Developer, Frontend Developer)
  2. Mark your skills — check off skills you already have
  3. Get recommendations — the system queries Udemy courses and ranks results using Hybrid RRF

Recommendation algorithm

The hybrid search pipeline combines two retrieval strategies:

  • Semantic search — vector similarity using PostgreSQL pgvector, matching course descriptions to the user's skill gaps conceptually
  • Full-text search — PostgreSQL tsvector / tsquery for keyword-based matching
  • Reciprocal Rank Fusion (RRF) — merges and re-ranks results from both strategies into a single unified ranking

This approach outperforms either strategy alone, especially for cases where keyword matching fails but semantic similarity is high (or vice versa).


Tech stack

Layer Technology
Framework Next.js 15 (App Router)
Language TypeScript
Database PostgreSQL + TypeORM
Auth Clerk
UI shadcn/ui + Radix UI + Tailwind CSS
Charts Recharts
Testing Cypress (E2E)
Deployment Vercel

Features

  • Roadmap selection with skill tracking
  • Hybrid course recommendation (semantic + full-text + RRF)
  • User authentication via Clerk
  • Recommendation history logging
  • Responsive UI with dark mode support

Getting started

Prerequisites

  • Node.js 18+
  • PostgreSQL with pgvector extension enabled
  • Clerk account (for auth)

Setup

# Clone the repo
git clone https://github.com/dalhaqq/course-compass.git
cd course-compass

# Install dependencies
npm install

# Copy environment variables
cp .env.example .env
# Fill in your DATABASE_URL, CLERK_SECRET_KEY, NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY

# Run database migrations
npx typeorm migration:run

# Start development server
npm run dev

Open http://localhost:3000.

Running tests

# Open Cypress test runner
npm run cypress

# Run all E2E tests headlessly
npm run cy:run:all

# Run specific test suites
npm run cy:run:auth
npm run cy:run:recommendation

Project structure

course-compass/
├── app/              # Next.js App Router pages and server actions
├── components/       # Reusable UI components (shadcn/ui + custom)
├── entities/         # TypeORM entity definitions
├── hooks/            # Custom React hooks
├── lib/              # Database connection, utilities
├── types/            # TypeScript type definitions
├── cypress/          # E2E test specs
└── recommendation_logs/  # Logged recommendation outputs

License

MIT

About

Udemy course recommender using hybrid Reciprocal Rank Fusion — semantic search + full-text search, built with Next.js and PostgreSQL

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors