Back to projects

Keiart

NUS Module Planning & Timetable Coordination

Keiart screenshot

Metrics

  • •Live full-stack deployment
  • •Real NUSMods-backed module data
  • •Frontend, backend, and end-to-end test coverage

Overview

A full-stack planning tool for NUS students to search real module data, generate clash-free timetable options, save preferred schedules, and plan modules across future semesters.

Technologies Used

ReactTypeScriptViteNestJSSupabasePostgreSQLNUSModsVercel

Business Need

NUS students often plan modules across several disconnected tools and manually compare lesson combinations for clashes. That makes timetable planning repetitive and makes it harder to understand how one semester fits into a longer degree plan.

Purpose

To bring module lookup, timetable generation, saved selections, and multi-semester planning into one coherent workflow backed by real NUSMods data.

Key Functionalities

  • •Module Search: Looks up real NUS module codes and lesson data through a cached NUSMods-backed catalogue.
  • •Timetable Generation: Produces multiple clash-free timetable options from selected modules and lesson groups.
  • •Preference Locking: Lets students lock a preferred lesson slot and regenerate the remaining timetable around it.
  • •Saved Planning: Persists selected modules, timetables, completed modules, and academic plans through Supabase.
  • •Degree Planning: Connects a weekly timetable with a multi-semester planner and degree-tracking view.

Advantages

  • •Less Manual Comparison: Generates valid combinations instead of asking students to inspect every lesson pairing themselves.
  • •One Planning Surface: Keeps weekly scheduling and longer-term module planning in the same product.
  • •Real Data: Uses NUSMods-backed module information rather than a static demonstration catalogue.

Key Learnings

  • •Separated the React frontend, NestJS API, and Supabase data layer so each boundary can be tested and deployed independently.
  • •Modelled timetable generation as deterministic constraints, keeping clash detection and locked-slot behaviour explainable.
  • •Used persisted academic plans and completed-module data to make the product useful beyond a single scheduling session.

Key Accomplishments

  • •Built a React and TypeScript planning interface backed by a NestJS API and Supabase PostgreSQL.
  • •Integrated real NUSMods-backed module and lesson data for search and timetable generation.
  • •Implemented clash-free option generation, lesson locking, saved timetables, multi-semester planning, and degree tracking.
  • •Added frontend, backend, and end-to-end test paths plus production builds for independently deployable application layers.