← all projects

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

  1. Upload document → fingerprint compare → extract & validate via Zod
  2. Pick up to 4 courses → iDEAL/card checkout via Pay.nl at €5
  3. On payment success the RFC 5545 .ics file is generated and emailed
  4. Uploads auto-purge after N days per GDPR retention rules

The data model

  • Course → current TrustedVersion
  • TrustedVersion — sha256, extracted text, validated calendar JSON
  • Upload — hash, fingerprint, verdict, diffReport, purge-after
  • Order — 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