PT POS INDONESIA
Room Management System
Room booking for PT Pos Indonesia: a Laravel web app and a Flutter app, two independent clients on one Supabase backend.
- Laravel
- Flutter
- Supabase
- PostgreSQL
- Tailwind
- Firebase

OVERVIEW
Staff browse rooms, check availability per time slot, and submit a booking with date, time, purpose and headcount; an admin approves or rejects it with a reason. On the day, the user checks in with a photo, and every booking feeds a usage dashboard broken down by period and division. The web and mobile apps are not two systems — they are two front-ends speaking directly to the same Supabase Postgres with an identical schema, so Laravel serves no API to Flutter. Edge Functions in Deno handle check-in reminders, photo cleanup and notification triggers into Firebase Cloud Messaging.
WHAT I DID
- One schema, two front-ends: Laravel 12 with Blade and Tailwind, Flutter across Android, iOS and desktop, both talking to Supabase directly rather than through an API layer.
- Booking lifecycle end to end: availability per time slot, approval or rejection with a reason, cancellation, and a photo check-in on the day of use.
- Deno Edge Functions for the work that cannot live in a client: check-in reminders, storage cleanup, and notification triggers into Firebase Cloud Messaging and OneSignal.
- Usage analytics for admins — room occupancy by period and by division, drawn from the same booking records.