faiz.dev
Workplace & Resource Scheduling

Ruang Kantor: Sistem Reservasi Ruang & Fasilitas

Ruang Kantor is a modern full-stack web application designed to eliminate meeting room booking conflicts in corporate offices. Built as a unified monolith using Nuxt 4, Vue 3, Nuxt UI 4, and Nitro engine with PostgreSQL 17, it provides real-time room availability across daily, weekly, and mobile agenda views with strict transactional conflict prevention.

1 / 6
Ruang Kantor: Sistem Reservasi Ruang & Fasilitas
Expand Preview

Project Overview

Streamlines workplace scheduling by offering employees an intuitive room catalog with capacity and amenity filters (Video Conference, Projectors, Audio). Employees submit booking requests with instant collision checks, while office administrators manage facility approvals, maintenance blackouts, and room maintenance logs.

Nuxt 4Vue 3Nuxt UI 4TypeScriptNitro EnginePostgreSQL 17Prisma ORM 6Argon2idZodPlaywright

The Problem

Office scheduling disputes caused by concurrent booking approvals, clunky calendar interfaces lacking time zone alignment, and inability to take rooms offline for maintenance.

The Solution

Implemented server-side overlap detection within atomic PostgreSQL transactions, half-open interval validation (enabling consecutive bookings without false alarms), maintenance blackout blocks, and Argon2id session authentication.


System Architecture

Full-stack Nuxt 4 monolith powered by Vue 3 and Nuxt UI 4, with Nitro/H3 server endpoints connecting via Prisma ORM 6 to PostgreSQL 17. Form schemas and query parameters are strictly validated using Zod.


Key Technical Challenges

Preventing race condition double-bookings when multiple employees or administrators submit overlapping reservation approvals at the exact same millisecond.

Lessons Learned

Executing conflict validation queries directly inside transactional database locks guarantees scheduling integrity without false collisions on adjacent time slots.