Back to Projects
Client ProjectHospitalitySole Developer

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.

01

Discovery

Understand the existing hospitality workflow and identify which manual operations the new platform needed to replace.

02

Data Modeling

Design the relational structure around hotels, rooms, users and reservations before implementing the booking experience.

03

Guest Experience

Build the public hotel discovery, room search, availability and reservation flow.

04

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.

01

Multi-Hotel Search

Guests can search across 9 properties and narrow results based on location, availability and guest requirements.

02

Room Availability

The booking flow checks room availability before allowing a reservation to be created.

03

Online Reservations

Guests can complete the reservation process online instead of relying on phone calls and manual booking records.

04

Guest Accounts

Authenticated users can manage their profile and access their booking history.

05

Manager Dashboard

Hotel managers have a private interface for viewing operational and booking information.

06

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.

BookingsView and work with reservation information.
RevenueMonitor revenue generated through the booking platform.
OccupancyUnderstand room utilization across the hotel.
Operational DataProvide managers with a centralized view of hotel activity.

Engineering Decisions.

01

Relational Data Model

Hotels, rooms, users and bookings are represented as related database entities instead of treating reservations as isolated records.

02

Server-Centric Application

Next.js App Router provides both the customer-facing application and server-side application logic, keeping the system consolidated.

03

Typed Database Access

Prisma provides a typed interface over PostgreSQL and keeps database operations tied to the application's schema.

04

Dedicated Authentication Layer

Authentication and sessions are handled through better-auth rather than being implemented as ad-hoc application logic.

05

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.

06

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 data

Modeling these relationships explicitly allows the booking system, guest accounts and manager dashboard to operate over the same underlying source of truth.

Technology.

Next.jsApplication framework, frontend, server-side rendering and server logic
TypeScriptType-safe application development
PostgreSQLRelational data storage for hotels, rooms, users and bookings
PrismaDatabase schema, queries, relations and migrations
better-authAuthentication and session management
TanStack QueryClient-side data fetching, caching and server-state management
Tailwind CSSApplication styling and responsive UI

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.

Application architecture
Frontend development
Server-side application logic
PostgreSQL database design
Prisma schema and queries
Authentication and sessions
Hotel and room search
Availability logic
Booking workflow
Manager dashboard
Revenue and occupancy views
Responsive UI implementation

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.

PixelActive
Pixel