Back to the island
Windmill · Web app · Team project

EduRoom

Room booking for universities. Find a room on the map, book it in one pop-up, and let the system catch the double bookings.

When
Spring 2026, semester project
Team
Group project
Users
Students, teachers, admins
Stack
.NET 10 and React
Whiteboard sketch: a campus map where room 5123 opens a booking pop-up with fields for room, date, start and end time, title, description, files and guests, and a Book button
Where it started: the booking pop-up on a whiteboard.
The story

From whiteboard to working system

Booking a room at a university usually means a spreadsheet, a portal nobody likes, or walking the corridors looking for an empty one. EduRoom was our semester project to do it properly: a map of the buildings, every room on it, and one pop-up to book.

The sketch on the right of the whiteboard became the real thing almost one to one. Click room 5123 on the map, and the pop-up asks for the date, start and end time, a title and description, files and guests. Then Book.

The hard part isn't the form. It's making sure two people can't book the same room at the same time.

We designed it before we built it: system context, container and component diagrams, an ER diagram, class diagrams for each part of the domain, state machines for users and admins, and sequence diagrams for every important flow. They live in the repo next to the code.

How it's used

Booking a room

  1. Find it on the map

    Rooms sit on a map of the campus. Search or filter, and the map flies to the building. Click the room you want.

  2. Fill in the pop-up

    Date, start and end time, a title and description. Attach files and invite guests.

  3. Book

    The server checks that the room exists, the times make sense and nothing overlaps. If something clashes, you're told why.

  4. Repeat it weekly

    A booking series books the same room on chosen weekdays between two dates, for a whole course in one go. Every date is checked for conflicts.

  5. See it in your own calendar

    Subscribe once and your bookings show up in Apple Calendar, Google or Outlook, and stay up to date.

Features

Built for three kinds of people

Students

Book study and group rooms, see their bookings and the bookings they're invited to.

Teachers

Book lecture halls, including repeating series for a whole semester.

Administrators

Add and remove buildings and rooms, and edit anyone's bookings.

Map view

Rooms are found where they are, not in a long dropdown.

Calendar feed

A personal subscription link (webcal:// on Apple devices) with your bookings and invitations.

Encrypted files

Files attached to a booking are encrypted before they reach the database.

Under the hood

Clean Architecture, for real

The backend is split into four layers, and dependencies only point inwards. Business rules know nothing about the database or HTTP.

What a booking series checks

  • The start date is not after the end date
  • The start time is before the end time
  • At least one weekday is chosen
  • The building, room and user all exist
  • None of the generated dates overlap an existing booking

Each rule fails with its own named error, so the frontend can say exactly what went wrong instead of “something failed”.

How an attached file is stored

Each file is encrypted with AES-GCM using a fresh random nonce, and stored as one blob. The tag at the end means a tampered file is refused when it's read back.

Stack

More from the island