Parking12

A reservation and payment system for a 19-space city parking lot.

Rental12 — 2026 · Web App

The Brief

A hospitality company was coordinating parking for ~40 holiday apartments by message and memory. We turned it into software: booked, paid, and allocated without a human in the loop.

Rental12 operates short-term rentals across Olbia, Sardinia, plus a gated 19-space parking lot in the city centre. Guests wanted parking; the team was assigning spaces manually, chasing payments, and juggling availability in their heads — peak season made it unsustainable.

We built a booking web app wired into the tools they already run on: accommodation bookings flow in from Lodgify, payments run through Stripe, and their Airtable base stays the single source of truth. This isn't a brochure site — it's an operations system with a guest-facing front door.

19
Spaces, allocated automatically
4
Languages in the guest flow
4
Seasonal price bands, computed per night
165
Automated tests guarding payments & pricing
The Guest Journey

From booking email to parked car — no phone calls, no spreadsheets.

Step 01

One click from the booking email

Every apartment booking confirmation carries a unique parking link. Guests arrive at a form with their name, apartment, and dates already filled in.

Step 02

Choose a space

Regular or EV charging, checked against live availability for those exact dates — sold-out options grey themselves out.

Step 03

Priced to the night

Four seasonal rate bands, computed server-side per night — even across season boundaries — with a weekly discount applied automatically.

Step 04

Pay with Stripe

Hosted checkout in the guest's language. The space is assigned the moment payment confirms — with automatic refunds if a race for the last spot is ever lost.

Step 05

Arrive and drive in

The confirmation shows the assigned space, directions to the lot, and the gate keypad code — released two days before arrival.

What We Built
01

Guest Booking Flow

A mobile-first booking flow linked from the guest's accommodation emails — pre-filled details, license plate capture, and a confirmation page with everything they need.

  • ◆Unique per-booking URLs from Lodgify
  • ◆English, Italian, French, and German
  • ◆"Add plate later" fallback for early bookers
02

Dynamic Pricing Engine

Nightly pricing across four seasonal bands with cross-season splitting and a 7-nights-for-6 weekly rule — formalised, documented, and covered by unit tests.

  • ◆Per-night seasonal computation
  • ◆Weekly discount applied automatically
  • ◆Pricing rules versioned and test-covered
03

Payments & Refund Safety

Stripe Checkout with idempotent webhooks: spaces are only assigned after payment, fees are recorded for accounting, and overbooking races auto-refund.

  • ◆Spot assigned on payment confirmation
  • ◆Automatic refund on booking conflicts
  • ◆Stripe fees captured for net revenue
04

Admin Dashboard

Occupancy and revenue at a glance, a spot-by-day calendar, full booking management, custom booking links, and one-click cancel-and-refund.

  • ◆Revenue, occupancy, and arrivals tiles
  • ◆Spot × day calendar across booking types
  • ◆Custom links for comp or discounted bookings
05

Lodgify Sync & Reconciliation

Accommodation bookings stream in via webhooks, with a nightly reconciliation sweep that self-heals duplicates and catches anything the webhooks missed.

  • ◆Webhook-driven booking ingestion
  • ◆Nightly reconciliation cron
  • ◆Deduplication that self-heals
06

Audit Trail & Spot Management

Every change to parking state records who made it — admin or system. Spaces can be disabled globally or blocked for date ranges with conflict warnings.

  • ◆Per-write attribution across the team
  • ◆Date-range blocks for maintenance
  • ◆Conflict detection on reassignment
Parking12 secure gated entrance

Gated access, keypad entry

Parking12 facility interior

19 spaces in central Olbia

Tech Stack
Next.js
React
TypeScript
Tailwind CSS
Airtable
Stripe
Clerk
Sentry
Vitest
Vercel
The Result

Live and taking real payments since May 2026 — guests book, pay, and park without the team lifting a finger.

Spaces assign themselves at the moment of payment, availability is always current, and the admin dashboard shows occupancy, revenue, and arrivals at a glance. Every change is attributed, every payment reconciled — including Stripe fees — and a nightly sweep keeps the booking data honest.

The pricing engine and payment paths are protected by 165 automated tests, because this system moves real money for a real business every day of the season.

Visit app.parking12.com