cal-ucr — verified course calendar shop
2025 · Solo build, product + infra
- Next.Js
- Prisma
- Sveltekit
- Ideben
- SaaS
- GDPR
- Devops
This project currently ships with a manual parse-mode pipeline and is being migrated to an LLM-assisted backend with a Zod-validated extraction contract.
The problem
College students juggling a dozen courses per semester end up hand-copying course schedules into their phones — and then a single timetable revision breaks everything silently. School staff pay for a change they never notice ripples out from.
The idea
Uploading a course outline (PDF, DOCX) yields a deterministic sha256 fingerprint + extracted text. We match that fingerprint against a ‘trusted version’ curated by an admin who’s approved it. If it differs: not a blocker — the order goes into a remaking state and the student still gets the regenerated calendar automatically.
The flow
- Upload document → fingerprint compare → extract & validate via Zod
- Pick up to 4 courses → iDEAL/card checkout via Pay.nl at €5
- On payment success the RFC 5545
.icsfile is generated and emailed - Uploads auto-purge after N days per GDPR retention rules
The data model
Course→current TrustedVersionTrustedVersion— sha256, extracted text, validated calendar JSONUpload— hash, fingerprint, verdict, diffReport, purge-afterOrder— DRAFT → AWAITING_PAYMENT → PAID → REMAKING → DELIVERED/FAILED
What I’d call out
- Prime Directive: an uploaded document is evidence, never truth — never mutates trusted state without admin approval
- Real legal-compliance docs before launch (Dutch digital-content consent, consumer protection, retention)
- Change detection is a product feature, not a technical detail