DEV3 Technologies home

DEV3 Fieldhour – Court, Turf, Room and Equipment Booking Laravel Script with Split Payments and Flutter App

A self-hosted venue booking app on Laravel 12 and Filament 4: live hourly grids for courts, pitches, rooms and desks, peak pricing, split payments, open matches, memberships with credits, block bookings, QR check-in and a Flutter booker app.
by DEV3 TechnologiesVerified Author(0) 0 sales 3 viewsUpdated 11 Nov 2026

Launch Offer: up to 50% off

This item is 50% off: $24.50 instead of $49

Ends in
--
Days
--
Hrs
--
Min
--
Sec

Video tour. Pick a section below to browse 42 screenshots in 6 sections.

App & phone tours

Tap play to watch each app. Nothing downloads until you do.

  • Mobile web0:14
  • Booker app0:30

Fieldhour is a booking system for one operator who runs one or more venues: a padel and tennis centre, a turf with splittable pitches, a coworking space with meeting rooms, desks and podcast booths. It is built by DEV3 Technologies on Laravel 12 and Filament 4. Bookers reserve on the web or in the Flutter booker app, staff run the day from a front-desk grid, and partners such as schools and leagues manage their own block bookings.

What it does

  • Live hourly grids. Courts down the side, half-hours across, peak prices shaded, slots held for a few minutes with a countdown while the booker adds equipment and pays. Two people can never hold the same slot.
  • Combined resources. A full pitch and its two halves block each other for overlapping time, in both directions.
  • Pricing rules. Peak and off-peak bands, weekend and member prices, priorities, minimum charge, and a rule simulator that answers what Court 3 costs on Saturday at 18:00 for a member. A booking that crosses a band boundary is priced slot by slot.
  • Split payments. The organiser pays their share and each friend gets a pay link that works without an account. At the deadline the organiser is charged the rest or the booking is released and paid shares are refunded, as you configure.
  • Open matches. Post a booked court with spots left and a level; other players join and pay their share.
  • Memberships and packs. Plans with credits that cover whole slots, member prices, a longer booking window and a release time.
  • Block bookings for partners. Weekly or fortnightly series for schools and leagues, skip or move one date, change this and following, with a clash preview before anything is created, and a monthly partner invoice on account.
  • Equipment. Rackets, balls, bibs, projectors and microphones with stock per slot, hand-out and take-back at the desk and a damage fee.
  • Front desk and door kiosk. A desk grid with walk-in booking and drag to move, cash or card, and an installable kiosk page that scans a rotating QR pass or a six-digit code and tells the player which court is theirs.
  • Reports. Utilisation heatmap by court and hour, revenue by venue and sport, peak against off-peak, split completion, no-shows, credits and equipment, plus a Court Clock on the dashboard.
  • API and app. A key-based REST API with an OpenAPI document and signed webhooks, and the source of a Flutter booker app with sign in, grid, booking, split, pass, memberships and open matches (see below).

The Flutter booker app

Fieldhour ships as a venue-booking web product plus a Flutter booker app (apps/booker, Android and iOS source, dark first, demo mode on by default). Players browse venues, read the grid with peak shading, hold a slot, add players, equipment and credits, split the cost, pay a friend's share by link, show a rotating QR pass, join open matches and manage membership and wallet. docs/STORE-PUBLISHING.md (also in the buyer guide as "Publishing the apps") covers re-id, icons, the build flags that point the app at your server, Android and iOS store steps, data-safety notes and push setup.

Quality checks

The release passed seven gates on the final code: Larastan level 6 with 0 errors, a Pest suite of more than 220 tests, a build well inside the page budget, migrations and the full demo seed on MySQL 8 and SQLite, a headless smoke test with happy paths for the booker, the desk and partners, race checks on MySQL (six holds on one slot, full pitch against half pitch, a release-time rush, the last rackets, a share paid against the deadline), the installer driven from the zip and a secret scan. A consistency command proves bookings, shares, credits and equipment agree on about 99,000 demo bookings.

What you should know before buying

  • One operator, several venues. It is not a marketplace where many operators sign up.
  • Payments are simulated. Card payments, split payments and refunds use a simulated driver until you connect your own gateway; you are the merchant of record. No payment-compliance certification is claimed.
  • No hardware drivers. Floodlights, doors and turnstiles are not driven; Fieldhour sends signed lights.on and door.open webhooks that your own relay can act on.
  • Web booking is simple. Recurring bookings and extending a booking are in the app API and the staff panels, not in the web booker flow.
  • Desk grid drags to move a booking with a mouse; there is no touch drag, and extending is done on the booking page with a price preview.
  • Maps in the demo are static drawings; map tiles are a configuration step for your own venues.
  • Flutter app. The booker app source is included with a store-publishing guide; building, publishing and store approval are your step and are not promised. The app was verified in simulator builds, automated tests (including the pricing and split vectors) and against the live API, not on a physical device. Push is simulated and the app makes no payment-compliance claim.
  • App scope. Only booker accounts can use the app (staff logins are refused). The booker web flow has no recurring booking or extend, but the app has weekly repeat and extend; the series-conflict preview is covered by tests.
  • Use MySQL or MariaDB for a live site; the concurrency checks were run on MySQL 8. One cron entry every minute is required.

Included

Source code, the web installer, the Flutter booker app source with a store-publishing guide, a buyer guide, demo data with a fictional operator, three venues, 46 courts, rooms and desks and a year of bookings, and six months of support.

How it's built

Architecture, stack, key decisions and the quality gates DEV3 Fieldhour passed before release.

The engineering behind Fieldhour: a slot lock that covers combined pitches, holds that expire, split shares that always sum to the total and a consistency command run over about 99,000 demo bookings.

The problem it solves

A booking grid looks simple until six people tap the same slot at the same second, a half pitch is booked while the full pitch is requested, the last rackets are hired by three bookings or a friend pays a share just as the deadline releases the court. Each case must end with one winner, correct money and no orphan rows.

Architecture and approach

Fieldhour is a Laravel 12 application with a Filament 4 admin panel, a hand-built front-desk grid, a public booking site and an app API used by a Flutter booker app whose pricing and split maths are checked against the same 48 test vectors as the server. A booking or hold locks the court row and every related node of the combined-resource graph in a fixed order, then checks overlaps and closures. Prices are computed per slot from the highest-priority rule. Shares always sum to the booking total, with the organiser absorbing the rounding remainder, and share payments run under the booking row lock. Equipment availability is stock minus overlapping hires under a stock row lock. Money is integer minor units, and fieldhour:check proves overlaps, price lines, shares, credits and stock agree.

Quality gates and results

The release passed seven gates, including a headless smoke test and race checks on MySQL for six holds on one slot, full pitch against half pitch, a release-time rush, the last rackets and a share paid against the deadline. The consistency command passes on the demo data: three venues, 46 resources and about 99,000 bookings.

Tech stack

Area Technologies
Application Laravel 12, Filament 4, Blade, REST API
Data MySQL 8, SQLite
Frontend Tailwind CSS 4, Vite
Mobile Flutter
Quality Pest, Larastan level 6, Playwright

Inside the build

Every court booked by the hour: the home page shows the live booker grid and the split-payment sheet over the front-desk grid. Every court booked by the hour — the home page shows the live booker grid and the split-payment sheet over the front-desk grid.

On a phone: the hero stacks with the booker grid above the desk grid. On a phone — the hero stacks with the booker grid above the desk grid.

Guides & articles

Practical guides and engineering write-ups for DEV3 Fieldhour.

Court and venue booking software: 7 things to check before you pick one

Last updated
Court and venue booking software: 7 things to check before you pick one: DEV3 Fieldhour

Players want to see an open court, tap it and pay with friends. Operators want a full grid and no double bookings. Here are seven things to check before you pick booking software, with DEV3 Fieldhour as the worked example.

The Fieldhour home page with the live booker grid

1. Is the grid live and safe?

Two people must never hold the same slot, and a full pitch must block its halves. Fieldhour locks the court and every related node, holds the slot for a few minutes and shows a countdown.

The live availability grid

2. Does pricing follow your peaks?

Peak bands, weekend and member prices with priorities, and a way to test a rule before it goes live.

The price rule simulator

3. Can a group split the bill?

The organiser pays their share, friends pay from a link without an account, and the deadline either charges the organiser or releases the court.

A friend paying their share

4. Can you fill empty spots and keep members?

Open matches with spots left, and memberships with credits and a longer booking window.

Open matches

5. Can schools and leagues book blocks?

Weekly series with a skipped or moved date, a clash preview and a monthly invoice on account.

Block bookings

6. Is there a player app?

Fieldhour ships a Flutter booker app next to the web product, with a store-publishing guide. Players see the grid, hold a slot, split the cost and show a rotating pass.

Availability grid — Resources as rows, time sideways, peak shading and a price on every slot.

Split the cost — Equal, percent or fixed shares; the organiser absorbs the odd cents.

Pass — A QR code that rotates every 30 seconds, with a six-digit code for the kiosk.

7. Are the limits honest?

Fieldhour serves one operator with several venues, not a marketplace. Payments are simulated until you connect a gateway, floodlights and doors get signed webhooks rather than drivers, and the web booker has no recurring booking or extend (the app does). The app was verified in simulator builds, tests and against the live API, push is simulated, and store approval is your step. Say that plainly to your buyers.

Video: The Fieldhour tour

Frequently asked questions

The complete source code (version 1.0.0) as a download from your account, with the setup and usage guides shown on this page. You can modify the code to suit your product.

Buying guides: Laravel scripts with Filament panels and a web installer · Next.js or Laravel for a SaaS script?

Questions about this product (0)

Answers from the DEV3 team and the community.

Ask a question

No questions yet.

Wondering about setup, licensing or customisation? Ask, and the DEV3 team will help.

More from this author

View all

Related in Web Scripts & Software

View all