Skip to content

Latest commit

 

History

941 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CourseHub

CourseHub

IIT Guwahati's shared academic library

Open CourseHub · Read the guide

CourseHub brings IIT Guwahati's scattered course material into one organised, searchable library. Students can browse resources by course and year, preview or download files, save frequently used material, and contribute resources for their peers.

Branch Representatives (BRs) maintain the structure for their assigned courses and review student contributions before publication. An administration portal supports student, BR, course, and content management across the platform.

Features

  • Course-based library organised as Course → Year → Folder → File
  • Microsoft sign-in using IIT Guwahati institutional accounts
  • Automatic course discovery from a student's academic registration
  • Search and custom courses for material outside the current course list
  • File previews, downloads, folder ZIPs, favourites, and shareable links
  • Student contributions with a review queue and approval workflow
  • BR tools for creating years and folders and managing course material
  • Administration portal for students, BRs, courses, bulk imports, and course linking
  • Shared legacy folders that let related course codes reuse material without duplication

Screenshots

Student dashboard Adding another course
A student's CourseHub dashboard Adding another course
Course browser and BR controls Student contribution flow
Course browser with BR controls Uploading files to a folder as a student
Contribution status Direct BR upload
Checking pending contributions from the profile Uploading directly as a BR
Contribution review Folder approval controls
Reviewing pending contributions as a BR Approving files directly from a course folder

System Architecture

graph LR
    Student["Student Web App<br/>React 18 · Vite · Redux"]
    Admin["Admin Portal<br/>React 19 · Vite · Tailwind CSS"]
    API["CourseHub API<br/>Node.js · Express"]
    Auth["Identity<br/>Microsoft OAuth · JWT"]
    DB["MongoDB<br/>Users · Courses · Folders · Files"]
    Storage["Microsoft Graph · OneDrive<br/>Original Files"]
    Media["ImageKit<br/>Permanent Thumbnails"]
    Jobs["node-cron<br/>Course Cache Sync"]

    Student --> API
    Admin --> API
    API --> Auth
    API --> DB
    API --> Storage
    API --> Media
    Jobs --> DB
    Jobs --> Storage
Loading

React Vite Redux Tailwind CSS Node.js Express MongoDB Microsoft Azure

Student Client

The student-facing application is built with React, Vite, Redux, React Router, and SCSS. It provides the course dashboard, nested file browser, search, favourites, profile, and contribution workflows. Course trees are cached in the browser to make repeated navigation faster and reduce redundant API requests.

Administration Portal

The separate administration portal uses React, Vite, and Tailwind CSS. It supports student and BR management, course dashboards, bulk course imports, course linking, contribution moderation, and course-cache synchronization.

Backend

The Node.js and Express API owns authentication, authorization, course and file metadata, contribution review, and administration workflows. MongoDB stores the application data, while Microsoft Graph and OneDrive provide file storage and delivery. ImageKit stores permanent thumbnails instead of relying on expiring OneDrive preview URLs.

Course allotments are cached in MongoDB after they are resolved from IITG's academic data. A scheduled job synchronizes the shared course cache each month.

Roles and Content Workflow

  • Students browse approved material, add courses, save favourites, and submit files.
  • Branch Representatives organise assigned courses and review pending contributions.
  • Administrators manage users, BR assignments, courses, imports, linking, and moderation.

Uploaded student material remains pending until a BR approves it. This keeps the library useful without requiring the core team to organise every file manually.

Repository Structure

coursehub/
├── client/   # Student-facing React application
├── admin/    # Administration portal
├── server/   # Express API, jobs, integrations, and data models
├── docs/     # Architecture and implementation notes
└── deploy.sh # Production deployment helper

Local Setup

Prerequisites

  • Node.js 22 or newer
  • npm
  • MongoDB
  • A Microsoft Entra application and Microsoft Graph access
  • A OneDrive folder for course material
  • ImageKit credentials for permanent thumbnails

1. Backend

The API must be running before either frontend can load live data.

cd server
cp .env.example .env
npm ci
npm run preflight
npm run dev

Configure the values documented in server/.env.example.

2. Student Client

cd client
cp .env.example .env
npm ci
npm run dev

Set VITE_API_BASE_URL to the local API origin.

3. Administration Portal

cd admin
cp .env.example .env
npm ci
npm run dev

Set VITE_API_BASE_URL to the same API origin used by the student client.

Verification

Run the relevant checks before opening a pull request:

# Backend
cd server
npm run preflight
npm test

# Student client
cd client
npm run build

# Administration portal
cd admin
npm run lint
npm run build

Workflow

  • dev is the active development branch. Open feature and fix pull requests against it.
  • prod reflects the deployed application and is updated after changes are considered stable.

Further Reading


Built and maintained by Coding Club, IIT Guwahati.

About

IIT Guwahati's shared academic library

Resources

Stars

15 stars

Watchers

3 watching

Forks

Contributors

Languages