Skip to content
← All work

Fair room booking at FMIPA UGM · 1 min read

MIPA Reservation

★ Requested by FMIPA UGM's Vice Dean

One group used to grab rooms all day with multiple accounts. Now every booking needs four real people — and they have to actually show up.

/ 01

The problem

Discussion rooms at FMIPA UGM were first come, first served — and one group could book a room all day using several accounts, leaving everyone else out. The Vice Dean asked for a system that keeps it fair.

☝ Poke the mini version

mipa-reservation-showcase.dzakihf.my.idFull demo ↗

/ 02

Decisions that mattered

  1. 1

    A booking needs four real people

    The “Filling Slot”: whoever books shares an invite link, and the slot is held for 30 minutes while the group fills up to 4/4. If it doesn't fill, the slot goes back to everyone.

  2. 2

    Showing up is part of the booking

    Check-in uses a QR code plus GPS, open from 10 minutes before to 15 minutes after the start. No-shows get a cooldown — 7 days by default, tunable by the admin.

  3. 3

    Real accounts, real admin

    Google sign-in ties bookings to real people, and a full admin panel lets the faculty run rooms and rules without me.

  4. 4

    A lighter backend

    The API moved from Express + SQLite to Cloudflare Workers + D1, so there's no server to keep alive.

/ 03

How it flows

  1. 01

    Book

    pick a free slot

  2. 02

    Invite

    share the link, 30-min hold

  3. 03

    4/4

    group full, slot confirmed

  4. 04

    Check in

    QR + GPS at the room

  5. 05

    No-show?

    cooldown, set by admin

/ 04

Where it landed

  • ✦Built at the request of FMIPA UGM's Vice Dean
  • ✦Multi-account hoarding no longer works: every slot needs four people who show up
  • ✦Rules like the cooldown live in the admin panel, not in code

Built with

  • React
  • TypeScript
  • Cloudflare Workers
  • D1
  • QR / GPS
Next projectISMA↗