Skip to content

Latest commit

 

History

77 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UniBasel DS Planner

Unofficial University of Basel MSc Data Science curriculum planner.

Short handle: BaselCal (baselcal.vercel.app). The longer name is for search — people looking for Uni Basel, MSc Data Science, ECTS, or Vorlesungsverzeichnis.

Plan four semesters, check official 2026 credit rules, spot timetable clashes, and export ICS / JSON. This is not an official University of Basel tool. Always verify CP rules, module membership, and offerings in the Vorlesungsverzeichnis before you enrol.

Live demo: baselcal.vercel.app

Scope (Phase 1 — multi-degree foundation)

BaselCal is evolving from a single-programme DS planner into a degree-pack architecture. Phase 1 ships the foundation without changing Data Science validation behaviour.

  • Header programme switcher — pick MSc Data Science, Computer Science, or Mathematics. Only Data Science is fully enabled today.
  • Computer Science & Mathematics — visible in the switcher as Coming soon (pack manifests registered; rules and VV data land in Phase 2/3).
  • Pack layout — each programme has degrees/<id>/manifest.json and rules.json; the app loads packs via src/degrees/. Plans are stored per programme (basel-plan-v7:<id>).
  • degree_rules.json — mirrors DS pack CP targets for npm run validate (Node). Source of truth: degrees/data-science/rules.json.

The public demo is a sandbox. Anyone can drag courses, load the example outline, and export a plan. Owner login (no signup) unlocks a private overlay stored in Vercel env vars — that JSON is not shipped in the client bundle.

Empty planner board

Board with example outline Timetable
Example outline Timetable
Course discovery Owner login
Explorer Login

Refresh screenshots with DOCS_SHOTS=1 npx playwright test tests/docs-shots.spec.ts.

Quick start

npm install
npm run dev

Dev server: http://localhost:5179

The board starts empty. Drag courses from the catalog, or click Load example outline for a sample 120 CP Master’s plan (no admission / Auflagen courses).

Your personal details stay local

Admission conditions (Auflagen), your real plan, and an optional home pin are not part of the public default.

  1. Copy the example config:

    cp config/student.example.json config/student.local.json
  2. Edit config/student.local.json:

    • admissionTarget — integer CP from your Zulassungsbescheid (0 if none; official ceiling 30, above excluded)
    • seedPlantrue to fill the board on first visit
    • plan / allocations — course IDs per semester
    • home — optional map pin (lat / lng); leave null to set it in the browser
  3. Restart npm run dev. The file is gitignored.

Optional: set UNICAL_URL in a local .env (see .env.example) to your UniCal calendar link. With seedPlan: true, Sem 1 is filled from that link’s event ids. On Vercel, set UNICAL_URL as a server env var (returned only after owner unlock — never VITE_*).

Anyone can also use Import UniCal in the header: paste a UniCal ?e=… link to replace Sem 1. The timetable week picker hides sessions outside each course’s first/last meeting dates.

On Vercel, keep STUDENT_CONFIG as a server env var (used only by /api/unlock). Also set PLANNER_USER and PLANNER_PASSWORD. Do not commit them. Public builds never bake that JSON into JavaScript.

You can also change Auflagen CP in the header at any time; that value is stored only in this browser.

Accuracy checks

npm run validate               # catalog CP rules + example outline + time/room vs VV snapshot
npm run validate:details       # title, CP, times, rooms vs saved VV snapshots
npm run validate:details:live  # same checks against live Vorlesungsverzeichnis
npm run validate:details:plan  # only example outline + local student plan
npm run audit:modules          # refresh the Fall 2026 module-tree snapshot
npm run refresh:catalog        # scrape every catalog VV page and apply times/rooms
npm run audit:catalog          # scrape every catalog VV page, snapshot only
npm test
npm run build

Degree rules

Official MSc Data Science 2026 targets (pack: degrees/data-science/rules.json; mirrored in degree_rules.json for validate):

Bucket Rule
Mathematical Foundations min 18 CP
Machine Learning Foundations min 18 CP
Systems Foundations min 18 CP
Foundations combined min 64 CP
Electives in Data Science exactly 20 CP
Thesis block exactly 36 CP
Master's total exactly 120 CP
Admission (Auflagen) your letter (integer 0–30, default 0; above 30 excluded)

Grand total = 120 + Auflagen only. Admission CP never fills Math / ML / Systems / Electives / Thesis. Exact buckets fail on overshoot.

Docs

License

MIT

About

Unofficial Uni Basel MSc Data Science planner — ECTS rules, timetable, VV-backed DS catalog (not the full university VV)

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages