Super-snappy tool for power users of KU Leuven Reservation Tool (KURT) built by students. Easily view the availability of seats and rooms in Agora, Erasmushuis, CBA, EBIB and other KU Leuven libraries.
- Visit kurtosis.breitburg.com
- Enter your R-number, U-number, or B-number (found on your student card as
Gebruikersnaam) - Select a library and date (up to 7 days ahead)
- Browse available time slots and select the ones you want
- Click generated booking links to reserve on the official KURT system
Requirements:
- Valid KU Leuven R-number, U-number, or B-number
- Active KU Leuven account (student, staff, or guest)
# Clone the repository
git clone https://github.com/breitburg/kurtosis.git
cd kurtosis
# Install dependencies
bun install
# Start development server
bun run dev
# Build for production
bun run buildbun run dev # Start development server
bun run build # Build for production
bun run lint # Run ESLint
bun run preview # Preview production buildThe application supports multiple languages with Dutch as the default. Currently supported languages:
- 🇳🇱 Nederlands (Dutch) - Default
- 🇬🇧 English
- 🇫🇷 Français (French)
- 🇩🇪 Deutsch (German)
The application uses automatic language detection from available translation files. To add support for a new language:
-
Create a translation file in
src/i18n/locales/[lang-code].json# Example: adding Spanish cp src/i18n/locales/en.json src/i18n/locales/es.json -
Translate all text strings in the new JSON file
- Keep the same JSON structure
- Translate only the values, not the keys
- Use
{{variable}}syntax for interpolated values - Important: Add a
languageDisplayNamekey with the language's native name:
{ "languageDisplayName": "Español", "welcome": "Bienvenido", ... } -
Add the language import to
src/i18n/i18n.js:import es from './locales/es.json'; const resources = { // ... existing languages es: { translation: es } };
That's it! The LanguageSwitcher component automatically detects available languages from the i18n resources and displays them using their native names from the languageDisplayName key. Date formatting uses the raw language code (e.g., 'es') for native localization.
The language preference is automatically saved to localStorage and will persist across browser sessions.
This repository includes a CLAUDE.md file with detailed guidance for Claude Code when working with this codebase.
Not affiliated with KU Leuven - This is an independent student project.
While we've shared this tool with KURT staff and received no objections, it is not officially approved or endorsed by KU Leuven. Use responsibly and don't abuse the system. We're not responsible for any consequences of using this tool.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Email: kurtosis@breitburg.com
- Issues: GitHub Issues
This project is open source. See the repository for license details.
