Launch Offer: up to 98% off

This item is 98% off: $1 instead of $49

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

DEV3 Balayo – Salon & Spa SaaS Laravel Script with Processing Gaps, Colour Formulas & Till (Flutter Apps)

A multi-tenant salon and spa platform on Laravel 12 and Filament 4 with client and staff Flutter apps: appointments as stages that free the stylist while colour develops, gram-level formulas, a split-tender till and plans. Installer and demo data included.

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

Video tour. Pick a section below to browse 118 screenshots in 24 sections.

App & phone tours

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

  • Client app1:02
  • Staff app1:20

Balayo is a multi-tenant salon and spa platform that you host yourself, built by DEV3 Technologies on Laravel 12 and Filament 4, with two Flutter apps: one for clients and one for staff. Every salon, spa or barbershop on your install is a tenant with its own staff, chairs, basins, rooms, clients, stock and till. The idea behind it is how a salon really works: a colour client sits developing while the stylist takes someone else, so an appointment is a chain of stages (apply, process, rinse) and each stage holds different things. The demo has twelve fictional salons, led by Foil & Fable (hair and colour), Mirelle House (a spa) and Sable Row (barbers), priced in US dollars. Services are untaxed and retail takes a sales tax added at checkout.

No live demo: 118 grouped screenshots and a desktop video tour show the marketing site, the salon public pages, the super-admin panel, the salon back office and both apps, and each app also has a phone tour. Install it with the demo data to try every role on your own server.

Clients

  • A public site for your platform with pricing, pages for hair, spa and barbers, help and owner sign-up, and a public page for each salon in its own logo and accent colour, with services by category, staff, gift cards and packages.
  • A booking wizard that only offers times where every stage fits: the stylist, the chair and the basin must all be free. A chain bar shows where the stylist's hands are busy and where the stylist is free while a colour develops.
  • A client app whose home is the Mirror: a flat arched mirror holding the next visit with a countdown. Clients join a salon by code or link, build a visit from several services, book a patch test, sign a consent form with a finger, pay a deposit, see a live development timer and get a receipt.
  • Gift cards, prepaid packages, memberships with a grace period, a waitlist with a timed offer to claim, a cancel preview that shows the fee before you confirm, online tips, reviews, a formula summary and before-and-after photos taken with consent.
  • English and Arabic with right-to-left layout, light and dark themes, and a tablet layout with a navigation rail.

Staff

  • A staff app whose home is the Chair Column: one vertical day with solid blocks where your hands are busy and a hatched gap, with a live countdown, while a client develops. One app can hold two salons and switch between them.
  • Start each stage with a tap, a development ring that runs down from the server deadline, and a client card that shows allergies and patch tests first, then the last formula and photos.
  • A formula editor: pick backbar products, move grams in fives, set the developer and see the mix as one gram bar. Reuse the last formula in one tap.
  • Add a service to a visit, send the visit to the till, seat walk-ins, close a no-show, read tips and the pay statement with commission band progress, and set hours and time off.

Salon back office (/business)

  • A full-screen floor calendar by stylist or by station, with hands-on, processing and free blocks, gap highlighting, quick add into a gap, and a refusal when a basin or stylist is already taken. Desk booking is done here.
  • A flat top-down Floor Plan of chairs, basins and rooms coloured by state, a walk-in queue, a waitlist, visit detail with stages, timers, formulas, photos and consent, and a stage editor that shows each service as a chain bar.
  • Client cards, formulas in grams with cost, patch tests that gate booking, and photos beside signed consent.
  • A till with split tender (deposit, gift card, cash, card and tip on one sale), tips split between the stylists who worked, a close-the-till count with over and short, sales, gift cards, packages and memberships.
  • Commission plans with bands, weekly pay statements with commission, tips and chair rent, stock with low-stock flags, colour cost against revenue, online takings and weekly payouts, and billing with usage meters.

Super-admin (/admin)

  • Tenants with usage meters, plans, invoices, platform fees on online payments, suspended salons and an audited impersonation log. Three plans are included (Solo $29, Studio $79 and House $159 a month in the demo) and are rows you edit; a new owner gets a 14-day trial with no card. Plan features are enforced on the server, not only hidden.

Rules built in

  • Every deadline (deposit holds, waitlist offers, memberships) is enforced when a record is read, so a stalled scheduler never leaves a stale hold in front of a client.
  • Every tenant table carries a team id, and a request for another salon's record gets a 404, never a 403.
  • Money is stored in the smallest currency unit, and online money is collected through one install-wide gateway and credited to each salon's takings, less a plan-based fee.

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 a buyer guide page in Documentation/.
  • Demo data: twelve fictional salons in fictional towns with about 7,300 visits, staff, stations, stock, tills and public pages.

Good to know

  • You are the merchant of record. Online money goes through the one gateway of your install and is paid out to salons, so salons cannot connect their own Stripe account.
  • Card terminals are recorded, not integrated. The till notes a card payment taken on a terminal; it does not talk to the terminal.
  • There is no card-on-file no-show fee. Deposits are supported; charging a saved card after a no-show is not.
  • Auto-renew on a real gateway needs developer work. Memberships and salon subscriptions renew by a pay link and a grace period by default; charging a saved card automatically on a real gateway needs buyer work.
  • Stripe refunds have no idempotency key yet. A gateway timeout after a refund was accepted can be retried, so review retried refunds before you take real card payments.
  • The staff app needs a connection. Visits, stages and the till are written on the server as they happen.
  • One currency per install.
  • SMS reminders are only logged. They are written to the log and not sent.
  • "Add to calendar" copies the .ics text. The client app has no share sheet for it.
  • Desk booking is in /business, not the staff app. The staff app has no booking endpoint.
  • The apps were tested on simulators only. They were not run on physical devices, and the Android and iOS builds are debug builds.
  • Payments, SMS and push are simulated by default. The simulated gateway works out of the box. Real gateway drivers were not run against real accounts, and real push was not exercised.
  • Arabic has not been reviewed by a native speaker.
  • Use MySQL or MariaDB on a live site. Tests run on SQLite, where row locks do nothing; the concurrency checks run on MySQL 8.
  • Name: Balayo 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 salon, client and record in the screenshots is fictional. The photos are free-licence stock photos and are credited in the package.

Quality checks

These are the checks that actually ran, and not all of them ran on the final code. The test suite passed with 393 Pest tests and 4,478 assertions, and a headless-browser pass covered 36 pages and 45 race checks (16 engine and 29 money checks on MySQL); both ran shortly before a few small last edits, and the full set of release gates was not repeated on the final code. The installer test and the secret scan were re-run on the final zip and passed. The client app passed analysis and 317 tests and the staff app 297 tests before a last text change, after which analysis and tests were re-run green but the app builds were not repeated. A review of the booking, money and tenancy code found 23 issues, all fixed except one inside the shared multi-tenant package, which is listed as a request to that package. No performance scores are claimed.

How it's built

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

The engineering behind Balayo: appointments as chains of stages that hold different stations, deadlines enforced on read, tenant isolation by team id and a till that settles several tenders on one sale.

The problem it solves

A salon day is a scheduling problem with gaps in it. A colour client develops for forty minutes while the stylist is free, but the chair or basin is still held. Two desks can reach for the same gap, a patch test can be too recent, a deposit hold can expire mid-checkout, and one install serves many salons whose data must never meet. Money arrives as deposits, gift cards, cash, card and tips on a single sale.

Architecture and approach

Balayo is a Laravel 12 application with a Filament 4 super-admin at /admin, a salon back office at /business, a public website with tenant pages and a client account, and a REST API used by two Flutter apps.

Stage chains

A service is a chain of stages (apply, process, rinse). Each stage holds a stylist, a chair or a basin for its own minutes, so a processing stage frees the stylist but keeps the chair. A time is offered only if the whole chain fits, and the server refuses a stage whose basin, station or stylist is taken.

Deadlines on read

Deposit holds, waitlist offers and memberships carry deadlines that are applied under a lock whenever a record is read or acted on, so nothing depends on the scheduler. A tick command only catches records nobody is looking at and retries refunds.

Tenancy

Every tenant table carries a team id, and a request for another salon's record is a 404. Plan features and limits are enforced on the server, and a suspended salon stays readable but refuses writes.

The till

One sale can take a deposit, a gift card, cash, card and a tip together. Services are untaxed, retail takes a sales tax, tips are split between the stylists who worked and a closed till shows the over or short figure.

Apps

The client and staff apps share one API contract with the server, run Dart ports of the server's cancel-fee and chain maths against shared vectors, and start in a demo mode that needs no server.

Quality gates and results

Balayo 1.0.0 ran 393 Pest tests with 4,478 assertions and a headless-browser pass over 36 pages and 45 race checks, both shortly before a few small final edits. The installer test and the secret scan passed on the final zip. The full release-gate run was not repeated on the final code. The client and staff apps passed analysis and 317 and 297 tests before a last text change.

Limits are listed on the item page: the operator is merchant of record, card terminals are recorded and not integrated, there is no card-on-file no-show fee, auto-renew on a real gateway needs buyer work, Stripe refunds have no idempotency key yet and the apps were tested on simulators only.

Tech stack

Area Technologies
Application Laravel 12, Filament 4, Blade, REST API
Salon Stage chains and stations, Floor calendar and Floor Plan, Patch tests and consent, Gram-level formulas
Money Split-tender till, Gift cards and packages, Memberships with grace, Commission and pay statements
Apps Flutter client app, Flutter staff app, Shared dev3 Flutter package, Demo mode
Quality Pest, Static analysis, Headless browser smoke, Shared test vectors

Inside the build

Hero: A professional photo of a bright salon floor sits in an arch beside the headline, the trial button and the trust points on a warm cream page. Hero — A professional photo of a bright salon floor sits in an arch beside the headline, the trial button and the trust points on a warm cream page.

The gap: A stylist is free while a colour develops: a flat day lane shows the free stretch filled by a fringe trim. The gap — A stylist is free while a colour develops: a flat day lane shows the free stretch filled by a fringe trim.

Guides & articles

Practical guides and engineering write-ups for DEV3 Balayo.

Salon and spa software: 7 things to check before you pick one

Last updated
Salon and spa software: 7 things to check before you pick one: DEV3 Balayo

A salon day is full of gaps: a colour client develops while the stylist is free, but the chair is not. Here are seven things to check before you pick software, with DEV3 Balayo as the worked example.

Balayo home: a salon floor photo in an arch beside the headline

1. Does it understand processing gaps?

An appointment should be a chain of stages, so the stylist is free while a colour develops and another client can take that time.

A free gap drawn as a hatched block on the floor calendar

2. Does it track chairs and basins, not just people?

Booking a stylist is not enough if the basin is busy. Look for stations that are held per stage, and a refusal when one is taken.

The flat floor plan of chairs, basins and rooms

3. Are colour formulas kept in grams?

Check that every shade and developer is recorded, tied to the client and visit, and can be reused in one tap.

The formula editor in the staff app

4. Can the till take several payments on one sale?

A deposit, a gift card, cash and a tip often meet on one receipt, and a closed till should show over or short.

The till with a split-tender sale

5. Is each salon kept apart?

If you run many salons on one install, ask how data is separated and how plan limits are enforced.

6. What does the staff app do offline?

Ask what works without a signal. In Balayo the staff app needs a connection, and desk booking is done in the back office.

The Chair Column in the staff app

7. What is not finished?

Ask for the limits in writing. For Balayo: you are the merchant of record, so salons cannot connect their own payment account; card terminals are recorded and not integrated; there is no card-on-file no-show fee; auto-renew on a real gateway needs developer work; SMS reminders are only logged; and the apps were tested on simulators only.

Video tour of Balayo

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