← Back to work

Booking Portal

Completed Open site ↗

Booking Portal

Booking Portal

bookingportal.fi is a booking platform where every business gets its own public page under its own URL path. A customer picks a service, sees the free slots and books without creating an account. The owner manages their own services, opening hours, staff and reservations.

The platform is industry-agnostic: the same engine runs appointment booking for a beauty salon and rental operations (vehicles, equipment) where a booking also involves handover, return, condition inspection and a deposit.

What it does

  • A public booking page for each business, on its own path
  • Services and opening hours — duration, price, per-worker availability
  • Guest booking — no forced registration
  • Confirmation and cancellation emails — cancelling works from a link, no login needed
  • Owner dashboard — today's bookings, rescheduling, cancellation and notes
  • Rental features — handover, return, condition inspection, damage log, deposit and payouts
  • Superadmin manages every business on the platform

How it works

Every request resolves the business from the first segment of the URL, and every database query goes through that tenancy scope. One company's bookings therefore cannot leak into another's view, even by accident — the isolation is structural, not a rule someone has to remember.

Two customers can hit "book" on the same slot at the same second. The write is guarded at the database level: one booking succeeds, the other gets a polite "that slot just went" message. Double bookings do not happen.

The cancellation link is not guessable. Each reservation mints its own single-purpose token, which only ever opens that one booking.

Technology

  • PHP 8.2 + MariaDB, server-rendered — no build step, no JS framework
  • A small front controller of our own; the tenant is read from the URL
  • Email over SMTP; without SMTP settings messages are written to a log, so development needs no mail server
  • Versioned database migrations and automated tests around the booking logic

← Back to work