Trim Worldwide and the salon and barber booking app it needed
Trim Worldwide Ltd is a London software company with one product idea: a booking app where barbershops and salons list real prices, customers book a specific specialist at a specific time, and neither side pays a hidden fee. The customer app is free; shops subscribe, and the company’s stated position is that pricing scales with the size of the team. That promise only holds if the tools behind it are good enough to replace the paper diary, the WhatsApp group, and the spreadsheet most independent shops still use.
The brief covered three surfaces from day one: a customer-facing salon and barber booking app, a business app called Trim Business for owners, managers and independent specialists, and a web admin panel for the Trim team. Sigi delivered all three plus the backend as a single engagement under our on-demand platforms practice, with the same API serving every screen.
Why generic barbershop scheduling software did not fit
Off-the-shelf salon scheduling tools assume one owner, one price list and one way of paying staff. Trim was built with barbers, to make managing a shop easier, and their reality is messier than that. Four problems shaped the build:
- Availability drifts. A shop with five chairs takes online bookings, walk-ins and blocked time at once; if the calendar in the business app lags the customer app by even a minute, a chair gets double-booked.
- Staff are paid three different ways in the same shop. Some are on commission, some on salary, and some rent a chair and run their own books. Existing tools forced owners to track the third group outside the app.
- Rent-a-chair specialists want privacy. A freelance barber renting a chair does not want the shop owner seeing their revenue, yet customers should still find them under the shop’s profile.
- Policies are per shop, not per platform. Deposits, cancellation windows and no-show penalties differ from one salon to the next and only make sense for online bookings, not walk-ins.
On top of that sat the payment problem: customers expect card, Apple Pay and Google Pay in the app, shops still take cash at the counter, and Trim itself needed monthly recurring subscription billing for business accounts.
The stack we built it on
Sigi built the two mobile apps in Flutter from a shared codebase so the customer app and Trim Business ship to iOS and Android from one team and one release cycle. The admin panel is a React web app. Both talk to a Node.js and Express API backed by MySQL as the system of record, with Redis handling caching and hot availability data, Firebase delivering push notifications, and the whole stack running in containers on AWS ECS with S3 holding shop galleries and profile media.
Three decisions defined the architecture. First, availability lives in one place — the API — and every calendar view (list, calendar, timeline) reads from it, so a drag-and-drop reschedule in the business app and a customer’s rebooking resolve against the same slot state. Second, Stripe handles both sides of the money: customer payments with cards and digital wallets, and the business app’s subscription management with monthly recurring billing, refunds and transaction history. Third, a rent-a-chair specialist is modeled as their own shop rather than a staff member, which is what makes their finances private while keeping them discoverable under “Specialists” in the customer app.
The same approach — a shared backend and native-quality Flutter clients — is how Sigi scopes most mobile app development projects where two audiences need two apps, and it is the reason the admin panel could be added without touching the mobile release schedule. Where the domain logic is this specific, we treat it as custom software rather than configuration of a booking template.
How the platform is built and run
Trim is one product with three clients, engineered so a live calendar, three staff pay models and a subscription business never disagree:
- Two Flutter apps — the customer app and Trim Business — built from a shared codebase so both ship to iOS and Android from one team and one release cycle, with a React web admin over the same API.
- A Node.js and Express API backed by MySQL as the system of record, Redis for caching and hot availability data, and shop galleries and profile media on S3, all running in containers on AWS ECS.
- One source of availability held by the API, which every calendar view — list, calendar and timeline — reads from, so a drag-and-drop reschedule and a customer rebooking resolve against the same slot state.
- Three staff pay models on one ledger: each completed service writes a single ledger line tagged commission, salary or rent-a-chair, and a rent-a-chair specialist is modeled as their own shop to keep their finances private while staying discoverable.
- One Stripe integration for both sides of the money: customer card, Apple Pay and Google Pay payments, and the business app’s subscription with monthly recurring billing, refunds and transaction history.
- Role-based permissions with multi-level access across the business app, and Firebase delivering appointment reminders and push notifications.
- The API and data model shipped first, then the Flutter apps and React admin brought up against it in parallel, so every feature was exercised from the customer, owner and admin side, with Stripe flows run end to end in test mode across cards and wallets before going live.
What we implemented: across the Trim ecosystem
Sigi designed, built and shipped all three surfaces plus the backend. Here is what we implemented across the customer app, Trim Business and the admin panel.
Customer app: find and book a barber or salon
- Interactive map discovery of nearby barbershops and salons, with search and filters by service.
- Shop profiles showing services, categories, gallery, opening hours, social links, reviews and up-front prices with no hidden fees.
- Specialist view, so a customer can book a named barber or a rent-a-chair freelancer inside the shop.
- Booking management: reschedule or cancel within the shop’s policy, with deposit and cancellation rules surfaced before confirming.
- Saved favorites, appointment reminders and push notifications via Firebase.
- Online payment by card, Apple Pay or Google Pay through Stripe, with stored payment methods for repeat bookings, and the option to leave a review after the service.
Trim Business app: calendar, staff and payouts
- Calendar. Real-time booking updates in list, calendar and timeline views, plus a multi-staff calendar with live columns and time blocks. All three views read the single slot state held by the API, which is what stops a drag-and-drop reschedule and a customer rebooking from claiming the same chair.
- Walk-ins and policies. Walk-in bookings with quick customer registration, service status tracking from scheduled to completed, and per-shop policies for deposits, no-show penalties and cancellations. Policies attach to the shop record and apply to online bookings only, so a walk-in is never charged a no-show fee.
- Staff and rent-a-chair. Role-based permissions with multi-level access, schedules and working hours per team member, and wage models for commission, salary and rent-a-chair feeding the ledger above. A rent-a-chair specialist gets a private account — its own services, pricing and performance data — separate from the host shop’s figures.
- Payments and subscriptions. Card, Apple Pay and Google Pay through Stripe alongside cash tracking, plus subscription management with monthly recurring billing, refunds and transaction history. One Stripe integration covers both the customer’s payment and the shop’s own Trim subscription.
- Reports and customers. Ten customizable performance reports and graphs covering service breakdown, staff analytics and weekly reporting; customer profiles with history, notes, allergies and feedback; block and unblock; coupon creation with time-of-day and day-of-week targeting and caps; and notifications to customers and staff for events, promotions and schedule changes.
Web admin panel for the Trim team
- React dashboard over the same API, listing registered shops, specialists, users and booking activity across the marketplace.
- Shop and user management, including reviewing new business accounts and checking their subscription status.
- Transactions and disputes viewed against the same MySQL records the apps write to, so there is no second data store to reconcile.
The admin panel is deliberately lighter than the business app. Day-to-day operations belong to shop owners inside Trim Business; the panel exists so Trim’s own team can oversee the marketplace and answer support and subscription questions without touching the database directly.
Delivery and engineering practice
The build ran as one product with three clients rather than three projects. Sigi shipped the API and data model first, then brought the Flutter apps and the React admin up against it in parallel, which meant every feature — walk-ins, coupons, the rent-a-chair split — was exercised from the customer side, the owner side and the admin side before release. Stripe flows were run end to end in test mode across cards and wallets before going live, and the containerized deployment on ECS lets Trim scale the API independently of media storage on S3.
Both apps are maintained on a steady cadence: at the time of writing the App Store lists Trim at version 1.0.33 and Trim Business at 2.0.9, and both Google Play listings show updates in late July 2026. Trim Business is free to install with in-app subscription tiers published on the App Store between $6.99 and $12.99, in line with the company’s pricing-scales-with-the-team positioning.
The team and expertise behind the build
Trim was delivered end to end by one cross-functional Sigi team — product strategists, UI/UX designers, mobile and full-stack engineers, and QA — working as a single unit rather than handing the build between vendors. Sigi hires only specialists: every engineer is an expert in their own field, and we invest in the team as they deliver, supporting certifications and continuous learning so expert, motivated engineers stay on every build. It is the model we have run since 2016: deep, cross-industry expertise owning the whole stack, from the shared Node.js API and MySQL data model to the two Flutter apps, the React admin panel, and the Stripe payments and subscriptions. Modeling three staff pay models and rent-a-chair privacy against one live calendar is exactly the kind of domain-specific, multi-surface engineering our team is built for — the same capability behind our mobile app development and custom software work.
Custom-built versus off-the-shelf booking software (Fresha, Booksy, Squire and similar)
Established salon and barber platforms — Fresha, Booksy, Vagaro, Squire — are strong products, and for a single shop signing up to one is often the right move. Trim was built because its owner wanted a branded, owned product with rules those platforms don’t bend to, and economics that don’t scale against the team:
- Per-staff pricing and marketplace fees add up: Booksy bills per bookable staff member (about $29.99 for the first, roughly $20 each after), and Fresha and Vagaro take a one-time ~20% commission on new clients booked through their marketplaces. Trim is owned outright, so adding a chair or a barber does not raise a monthly bill.
- Three pay models on one ledger — commission, salary and rent-a-chair — where a rent-a-chair specialist is modeled as their own shop with private finances but stays discoverable under the salon; generic tools force that third group to be tracked outside the app.
- A branded customer app and business app under the client’s own name, rather than the client living inside a shared marketplace app where the platform owns the customer relationship.
- Per-shop policies — deposits, cancellation windows, no-show rules — and one Stripe integration carrying both customer payments and the business subscription, configured to how this operation works rather than a platform default.
The honest trade-off: Fresha, Booksy and the rest are quicker to switch on, come with an existing customer marketplace, and need no engineering team — a real advantage for a single independent shop. For an operator who wants a branded, owned product, three pay models and rules a marketplace won’t bend to, a custom build is the better fit.
What shipped: a live salon and barber booking app on both stores
Trim now owns a complete grooming platform: customers book and pay in one app, shops run scheduling, staff and finance in another, and the Trim team oversees the marketplace from the web. Two apps are live across four store listings on iOS and Android. The measure today is product completeness: the pay-model problem that kept rent-a-chair barbers off other platforms is solved in the app, and the three surfaces share one API rather than three sets of data.
Both apps are presented at trimworldwide.co.uk; the direct App Store and Google Play links are in the project summary above.
Related booking platforms and what to build next
Trim is the second salon booking product in this portfolio; the Woowlook salon and spa booking app tackles a similar customer journey with a different business model, and the LinMo fitness community app applies the same Flutter-plus-shared-API pattern to coach-led classes and club events. For two-sided service marketplaces with provider payouts, the ServiPR services marketplace and the Just Dry Cleans on-demand laundry platform share the same shared-backend pattern.
If you are planning a salon and barber booking app, a barbershop management app, or any scheduling product where staff are paid in more than one way, talk to Sigi about scoping the customer app, business app and admin panel together — or read more about our UI/UX design and DevOps and cloud work that sits underneath builds like this one.




