DEV3 Lintelo – Home Services Marketplace Laravel Script with Provider Calendars, Job Offers & Extras (Flutter Apps)

A self-hosted home services marketplace on Laravel 12 and Filament 4 with customer and provider Flutter apps: fixed-price jobs, arrival windows held on real provider calendars, job offers, on-site extras for approval and cleaning plans. Installer and demo data included.

by DEV3 TechnologiesVerified Author(0) 0 sales 0 viewsUpdated 05 Nov 2026

Video tour. Pick a section below to browse 111 screenshots in 18 sections.

App & phone tours

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

  • Mobile web1:00
  • Customer app1:15
  • Provider app1:12

Lintelo is a home services marketplace that you host yourself, built by DEV3 Technologies on Laravel 12 and Filament 4, with two Flutter apps: one for customers and one for service providers. A customer taps a room, picks a fixed-price job or a paid inspection visit and chooses an arrival window. The platform holds that time on a real provider's calendar, offers the job, takes a deposit, and settles the provider when the job is done. The demo business is a fictional trades and cleaning company, Lintelo Home Crew, in the hill city of Tarrowby, priced in pounds with 20% VAT included.

No live demo: 111 grouped screenshots and video tours show the 3D marketing site, the public booking pages, the admin panel and both apps. Install it with the demo data to try every role on your own server.

Customers

  • A public services catalogue with fixed-price packages (labour, materials and duration) or an inspection visit fee, six room cards that lead straight to jobs, and a booking wizard with a day strip and arrival windows marked open, few left or full.
  • A customer app that books in steps (address, window, deposit summary), then shows finding your pro, pro assigned, live tracking and an arrival code the provider must enter.
  • A cancel preview that shows whether it is free or carries a fee before you confirm, plus reschedule, a free callback after a job and a missed-job path.
  • Extras on site: when a provider proposes extra work the customer sees its price and a countdown, and approves or declines. Nothing is added without a yes.
  • A final bill split into labour, materials and fee with VAT shown, a pay-the-balance screen, rating and tip, a wallet, and a debt block that stops a new booking while a fee is unpaid.
  • Cleaning plans: weekly, fortnightly or four-weekly visits with the discount shown per visit, a plan calendar and a skip-a-visit action.

Providers

  • A provider app with a day strip and week view, working hours, time off, an application and a documents area with warnings for what is missing or expired.
  • Job offers with a countdown, an offer-taken state, job detail, an on-the-way step and a too-far check, an arrival code pad, an on-site timer and a no-show wait.
  • Add an extra from the job, wait for the customer, and see the result, whether approved or declined. Finish with a summary, collect cash with a mismatch check, and see what is owed.
  • Earnings by week with a job split, pending against available balance, cash owed, a cash-out request and a strikes screen.

Admin panel

  • A dashboard with a 3D Street Board of houses (up to 64, coloured by roof with a legend), a job board, provider calendars and a manual-assign dialog with the unassigned queue.
  • Bookings with tabs and a detail page, the offers log, extras and bill, the money split, callbacks, refunds and customer debts.
  • Provider applications, providers, documents, strikes, services, packages, commission rules, plans, cash balances and reports.

Money and fairness

  • A deposit is taken at booking, the bill comes from a snapshot taken at booking time so later catalogue edits never change it, and the platform fee is split from the provider share per job.
  • Every deadline (offers, holds, payment windows) is applied when the record is read, so nothing depends on the scheduler having run on time; the scheduler only sweeps idle records.
  • Provider calendars are locked while a job is accepted, extended or rescheduled, and the 16 parallel-request checks on MySQL cover those paths.

What is included

  • The Laravel application with Composer packages and compiled assets inside (no Node.js or Composer on the server), both Flutter projects in apps/, the shared DEV3 Flutter package, a web installer and HTML documentation.
  • Demo data for the fictional business: about 16.7 thousand bookings with their offers and settlements, plans and providers around Tarrowby. It is smaller than a very large marketplace, to keep the install quick.
  • The shared maths test vectors the Dart apps copy, so the apps and the server price and cancel identically.

Good to know

  • Card charging for balances is simulated. The step that charges a stored card without the customer present (for the final balance) is a simulation; the real gateways are never called out of the box. Connect and test a gateway before you take money.
  • Provider document upload is images only. Providers pick photos from the gallery and the file is sent to the server; PDFs cannot be picked.
  • The provider app has no GPS plugin. Against a real server it reports the job address as the provider's position, so the too-far check is only as good as that. Add a location plugin for real positions. The customer app map draws its path from the first position it sees, because the live endpoint returns only the latest point.
  • There is no mutual block. A customer cannot block a provider, or the reverse, after a bad job; strikes and admin tools are there, but there is no block table.
  • Demo history is about 16.7 thousand bookings, with weekly summaries for the provider and platform ledger entries rather than one entry per event. Settlements and invoices are per job.
  • A rare calendar edge case is open. If a provider's on-site extension request fails, the job's recorded duration can still change and leave a gap in the calendar. The parallel-request checks show no errors and a coherent final state, but handle such a gap by hand.
  • Payments, SMS and push are simulated by default. The simulated payment gateway works out of the box, so booking and paying need no keys. Stripe, Razorpay and PayPal drivers are included but were not run against real accounts.
  • The apps were not tested on physical devices. They build as debug Android packages and run on the iOS simulator.
  • Use MySQL or MariaDB on a live site. The Pest tests run on SQLite, where row locks do nothing; the concurrency checks that prove the locking run on MySQL 8.
  • Name: Lintelo is a working name checked by a web search only, not a trademark clearance. Check it before you launch under it.
  • No hosted demo. Every customer, business and record in the screenshots is fictional. Install it with the demo data to try every role on your own server.

Quality checks

Lintelo 1.0.0 passed the seven release gates of the DEV3 Laravel suite on the final code: static analysis (Larastan level 6, 0 errors, no baseline), 148 Pest tests with 1,376 assertions, a front-end size budget, migrations and seeding on MySQL 8 and SQLite, a headless-browser pass over 70 pages including 24 happy paths, the hero overlap check at four desktop widths, tablet, phone, Arabic and dark, and 16 parallel-request race checks on MySQL, an installer test from the zip, and a secret scan. The customer app passed analysis and 106 tests, and the provider app 141 tests, with debug Android and iOS simulator builds. A review of the money and booking code fixed 15 findings, and a second review of the calendar locking left only the edge case listed above. Lighthouse scores were not measured.

How it's built

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

The engineering behind Lintelo: a calendar of cells locked in a fixed order, deadlines applied on read, a bill taken from a booking-time snapshot and extras that need a yes.

The problem it solves

A home services marketplace sells time. Two customers must never be given the same provider hour, a provider must be able to extend a job while a customer is booking the next slot, and every pound has to land in the right place: deposit, extras, balance, fee and provider share. Offers expire, customers cancel and reschedule, and a card may fail days after the job. The numbers must stay right even when several of these happen together.

Architecture and approach

Lintelo is a Laravel 12 application with Filament 4 admin at /admin, a public booking site and a REST API used by two Flutter apps.

Calendar cells

Provider time is stored as cells. Accepting, extending, rescheduling or cancelling a job locks the booking, then the offer, then the provider, then the cells, then the wallets, always in that order through one engine. A duplicate cell counts as an overlap.

Deadlines on read

Every deadline is applied when a record is read, so every test passes with the scheduler off. The scheduled command only sweeps idle records.

Bills from snapshots

A booking keeps a snapshot of its labour at booking time, so plan discounts and catalogue edits cannot change a bill afterwards. A recovered balance is never added to the paid amount twice.

Extras

A provider proposes an extra, the customer has a countdown to approve or decline, and the extension is taken under the provider lock. Maths for calendars, bills, cancellations and refunds is written once in plain classes and tested with vector files that the Dart apps copy.

Apps

The customer and provider apps share one API contract and a shared Flutter package, and start in a demo mode.

Quality gates and results

Lintelo 1.0.0 passed the seven release gates on the final code: 148 Pest tests with 1,376 assertions, 70 pages in a headless browser and 16 race checks on MySQL, the installer test from the zip and a clean secret scan. The customer and provider apps pass analysis and 106 and 141 tests. A review of the money and booking code fixed 15 findings.

Limits are listed on the item page: card charging for balances is simulated, provider documents are images only, and the provider app has no GPS plugin.

Tech stack

Area Technologies
Application Laravel 12, Filament 4, Blade, REST API
Booking Provider calendar cells, Job offers, Arrival windows, Cleaning plans
Money Deposits, Booking-time bill snapshot, Commission rules, Provider settlements
Apps Flutter customer app, Flutter provider app, Shared dev3 Flutter package, Demo mode
Quality Pest, Larastan level 6, Headless browser smoke, MySQL race checks

Inside the build

Open house: A clay-model cutaway house on a plinth with its front door swinging open and warm light spilling out, a van waiting at the kerb. Open house — A clay-model cutaway house on a plinth with its front door swinging open and warm light spilling out, a van waiting at the kerb.

Rooms: The walls lift away to show the furnished rooms, each one glowing as it is named. Rooms — The walls lift away to show the furnished rooms, each one glowing as it is named.

Guides & articles

Practical guides and engineering write-ups for DEV3 Lintelo.

Home services software: 7 things to check before you pick one

Last updated
Home services software: 7 things to check before you pick one: DEV3 Lintelo

A home services marketplace sells time and trust. Here are seven things to check before you pick software, with DEV3 Lintelo as the worked example.

Lintelo hero: a clay-model house on a plinth with its front door open

1. Are prices fixed up front?

Customers should see a fixed price or an inspection fee before they book. Lintelo shows packages with labour, materials and duration.

2. Is the time real?

Look for a calendar that holds the hour on a named provider. Lintelo locks provider cells when a job is accepted, extended or rescheduled.

The provider calendars in the admin panel

3. What happens to an offer?

Offers should expire and move on. Lintelo offers the job with a countdown and logs every round.

4. How are extras handled?

A provider finds more work on site. The customer should approve it with a price in view, which is what Lintelo does with a countdown.

A customer approving extra work in the app

5. Can customers plan a regular visit?

Weekly, fortnightly and four-weekly plans with a visible discount per visit and a way to skip.

6. Who gets paid what?

Look for a bill split into labour, materials and fee, and a provider share after commission.

The provider earnings view

7. What is not finished?

Ask for the limits in writing. For Lintelo: card charging for balances is simulated, provider documents are images only, the provider app has no GPS plugin and there is no mutual block between customer and provider.

Video tour of Lintelo

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?

More from this author

View all

Related in Web Scripts & Software

View all