ANU Semester Planner

A small full-stack prototype for planning a semester before you enrol: add the courses you’re considering to a plan, see them listed with their unit value and your overall study load, and remove any you change your mind about. There’s no login and no real enrolment behind it — the plan is just a shared shortlist, backed by SQLite through Drizzle, that survives a reload. The “Semester 2, 2026” label and the 24-unit study-load reference are display context for the plan, not a claim about ANU’s actual enrolment rules for any given semester.

What good looks like here

The brief was to keep this deliberately small: view a plan, add a course, persist it, remove it, and have it still be there after a reload — not a replica of ANU’s enrolment system. So the scope is cut on purpose:

What’s enforced by spec/course-planner.test.ts and spec/plan-summary.test.ts: adding a course redirects back to the plan, a fresh page load still shows it, removing it redirects back too, a further reload no longer shows it, and the plan summary’s course count, total units, and study-load label update to match. spec/invariants.test.ts and spec/readme.test.ts (shipped with the starter) hold the usual bar for any page here — landmark navigation, one heading, a real title, alt text, and an axe-core accessibility pass. Anything beyond that — whether a shared plan with no accounts is the right trust model for a real deployment, whether units-only is enough detail for a course, or where exactly the load thresholds should sit — is a judgement call, not a test.