Mobile App Development for Online Schools
A mobile app for an online school is not just a WebView wrapper around a website. Once you add offline course access, adaptive bitrate streaming, and cross-device student progress sync, the complexity reaches the level of a full-fledged edtech product. We have been developing such applications for over 7 years—delivering 15+ edtech projects from MVP to platforms with DRM and gamification. Our stack: Flutter 3.x, Swift 5.9, Kotlin, Cloudflare Stream, Firebase. Contact us for a free architecture assessment within 24 hours.
Why Video Without DRM Is a Business Risk
Educational video in an online school is not a YouTube embed. You need DRM protection against downloading: on iOS—FairPlay Streaming, on Android—Widevine. The Flutter package better_player supports both via DRM configs, but setting up a license server (KSM for FairPlay or Widevine License Server) is a separate infrastructure task. Adaptive streaming: HLS for iOS, DASH for Android, transcoding via AWS Elemental MediaConvert or Cloudflare Stream. Offline viewing: encrypted download via flutter_downloader + AES-256 keys tied to deviceId—so downloaded content does not work on another device. A typical mistake: using the video_player package without DRM. App Store won't reject it, but the first screen recording script will capture all your content. On one project with over 500 hours of video, moving to DRM and adaptive streaming cut CDN costs by $18,000 per year.
Comparison of DRM solutions:
| Parameter | FairPlay (iOS) | Widevine (Android) |
|---|---|---|
| Support | iOS 8+ | Android 4.4+ |
| Integration complexity | Medium | High |
| Licensing | Included in Apple Developer | Separate Google license |
How to Sync Student Progress Across Devices
Lesson progress is not just "watched: true". Granularity is needed: percentage viewed (user reached 73%), last position for resume, test results. We store locally in Hive or drift (SQLite), sync with the server upon network restoration—offline-first pattern with connectivity_plus and an event queue. For a client with over 1,000 video lessons and 10,000 students, our implementation reduced sync delays from 8 seconds to under 1 second compared to typical SQFlite solutions. Gamification (points, badges, streaks) increases MAU by 30% on average. Implementation: a server-side gamification-service with event bus; the client subscribes to achievement_unlocked events via WebSocket or Firebase Cloud Firestore snapshots(). Award animations use Lottie files via the lottie Flutter package. Adaptive learning uses rule-based or ML on the backend; the client only displays recommendations.
Application Architecture
Clean Architecture is mandatory at this complexity:
lib/ core/ # DI (GetIt), Network (Dio), Storage (Hive) features/ courses/ # domain / data / presentation player/ # domain / data / presentation profile/ # domain / data / presentation auth/ # JWT + refresh token rotation State management: BLoC (flutter_bloc 8.x)—predictable, testable, scales well with a team of 3+ developers. Navigation: go_router with deep linking (open a specific lesson from a link in an email campaign). Integrations:
| Feature | Tool |
|---|---|
| Video streaming | Cloudflare Stream / AWS MediaConvert |
| DRM | FairPlay + Widevine |
| Push notifications | Firebase Cloud Messaging |
| Progress analytics | Amplitude / Mixpanel |
| Payments | Stripe / YooKassa |
| Live webinars | Agora / Zoom SDK |
| Certificates | PDF generation on server, share via share_plus |
For one client with 100,000 users, moving to this stack saved $20,000 annually on infrastructure.
Publishing and ASO
Online school apps undergo App Store review under guideline 3.1.1—if you sell courses inside the app, Apple requires In-App Purchase. A workaround—"digital services consumed outside the app"—works but requires careful metadata description. Google Play is more lenient but also restricts external payment links for certain categories.
Process and Timeline
Stages: content model audit → data schema design → UI/UX Figma → development → QA → beta test with real students → publication → support.
MVP (courses, video without DRM, tests, progress): 12–16 weeks. Full platform with DRM, offline, gamification, webinars: 24–32 weeks. Cost is calculated individually after analyzing the content model and scalability requirements.
What Is Included
Details
- API documentation and architecture diagram
- Code review and testing (unit, widget, integration)
- Access to a private repository
- Guide for publishing to App Store and Google Play
- 3 months of post-launch support (bug fixes, help with updates)
- Training of the client's team on using the admin panel
What Is Often Underestimated
Supporting different roles (student / teacher / administrator / tutor) requires RBAC at the API level—not "role check via if-else on the client". Client code can always be reverse-engineered. Every endpoint must verify permissions independently of what the UI shows.
Contact us for a project assessment—get a free architecture consultation. We also offer an audit of an existing app with a bottleneck report within 5 days.







