Hardball Caribbean Smokehouse
A restaurant website with online reservations, a live menu and a staff dashboard that pings the moment a table is booked.
Live in production at hardballsmokehouse.co.uk


- Screens
- 58
- Staff roles
- 3
- Booking alert
- Real time
The problem
Bookings came in by phone and social media messages, the menu on the site went out of date whenever prices changed, and the only person who could update the website was whoever built it.
What I built
I built the public site and the back office as one Laravel application. Reservations are checked against capacity and opening hours per day of the week, and every new booking is broadcast to the dashboard over WebSockets, with browser and email notifications as a fallback.
The owner manages menus, bookings, events and promotions without calling anyone, and staff hear about new bookings in seconds.
What it does
- Booking system
- Real time
- Admin dashboard
- Mobile app
- Server rendered
- Mobile responsive
For guests
- Online table reservations with live availability checks
- Capacity and opening hours enforced per time slot and day
- Menu with categories, chef specials and featured dishes
- Cocktails, events, gallery, FAQ and job vacancies
- Newsletter signup and email confirmations
For staff
- Dashboard with booking trends and menu stats
- Real time notifications of new bookings, in app and in the browser
- Full menu management with images, pricing and visibility toggles
- Reservation settings per day: hours, capacity, open or closed
- Admin, manager and staff roles with permissions
- Contact inbox, newsletter list and vacancy management
Mobile
- Companion mobile app built in React Native with Expo
- Tab navigation, secure storage and Stripe React Native
Under the hood
The full stack, from what you tap on screen down to where it runs. Frontend, backend, database and hosting are all designed, built and maintained by the same engineer.
- Frontend
- Vue 3
- Inertia.js with server side rendering
- TypeScript
- Tailwind CSS
- Radix Vue
- Mobile
- React Native
- Expo Router
- Stripe React Native
- Backend
- Laravel 12
- Laravel Horizon queues
- Pusher broadcasting
- Spatie Permission
- Resend
- Data
- MySQL
- Redis for queues and cache
- 13 data models
- Infrastructure
- Laravel Forge
- Supervisor managed SSR daemon
- Cloudflare
Engineering detail
Bookings that reach staff instantly
A new reservation fires a broadcast event over Pusher, lands in a persistent notifications table and triggers a browser notification even when the tab is in the background. Email is kept as a backup, so a booking is never missed if the real time channel drops.
See it running
Real captures from the live site. Every one links to the same page in production, so you can check it yourself.
Next project
Ship'd JMKeep scrolling
Want something like this?
Tell me what your business needs to do online. I will scope the smallest useful version with a fixed quote before any work starts, and look after it once it is live.
