Case study / 02

Yoga studio business platform

Yoga Fusion

Open public site

A Kyiv studio runs through one bilingual platform: recurring payments, a daily-use admin, native apps and a subscription-aware Telegram bot.

RoleProduct, backend, admin, mobile, bot and marketing operations
TimeframeLive client platform · daily use
  • Next.js 16
  • Strapi 5
  • PostgreSQL
  • WayForPay
  • Kotlin
  • SwiftUI
  • Telegram
  • Resend

Business result

What changed.

  1. 01Before

    Payments, the schedule, clients and reception work were split between a raw CMS, SendPulse and an abandoned Notion workspace.

  2. 02Built

    One bilingual platform: the public site, recurring payments, a seventeen-screen admin, native Android and iOS apps, and a Telegram access bot.

  3. 03Now

    Reception works in the admin every day, payments reconcile nightly, and the apps and bot follow the same booking and subscription rules.

The system

Software fitted to the studio’s real habits.

The public site, seventeen-screen admin, two native apps and Telegram bot share payment and access rules instead of reproducing them in separate tools.

01

Client product

  • Bilingual storefront, recurring subscriptions, client cabinet and QR gift certificates.
  • Offline-first Android and iOS schedules, booking and geolocation QR check-in.
  • A 21-branch practice path that grows from confirmed visits.
02

Daily operations

  • Seventeen custom admin screens with three roles, nineteen permissions and a two-phase audit log.
  • Cash ledger, finance reconciliation, owner reports and a Telegram-text schedule importer.
  • Ukrainian-first interface with user-selected paper and stained-glass themes.
03

Integrity & growth

  • Nightly reconciliation of every subscription against the payment provider.
  • Payment-gated Telegram access with delayed, idempotent reconciliation rather than fragile event chains.
  • Server-side Meta conversions, typed PostHog events and one branded email system.

Production workflows

The studio’s real habits, connected end to end.

These flows show why the website, staff admin, native apps and bots are one platform rather than four adjacent products.

01Telegram text → published scheduleThe team keeps its familiar input without sacrificing structured data.
  1. Reception pastes the weekly message it already writes for Telegram.
  2. The tolerant parser identifies classes and flags ambiguous teachers or broken lines for review.
  3. A confirmed schedule reaches the website plus offline-first Android and iOS clients.
02Payment → correct accessAccess follows reconciled subscription truth, not a fragile redirect.
  1. A recurring payment updates the shared subscription state through an idempotent route.
  2. Nightly reconciliation checks that state against the payment provider and records anomalies.
  3. Web, mobile booking and the Telegram bot read the corrected result.
03Studio action → measurable growthMarketing events stay attached to the actual customer lifecycle.
  1. Staff assembles a branded campaign from reusable content blocks and audience rules.
  2. Email delivery and server-side Meta conversions use the same subscription context.
  3. Typed PostHog events make the journey inspectable without inventing a second customer model.

Real product

The Android and iOS products, not a browser mockup.

These are current screens from the two native app builds, using public schedule content and no client account data. The safe tour below connects them back to reception and payments.

Open public site
Yoga Fusion Android schedule screen
Yoga Fusion iOS schedule screen
Captured from the native app buildsSafe tour: reception, schedule import, broadcasts and member access

Interactive previews

See one platform from reception desk to member phone.

These connected flows mirror how the team imports a schedule, composes a campaign and grants a paying member access. Private business counts and money values remain illustrative.

Y1

Today dashboard

Inspect the day’s classes and switch the whole admin between warm paper and dark stained glass.

This view follows the important part of the screen. Open 1:1 for the full product surface.

Illustrative counts · authentic UI tokensReception runs this panel daily — built in the team’s own language, with roles, an audit log and 1,241 tests behind it.

Public engineering numbers

A business platform, not a stack of disconnected apps.

The number that matters here is coverage: how much of the studio’s day runs through these screens, and how much of it is held in place by tests.

passing frontend tests
1,241
Plus Android and backend test suites
admin screens / roles / permissions
17 / 3 / 19
The screens reception uses daily
API routes
98
Including admin and mobile BFF
content types / Vercel projects
31 / 3
One repository
native apps
2 + bot
Kotlin, SwiftUI and Telegram

What this proves

The best internal tool follows the work already happening.

01

Admin software staff can own

Roles, Ukrainian microcopy and parse-then-confirm flows turn technical safeguards into ordinary daily work.

02

Payments treated as a state machine

Reconciliation and idempotency protect access when redirects, webhooks or external providers behave imperfectly.

03

Marketing that shares product truth

Campaigns, server-side conversions and Telegram access read the same subscription reality.