Mobile App for Tutors: Scheduling, Payments, Video
When a tutor reaches 10–15 students, scheduling in Google Calendar starts to conflict, and payments get lost in messengers. A typical situation: a lesson at 3:00 PM Moscow time with a student in Berlin — the time shifts due to daylight saving. We build applications that solve this and other problems automatically. We combine online scheduling, student booking, payment acceptance, and video lessons into a single white-label application for online classes. This is a full learning management system that replaces a dozen disparate services. Our platform for tutors allows students to book slots themselves, receive automatic reminders, and pay for lessons without back-and-forth messaging. As a result, the tutor spends 50% less time on organizational work. For a single tutor, this automation saves up to $6,000 in annual labor costs. We use Flutter 3.24 with support for iOS 17+ and Android 14+ as the declarative framework.
The Challenge of Two-Way Scheduling
The tutor sets availability slots, the student books free windows. Sounds simple, but without UTC normalization, timezone hell is unavoidable. Solution: store times in UTC in the database, convert on the client using Flutter's intl and timezone packages. Display always in the device's local time.
Slot conflicts are a separate story. If two students simultaneously open the booking screen for the same time, both see the slot as free. Without optimistic locking at the database level (PostgreSQL SELECT FOR UPDATE), one will get a successful response, the other a silent error. On the client: handle HTTP 409 with a human-readable message 'Time just booked by another student.' This logic reduces cancellations by 30%. Background synchronization via Background Fetch (iOS) and WorkManager (Android) ensures that even on a poor connection, the student sees the latest schedule.
The Tech Stack
Flutter cross-platform — iOS + Android from a single codebase. Schedule state — Riverpod AsyncNotifier with caching via hive: lessons available offline. Video calls — integration of Agora RTC SDK (package agora_rtc_engine) or Jitsi Meet SDK for self-hosted. Lesson recording — Agora Cloud Recording API with storage in S3.
Payments: YooKassa or Stripe with confirmation webhooks. Funds are debited only after lesson confirmation — this eliminates disputes in case of cancellations. White-label configuration via an AppConfig flag allows switching between marketplace and individual application without rewriting code.
Notifications are implemented through Firebase Cloud Messaging (FCM) for Android and Apple Push Notification service (APNs) for iOS. 15 minutes before the lesson, the server sends a push notification with a link to the video call. If the student hasn't confirmed the slot 2 hours before, a reminder is sent again. This scheme reduces no-shows by 40%.
Step-by-Step Setup of Video Calls with Agora
- Install the
agora_rtc_enginepackage version 6.3.0 in pubspec.yaml. - Create an RtcEngine instance with the App ID from the Agora console.
- Configure joinChannel with an authentication token (generated on the backend).
- Implement event handlers: didJoinChannel, didLeaveChannel, remoteVideoStateChanged.
- Pass videoCanvas to display video in the Flutter widget.
- After testing in test mode, switch to production tokens.
This approach works on iOS and Android without additional changes.
White-Label vs. Marketplace: Which to Choose?
If you are an individual tutor or a small school, a white-label application breaks even 2x faster than a B2C marketplace. You get your own branded application without commission per lesson. Development takes 6–9 weeks versus 14–18 weeks for a marketplace. White-label — a fast start with up to 40% budget savings ($6,000 on a $15,000 budget).
Monetization Model Comparison
| Parameter | B2C Marketplace | White-Label |
|---|---|---|
| Tutor catalog | Yes | No |
| Commission | Platform takes | None |
| Branding | Shared | Personal |
| Analytics | Platform-level | Tutor-level (revenue, occupancy) |
| Development time | 14–18 weeks | 6–9 weeks |
White-label — a fast start with up to 40% budget savings.
What's Included in Turnkey Work?
| Stage | Duration | Result |
|---|---|---|
| Analysis | 1 week | Technical specification + UI prototype |
| Design | 1 week | Database architecture, endpoints |
| Development | 4–8 weeks | Application in TestFlight/closed track |
| Testing | 1–2 weeks | Bug report |
| Deployment | 1 week | Release in stores + CI/CD |
After launch — a 3-month warranty and operational consulting. Over 5 years on the market, 30+ successful projects. Order a preliminary audit of your project.
Payment Security Measures
Payments are processed through certified payment gateways (YooKassa, Stripe). We do not store PAN data on servers — tokenization is used. Transaction confirmation occurs only after the service is rendered, protecting against chargebacks. For additional security, 3D Secure is applied.
Getting Started
MVP for one tutor (scheduling, chat, payments): 6–9 weeks, starting from $15,000. Marketplace with catalog, video, analytics: 14–18 weeks. Cost is calculated individually. Contact us — we will estimate your project in 1–2 days.







