Automatic import of name, credits, semester and contact hours from KU Leuven ECTS sheets.
The Study Load Planner runs entirely in your browser. For privacy and security reasons a browser app may not read the KU Leuven site directly (CORS), and KU Leuven additionally blocks non-browser requests. This small, free Cloudflare Worker fetches the course sheets server-side, extracts the data, and hands it back to the app.
Cloudflare's free plan (100,000 requests/day) is far more than enough.
kul-proxy, and click Deploy.kuleuven-proxy-worker.js, and click Deploy (top right).https://kul-proxy.<yourname>.workers.dev. Copy it.https://onderwijsaanbod.kuleuven.be/syllabi/n/L00A2DN.htm and click
Ophalen. If the course appears with contact hours, everything works.…/syllabi/n/XXXXXN.htm) → Ophalen.…/opleidingen/n/SC_…),
choose the Fase (1, 2 or 3) in the dropdown, and click Ophalen.
The planner imports only that year's courses (e.g. Fase 1 = the 60 credits of year one),
with contact hours included.Near the top of kuleuven-proxy-worker.js you'll find:
const ALLOW_ORIGIN = "*"; // → set to "https://bunka.be" for production
Set this to your own domain so only your site may use the proxy, then deploy again.
ALLOW_ORIGIN allows your
domain (or *) and that you re-deployed after changing it.onderwijsaanbod.kuleuven.be and is a programme or course-sheet page.Parsing is validated against a real sheet: from
…/syllabi/n/L00A2DN.htm the Worker correctly reads
"Natuurkunde en inleiding tot de biomechanica", 6 studiepunten,
52 uren (contact hours) and Eerste semester. The sheet pages are
server-side HTML (no separate data API), so extraction uses simple patterns on the HTML. If KU
Leuven changes the layout of those pages, the Worker may need a small update.