GoRoom.pk — Multi-Hotel Booking Platform
A full-stack booking platform built to replace an older WordPress presence with a centralized system for hotel discovery, room availability, online reservations, guest accounts and private hotel management.
Properties
9 Hotels
Platform
Web Application
Database
PostgreSQL
Developer
Sole Developer
Context.
Before
The business was operating with an older WordPress-based website that did not provide a centralized online booking workflow.
Availability checks, price calculations and reservation records depended heavily on hotel staff handling requests manually.
After
GoRoom.pk introduced a dedicated booking application where guests can discover properties, check rooms and make reservations online.
The platform also provides a private management interface for hotel staff to work with booking and business information.
Implementation Approach.
Rather than treating the project as a collection of individual pages, I built it around the underlying hotel and reservation domain. The database model became the foundation for the guest booking experience and the manager dashboard.
Discovery
Understand the existing hospitality workflow and identify which manual operations the new platform needed to replace.
Data Modeling
Design the relational structure around hotels, rooms, users and reservations before implementing the booking experience.
Guest Experience
Build the public hotel discovery, room search, availability and reservation flow.
Management Layer
Build a private dashboard that gives hotel managers access to operational and business information.
System Architecture.
GoRoom uses Next.js as the application layer, with PostgreSQL as the persistent data store and Prisma providing typed database access.
[ Guest ]
│
┌─────────────┼─────────────┐
│ │ │
▼ ▼ ▼
[ Search ] [ Hotels ] [ Account ]
│ │ │
└─────────────┼─────────────┘
│
▼
[ Booking ]
│
▼
┌───────────────┐
│ Next.js │
│ Application │
└───────┬───────┘
│
▼
[ Prisma ORM ]
│
▼
[ PostgreSQL ]
│
┌─────────────┴─────────────┐
▼ ▼
[ Guest Data ] [ Hotel Data ]
│
▼
[ Manager Dashboard ]
│
┌───────────┼───────────┐
▼ ▼ ▼
[Bookings] [Revenue] [Occupancy]Booking Workflow.
The core user journey is centered around turning hotel discovery into a reservation without requiring the guest to contact the hotel manually.
01
Search
02
Select Hotel
03
Select Room
04
Check Availability
05
Reserve
06
Booking Record
The important part of this flow is the relationship between room inventory and reservations. The booking process is backed by persistent database state rather than being treated as a simple frontend form submission.
Core Features.
Multi-Hotel Search
Guests can search across 9 properties and narrow results based on location, availability and guest requirements.
Room Availability
The booking flow checks room availability before allowing a reservation to be created.
Online Reservations
Guests can complete the reservation process online instead of relying on phone calls and manual booking records.
Guest Accounts
Authenticated users can manage their profile and access their booking history.
Manager Dashboard
Hotel managers have a private interface for viewing operational and booking information.
Business Analytics
The management interface exposes booking, revenue and occupancy information to help managers understand hotel performance.
Manager Dashboard.
The platform is not only a customer-facing booking website. A separate private management experience gives hotel staff access to information generated by the booking system.
Engineering Decisions.
Relational Data Model
Hotels, rooms, users and bookings are represented as related database entities instead of treating reservations as isolated records.
Server-Centric Application
Next.js App Router provides both the customer-facing application and server-side application logic, keeping the system consolidated.
Typed Database Access
Prisma provides a typed interface over PostgreSQL and keeps database operations tied to the application's schema.
Dedicated Authentication Layer
Authentication and sessions are handled through better-auth rather than being implemented as ad-hoc application logic.
Server State Management
TanStack Query is used where client-side server-state management and caching are useful, while server-rendered application data remains close to the server.
Separate Guest and Manager Experiences
The public booking experience and private management functionality are treated as different product surfaces with different responsibilities.
Data Model.
The database is centered around the entities required to operate a multi-hotel booking platform. Prisma defines the application schema and provides typed access to PostgreSQL.
User
│
└── Booking
│
└── Room
│
└── Hotel
Hotel
├── Rooms
└── Manager / operational dataModeling these relationships explicitly allows the booking system, guest accounts and manager dashboard to operate over the same underlying source of truth.
Technology.
My Role.
I was the sole developer responsible for taking the platform from the initial application architecture through implementation. This included both the customer-facing booking experience and the private management side of the system.
Outcome.
9
Hotels
Properties represented within one booking platform.
1
Platform
Centralized guest booking and hotel management system.
0
Manual-first Booking
Guests no longer need to rely entirely on phone-based reservations.
The project demonstrates a complete transition from a primarily informational hotel website to an application backed by structured data, authentication, booking workflows and operational tooling.
Engineering takeaway
The challenge was not building a hotel website. It was building the system behind one.
GoRoom gave me practical experience designing a real application around a business domain: modeling relationships, handling authenticated users, connecting reservations to persistent data, and exposing that data through separate customer and management experiences.