Property Short Rental Booking System
A bespoke booking website and admin panel for a luxury Maltese farmhouse rental, with live availability, seasonal pricing and a permission-based back office.
- Category
- Booking & administration
- Sector
- Property
- Availability
- Demo on request
- Technologies
- Next.js 14
- React 18
- TypeScript
- PostgreSQL
- Tailwind CSS
- Framer Motion
- FullCalendar
- Recharts
- Nodemailer
- Resend
- jose (JWT)
- bcryptjs
- Zod
Overview
Dar it-Tramuntana is a purpose-built website for a single restored stone farmhouse (a "razzett") in Malta that sleeps ten. It combines a polished, editorial-style public site with a full back office, so the owner can take booking requests, manage pricing and keep the site fresh without a developer. It is built with Next.js and PostgreSQL and deploys to Railway with zero manual setup: tables and seed data are created automatically on first boot.
Who it's for
Holiday guests and families comparing the house, checking dates and sending a booking request. The property owner, who approves bookings, sets rates and edits site copy and photos. Optional extra staff or managers, each given only the admin permissions they need.
Problem and solution
The problem
Marketplace listings take a large commission and give the owner little control over branding, pricing or guest communication. A generic website builder cannot show live availability, apply seasonal and holiday pricing, or stop double-bookings. The owner needed one place to present the house properly and manage requests, calendar and rates, simple enough for a non-technical person to run.
The solution
A custom Next.js application with a visual design built around the property: limestone, olive and brass tones, serif display type, and a gallery, details, amenities, location and contact sections. A live availability calendar shows booked, pending, blocked and public-holiday dates. Visitors pick arrival and departure dates and send a request with an instant price estimate. Overlaps are validated on the client and again on the server. Behind it is a role-based admin panel. The owner approves or rejects requests, adds internal notes, blocks dates for maintenance, sets nightly rates and promotions, uploads and reorders photos, edits all page copy, and switches the colour theme. Guests get confirmation and reminder emails, and a 12-month occupancy chart shows how the house is performing.
Main features
- 01Live availability calendar with booked, pending, blocked and Malta public-holiday markers
- 02Booking request form with date-range selection and server-side overlap validation
- 03Booking references generated from a database sequence (e.g. FM-2026-000123)
- 04Booking workflow: pending, approved, rejected, cancelled and completed, with internal notes
- 05Seasonal, holiday and promo pricing rules, with per-guest surcharges and minimum-night stays
- 06Admin-blocked dates for maintenance or owner stays
- 07Email notifications and automated guest reminders before check-in
- 0812-month occupancy dashboard and one-click CSV export of bookings
- 09Editable site content: hero, house details, house rules, amenities, location and SEO fields
- 10Drag-and-drop photo gallery with featured images, captions and room grouping
- 11Selectable colour themes that restyle the whole site without a rebuild
- 12Permission-based admin users with a protected super admin
- 13Language switcher covering nine languages
- 14SEO: dynamic metadata, sitemap, robots.txt and LodgingBusiness structured data
- 15Responsive, mobile-friendly design with a floating WhatsApp and quick-booking button
Screenshots
Select an image to view it full size