Olipur Royal Sports Complex
Online booking and payments for a floodlit turf and badminton venue
- Next.js
- PostgreSQL
- Tailwind

Overview
Olipur Royal Sports Complex is a floodlit turf and badminton venue in Olipur, Habiganj. Before this, every booking came in by phone. Nobody could see which slots were actually free, and two people booking the same hour was a real risk.
I designed and built their booking site and admin panel on my own, from the first sketch to the server it runs on. The main build took about a week.
Booking in under a minute
Most players book from their phone, usually while sorting out a game with friends. So booking is four quick steps: pick a sport, a date, how long you want to play, then a free slot.
Prices depend on the duration and time of day, and peak hours are marked so there are no surprises at checkout. You can pay half now and the rest at the venue, or pay in full, with bKash, Nagad, Rocket or a card.
Once you've paid, you see your booking reference and a clear breakdown of what's paid and what's still due.

No double bookings, no lost payments
This was the part I cared about most. If two peopltry to pay for the same slot at the same moment, only one of them gets it. The database itself enforces that, and a slot is held for five minutes while someone pays.

A booking is only confirmed once the site checks the payment with the gateway directly, so nothing gets confirmed by mistake. If someone pays and closes the browser straight away, a background check picks it up within two minutes. And if a payment ever arrives for a slot that's already gone, it's flagged for a refund instead of turning into a second booking.
Running the venue
Staff get their own admin area. The dashboard shows today's bookings, revenue, what's still to be collected at the counter, and a 14-day revenue chart.
Walk-in and phone bookings go through the same flow as the website, with options to pay cash now, pay later, or book for free. The owner can change prices, opening hours and peak times, or block a slot for maintenance, and the website updates right away. Payments, cancellations and price changes all go into an activity log, so there's always a record of who did what.

Under the hood
It's built with Next.js, TypeScript and Tailwind CSS, with PostgreSQL and Prisma behind it. Pages are pre-built so they load quickly on mobile data, and only slot availability is fetched live.
It runs on its own Ubuntu server with automatic HTTPS, daily database backups and a one-command deploy.
Live and taking bookings
The site is live at royalolipur.com, and players are now booking and paying online instead of calling. Staff run the day from the admin panel, and the owner can change prices or block off a slot without asking me.
Carrom booking is coming next, along with Google reviews on the home page.
Have a project like this in mind?
Let's talk