MAVE Booking Web App
Choose a treatment. Hold a slot. Pay a deposit.
Book in the browser: choose a studio, treatment, and available time, then secure the appointment with a deposit.
Live booking at booking.mavebeauty.co.id
Choose a studio01 / 04Choose a screen to see the product’s features and main flow.

Choose a studio
Both studio choices include their current operating policy.
Live MAVE Booking v2.12.0
- The problem
- Treatment duration, studio availability, and deposits must line up before an appointment.
- What I built
- A browser booking app with treatment choices, slot holds, and Xendit deposits.
- What it enables
- Customers see the treatment price and deposit before choosing an available appointment.
- Live v2.12.0 studio & treatment flow
- Treatment duration, price & deposit
- Availability, slot hold & Xendit
Designed and built by Alexanders Schwartzmann · start to finish
- Browser booking UX
- Availability & booking backend
- Deposit & Xendit integration
- Appointment and account data
I can build one around how your business works.
I designed and built this project from start to finish.
Alexanders Schwartzmann
From the product idea and design to the code behind the features below.
- Browser booking UX
- Availability & booking backend
- Deposit & Xendit integration
- Appointment and account data
How the main flow works
- 01
Studio, treatment & duration
- 02
Availability rules & calendar
- 03
Pending appointment hold
- 04
Deposit confirmation from Xendit
Proof of the work
What was built, how it works, and why it was built that way.
Scheduling follows treatment duration
Availability and booking creation account for treatment duration, operating hours, existing bookings, and treatment blocks.
A time slot is checked against operational rules, rather than treated as an unrestricted calendar selection.
Deposits have a server confirmation path
The payment callback checks its token and processes payment status through the booking backend.
Returning from a payment page alone is not the payment confirmation; the backend handles the callback.
Screens from the live booking site, version 2.12.0. They stop before a slot is held or a deposit is paid.
Live MAVE Booking v2.12.0 ·
The problem
Booking must make the studio, treatment, time, customer details, and deposit easy to understand while protecting appointment availability.
Feature highlights
- Live v2.12.0 studio & treatment flow
- Treatment duration, price & deposit
- Availability, slot hold & Xendit
Current implementation
The live v2.12.0 flow has five steps. Both Gading Serpong and Jakarta Barat are selectable with their operating policies. Sulam, lashes, and nails have different deposit terms; specific treatments show duration, price, and DP. Next.js, Drizzle, Turso, and Xendit support customer identity, availability, transactional slot holds, and deposits.
Explore the real product
These frames come from the active v2.12.0 website. They stop at calendar inspection; no appointment was held and no deposit was paid. The linked native apps are available through the product’s current App Store and Google Play links.
Masalahnya
Booking harus memperjelas studio, treatment, waktu, data pelanggan, dan DP sambil menjaga ketersediaan appointment.
Fitur pilihan
- Alur studio & treatment live v2.12.0
- Durasi, harga & DP treatment
- Ketersediaan, slot hold & Xendit
Implementasi sekarang
Alur live v2.12.0 memiliki lima langkah. Gading Serpong dan Jakarta Barat dapat dipilih dengan kebijakan operasional masing-masing. Sulam, lashes, dan nails memiliki DP berbeda; treatment spesifik menampilkan durasi, harga, dan DP. Next.js, Drizzle, Turso, dan Xendit mendukung identitas pelanggan, ketersediaan, slot hold transaksional, dan deposit.
Jelajahi produk asli
Frame berasal dari website aktif v2.12.0. Alur berhenti pada pemeriksaan kalender; tidak ada appointment yang ditahan atau DP yang dibayar. Aplikasi native dapat diakses melalui tautan App Store dan Google Play produk sekarang.

