Zinkly
Book 1:1 music lessons with pro musicians — pay, schedule, and meet over Zoom.
- Flutter
- Dart
- GetX
- Dio
- Firebase Auth
- Google Sign-In
- Sign in with Apple
- Stripe Connect
- flutter_stripe
- Socket.IO
- Zoom Meeting SDK
- Node.js
- MongoDB Atlas
- WebView
- Lottie
- fl_chart
- Xcode / Android Studio
- CocoaPods / Gradle
The Challenge
Independent music teachers had no purpose-built way to sell one-on-one lessons online — they were stitching together Calendly, Stripe, and Zoom manually, with no shared booking record, no automatic refunds on failure, and no e-receipts for students.
The Approach
Built a Flutter app with two role-specific experiences (student & musician) on a shared backend. Students pick a slot from a per-day availability grid, pay via Stripe Payment Sheet, and receive a Zoom join link plus a modern e-receipt. Musicians set availability, accept/reject pending bookings, and watch earnings land in their Stripe Connect account. Payments use destination charges (platform fee retained, remainder routed to the artist), with orphan-rollback so a failed Stripe call never leaves a half-created booking. Deep links, profanity filtering, offline gating, and skeleton loaders polish the edges.
The Result
Turned a fragmented 3-tool workflow into a single tap-to-book experience. Musicians get paid faster (instant transfer to connected accounts), students get a clean e-receipt and Zoom link immediately, and the platform has full visibility into every booking, payment, and dispute through the unified backend.
Key Results
Two-sided marketplace: separate user & musician role flows in a single app
Stripe Connect destination charges with orphan-rollback safety on payment failures
Auto-provisioned Zoom meetings — host/join URLs delivered at booking time
App Screenshots
1 / 6
