2 min read
oakslot

University timetabling is one of those problems that looks like a spreadsheet and is really a constraint-satisfaction nightmare: hundreds of courses, rooms, and instructors, every one of them with a reason they cannot be in two places at once. Oakslot exists to schedule the term, not the spreadsheet.

At its core is a constraint-based solver that automatically generates conflict-free schedules across courses, rooms, and instructors, honouring configurable hard and soft constraints and reporting a quality score for the result. The solver is written in Rust (an Axum service) using Tabu Search and Simulated Annealing, the kind of metaheuristics that actually cope when the search space is too large to brute-force. Around it sits the work an academic affairs office really does day to day: multi-step approvals, exam scheduling, and a full audit log on every change.

The platform side is built for institutions rather than individuals. It is multi-tenant with organization-based data isolation, ships real-time updates over SSE so schedule changes land live, and supports enterprise SSO via SAML and OIDC. The frontend is TanStack Start (React 19) with Tailwind CSS and shadcn/ui, talking to a PostgreSQL database through Drizzle ORM, with Better Auth handling identity.

Live at oakslot.com.