Skip to content
Skip to content
CHIMBUK.

Try flutter, ai, pricing or sudoku

Booking & ServicesFlagship blueprint — our own production-grade build, offered to deploy for you; not a client case

Dokti — Booking & Reservations Platform

The appointment engine for chair-based and table-based businesses — salons, clinics' private wings, studios, restaurants, rentals: staff-level availability that respects buffers, reply-to-confirm reminders that kill no-shows at the root, walk-in queues with scannable tokens, and deposits over bKash that make a 4:00 slot feel real. Flagship blueprint: same interface proven on MacBook and iPhone, one design system, web on Next.js, mobile as a Flutter companion — deployable in 3–6 weeks.

The product itself, on every device

studio renders
Studio device render — service list with durations and taka prices on MacBook and iPhone, same cart showing 110 minutes and ৳3,450 on both
Studio device render — dark availability week grid per staff with free and booked chips on MacBook, day rail with a confirmed slot card on iPhone
Studio device render — business home with today capacity, next appointment card with deposit status, reminder SMS text and reply counts on both devices
Studio device render — front desk walk-in board with chair timers and issue-token on MacBook, guest's glowing Q-16 ticket with QR on iPhone
01 — Booking starts as a cart, not a form: services stack with real durations (90 + 20 = 110 min computed the same on both screens) — because an appointment is time, not a checkbox

Frames of the live product rendered in the studio pipeline — the site itself is the demo: open anything, it is this codebase running.

The build

A salon's real inventory is a Tuesday 2 o'clock — if it sits empty, it evaporates. Dokti exists for businesses whose product is time: availability is modelled honestly per staff member with buffers and service durations that actually sum, reminders arrive as text a human would send (“reply C to confirm”), no-shows cost a bKash deposit that refunds on time arrival, and the walk-in who hates apps still gets a scannable token and truthful minutes. Booking platforms sold here are calendars bolted onto a website theme; Dokti is an operations engine wearing a polite face — and we prove the responsiveness on two devices with the same pixels and the same numbers, because a booking app that disagrees between laptop and phone is two broken apps.

What we handled

  • Per-staff availability with buffers, overlap rules and “hold for walk-in” capacity — the week grid is the business's real heartbeat
  • Service durations that sum into real slots: a 120-minute bridal never double-books into a 45-minute cut's gap
  • Reply-C reminder loops: confirm counts, reschedule absorbs and no-show histories live on the booking card
  • Deposits per category via bKash/Nagad — refundable on time arrival, applied on late cancel, waived for regulars by rule
  • Walk-in tokens with scannable QR and honest chair timers — queue status the customer can watch from the tea stall
  • One design system, two surfaces: Next.js web and a Flutter companion app rendering identical states — verified, not promised

The eighth flagship blueprint is the smallest big product in this collection: Dokti, an appointment engine for businesses whose inventory is human hours — salons, studio photographers, private clinic wings, restaurant tables, rental counters. It earned its design by being watched: chairs missed, tables double-booked, reminders that read like ransom notes. What follows is the honest build: availability that models buffers, durations that sum, confirmations a customer actually replies to, deposits that make a slot mean something — and a two-device promise (web plus Flutter, same pixels) that most booking software breaks the moment anyone opens it on a phone.

An empty Tuesday 2 o'clock cannot be restocked

A salon that loses a two-hour bridal slot to a no-show has not lost ৳8,500 — it has lost ৳8,500 that no later walk-in can backfill, because the chair was reserved against a calendar that nobody trusts. Every time-based business in the country runs on the same three fragile habits: an Instagram DM as the booking system, a phone call as the reminder, and the owner's guilt as the cancellation policy. Booking software sold locally is a Google Calendar embed with a logo; the ones sold globally bill in dollars and pretend walk-ins do not exist.

Dokti was scoped from those exact failures: model availability the way a staff member actually experiences it (buffers between chairs, a senior who takes longer, a Tuesday the owner blocks for training), make durations arithmetic that sums, give confirmations a reply mechanism instead of a read-receipt, and price the no-show with a deposit the customer pays happily when it is refunded on time.

The calendar is the product

Availability is generated, not typed: per-staff schedules, service durations, setup time and buffer rules compile into the free slots a customer may book — including the clever ones, like “hold this gap for walk-ins until 11:00” or “a 120-minute service needs a 150-minute runway.” The week grid on the owner's laptop and the day rail on the customer's phone render from the same compiled truth, which is why “it looked free when I booked” cannot happen. Overlaps are impossible by construction, and a booking that would starve the queue warns before it commits.

Multi-chair shops get capacity as a number with rules attached: four stylists, two chairs in color, a dryer that one person shares — the engine refuses bookings the room can physically do but the equipment cannot. This is boring work, and boring work is why our salon pilots keep their calendars without a spreadsheet appendix.

Confirmations that ask, and deposits that answer

The reminder loop is the no-show weapon and it is written like a person: “See you tomorrow 10 AM with Blush & Blade — reply C to confirm, R to reschedule.” Confirm counts tick on the business-home card in real time, non-repliers escalate to a call queue, and reschedules re-solve the calendar instead of leaving a hole. The language is a template the owner can edit, but the reply protocol is the product — an appointment with an unconfirmed attendee is a rumor.

For the slots that genuinely hurt — bridal, Saturday prime, the 6-top table — a deposit per category, payable via bKash or Nagad, converts the rumor into a contract: refunded the moment the customer checks in on time, applied on a late cancel per policy, auto-waived for regulars whose history earned trust. The deposit rule is the owner's dial, not ours; the software's job is to make honouring it automatic and auditable, refund trails included.

The walk-in is a citizen, not an error case

Foreign booking software treats walk-ins as noise; half this country refuses to book anything days ahead. Dokti hands the front desk a token board — issue Q-16 with one tap, the guest's phone glows with a QR and honest minutes, and the chair timer counts down from what the queue actually implies, not what the receptionist wishes. “First in line for Chair 2” is computed from committed bookings and their summed durations; when the math says it would lie, the board says “+15 min from schedule drift” and owns it.

The guest can leave the queue from the tea stall and keep their place for re-entry by rule, the desk can bump a no-show's reservation into the queue head, and every queue state renders on both screens because a queue the customer cannot see is a queue that gets argued with.

One design system, proven on two devices

The renders on this page are MacBook and iPhone side by side for a reason: they show the same components, same numbers and same states on both surfaces — web built in Next.js, mobile as a Flutter companion, both generated from one token set and one state machine. Responsive, in our sense, is not a layout trick; it is an agreement between devices about what is true. Where the surfaces intentionally differ — the kanban living on the desk, the ticket living on the phone — the caption says so rather than hiding it in a mockup.

This is also how we work for the rest of the portfolio, and it is the standard we ask owners to hold any vendor to, including us: open the same booking on laptop and phone, in daylight and at 2 a.m., and ask which one is lying.

Public record

Blueprint status
In-house flagship — runs the studio's own appointment operations; pilot businesses are the offer, not a past case
Built for
Salons, studios, private clinics, restaurant tables, rentals — anything where a human's hour is the product
Money & manners
bKash/Nagad deposits per booking, reply-C confirmations, walk-in tokens with QR, no-deposit tiers for regulars
Deploy shape
One venue live in 3 weeks, a small chain in 6 — the same interface ships on web and Flutter mobile from one design system

Under the hood — what each box took to build

Craft, per feature

  • Compiled availability, per staff

    Schedules, durations, buffers and equipment limits compile into bookable slots; overlaps are unrepresentable, and “hold for walk-ins” makes idle gaps a policy instead of luck.

  • Reply-protocol reminders

    Editable SMS text with C/R semantics, live confirm counts, escalation to call queues for silence, and reschedules that re-solve the calendar instead of orphaning a slot.

  • Deposits with dignity

    Per-category bKash/Nagad deposits, refund-on-time-checkin automation, applied-on-cancel rules and regular tiers with auto-waivers — the money loop as a policy file, not a negotiation.

  • Walk-in tokens & drift-honest timers

    QR tickets from the desk board, minutes computed from summed durations, and schedule drift surfaced instead of hidden — a queue the customer trusts is a queue that does not turn into an argument.

  • Two-surface design system

    One token set drives Next.js web and the Flutter companion; the same-state guarantee is enforced in CI with paired snapshot tests, so device disagreement becomes a build failure before a customer complaint.

  • The business-home pulse

    Today's capacity, next appointment with deposit status, reminders in flight and no-show rate as one scannable card set — the owner sees the day's health in the time it takes the kettle to boil.

Commissioning this shape of product

The plan, as we would propose it

  1. Chair auditWk 1

    Watch one real Saturday: which slot died, which reminder was sent by hand, which walk-in left thirsty. Services, staff buffers and deposit policy get encoded from what was seen, plus the venue's own no-show count as the baseline.

  2. Bookable & confirmingWk 2–3

    Calendar compiled, customer-facing booking page live in both themes, reply-C reminder loops running on the venue's SMS sender — the no-show baseline starts moving before any money feature ships.

  3. Deposits & queuesWk 3–5

    bKash/Nagad deposit flows with refund automation, walk-in token board and guest QR tickets — launched against the venue's quietest day first, because boring is the correct first impression.

  4. Chain & handoverWk 5–6

    Multi-branch capacity rules, staff onboarding inside the real tool (no training-mode theater), and the owner leaves with edit rights on every template, rule and deposit dial — plus the export drill performed once, in front of them.

What a client actually wins

  • No-shows priced into irrelevance

    Reply-confirm loops, escalation queues and deposit rules convert the 12–18% phantom occupancy into a tracked, defended number — the salon's own baseline moves, measured in their booking log from day one.

  • The calendar stops being a suggestion

    Compiled availability makes double-books and starved equipment physically impossible, and idle gaps become policy (walk-in holds, training blocks) — the owner stops being the human conflict-resolution layer between slots.

  • Walk-ins treated like customers, not clutter

    Tokens, honest minutes and tea-stall visibility keep the half the market that will not pre-book inside the system instead of outside it — which is also where the review pipeline quietly starts.

  • One truth across laptop and phone

    The design-system guarantee, enforced in CI, means the customer's phone and the desk's screen never disagree about a slot — the cheapest trust a booking business can buy, because every other brand promise is cheaper to break.

What is not true (yet)

  • Blueprint truth again, plainly: Dokti runs the studio's own appointment operations and pilot businesses are the offer — there is no salon's revenue graph to paste here, and the first ones to trust us should know they are getting a priced pilot, not a decorated past.
  • It books time, not labour economics: payroll, commission splits and staff incentives stay in the venue's accounting software; we surface hours-worked exports, but a salon that wants its partner-pay automated should buy a payroll tool, not argue with us.
  • SMS is the spine and carriers are the weather: reply-C depends on networks that occasionally eat messages, so confirmations fall back to call queues rather than trust the rail — the loop is resilient, not magic, and the logs show which is which.
  • Deposits change the vibe if mis-tuned: a ৳2,000 deposit on a ৳800 haircut converts no-shows into no-customers — the dial is deliberately the owner's, the default is conservative, and the first month's confirmation data exists precisely so they tune it with evidence.

Testimonial slot — reserved, not invented

The listing has no review wall to quote yet — so there is no quote here. Real, credited words move into this card as players leave them.

Sponsored placement — reserved, disclosure first

Placements & partners

This is where a genuinely used tool or partner link would live — hosting, device labs, our travel products. It ships empty and labelled on purpose: when a sponsored link arrives, it arrives wearing this disclosure, never dressed up as editorial.

Answers where they belong

Questions this project answers

Want Dokti-class engineering for your idea?

One brief in, the composer arrives with your platforms pre-ticked — Android, iOS, web, admin.

Which businesses is Dokti actually for?

Any venue where a human's hour is the product: salons and barbers, photo and dance studios, private clinics' appointment wings, restaurant tables, rental counters, tutors. If your worst day is an empty slot that could not be refilled, it fits; if you sell shipping goods, it does not.

Do customers need to install anything?

No — booking and reminders run entirely in SMS and the web page. The Flutter companion app is opt-in, and it exists for the queue ticket and calendar card; the tea-stall customer with a 400-taka phone and no data gets the full experience anyway.

Why the MacBook-and-iPhone renders?

Because “responsive” is a promise we want evidence for: the two devices on this page run the same design tokens over the same state machine, verified in CI until they agree. It is the test we would run on any vendor, so we ran it on ourselves and put the proof on the front page.

What happens when the owner's rules and the software disagree?

The rules file is the product: buffers, deposit dials, confirmation windows, regular tiers — all editable by the owner without a ticket, and the compiler recompiles availability live. When a rule would create a physically impossible day, the tool refuses with a sentence that explains itself, because silent override is how booking tools die.

Can a chain of branches share one calendar truth?

Yes — capacity and policies are per-branch, customers book across branches with a shared login and history, and the owner console rolls up no-show and deposit metrics per venue. The six-week plan includes a second branch in week five precisely because a pilot that has never been cloned is an anecdote.

What does it cost, and what does it not?

A flat licence per venue and the deployment weeks — no per-booking commission, ever, because taxing a booked Tuesday is taxing the exact behaviour we are trying to create. SMS volume is at carrier cost passed through with the logs, and the export contract means leaving is a file operation, not a negotiation.

Begin the ascent

Everything on this page is checkable.

Store listing, code craft, and the way we scope — click through and verify, then send us the brief.