Skip to content

Allow this site to count your visits with Yandex Metrica? Metrica will store cookies in your browser to do this. How the site uses cookies

VC
I've worked out this solution step by step, but I haven't built an app like this for a client yet. So the timeline, cost and figures below are an estimate for a typical online school.
Blueprint 10 of 11 · Ready-made solution · Mobile development

An app for an online school that reminds students about lessons and helps them practise pronunciation

A student at an online school misses a lesson because they forgot about it, and after that, coming back feels awkward. An iPhone app reminds them about every class, lets them practise pronunciation in any spare minute and shows their progress. By my estimate, the first version on SwiftUI and Firebase, with in-app payments, can go live in the App Store in about 9 weeks.

For
Online schools with live lessons
Technology
Swift · SwiftUI · Firebase · StoreKit 2
Estimated timeline
About 9 weeks
Cost
from 1,200,000 ₽
01 · Problem

The schedule sits in a spreadsheet, and nobody reminds the student about the lesson

For the estimate, take an online English school with 4,800 active students. It runs on the usual setup for online courses: a website and student account on Tilda, lessons with teachers in Zoom, schedules and progress in Google Sheets. Before every lesson, a student has to open the site and look for where today's class is.

What would help a student: reminders a day, an hour and 10 minutes before class; homework and pronunciation practice they can open in any spare minute; and visible progress on CEFR, the international scale of language levels.

Without these, students drift away. They miss the first lesson because they forgot, the second because coming back feels awkward, and by the third they quit altogether. The school then has to replace every student who leaves with a new one from advertising.

02 · How it works

An iPhone app with reminders, a pronunciation trainer and payments

The first version has three main features: a lesson schedule with reminders, a pronunciation trainer that runs right on the phone, and progress on the CEFR scale. The backend runs on Firebase, Google's ready-made cloud service for sign-in, data and notifications.

01
SwiftUI interface

Schedule, lesson, trainer, progress, account: about 12 screens

02
Reminders

The phone itself reminds the student a day, an hour and 10 minutes before class. Firebase Cloud Messaging reports a moved or cancelled lesson

03
Speech Framework

Speech recognition built into the iPhone checks pronunciation right on the phone

04
StoreKit 2 + YooKassa

The trainer subscription is an in-app purchase through the App Store. One-on-one live lessons are paid through YooKassa

05
Firebase backend

Sign-in, a schedule database and storage for lesson materials

A SwiftUI interface

SwiftUI is Apple's modern framework for building iOS interfaces. With it, a school's typical screens come together quickly and take little code. The app runs on iOS 17 and later, so it can use @Observable, Inspector and the new scrolling features right away, with no workarounds for older system versions.

Speech is recognized right on the phone

The pronunciation trainer is the heart of the app. It is built on Speech Framework, Apple's built-in speech recognition, which has been able to run on the device itself since iOS 13. The student says a phrase, and the phone recognizes it and checks it against the model phrase. The audio never leaves the phone, the result comes back at once, and the school pays nothing for processing: each trainer session costs 0 ₽.

Two ways to pay: StoreKit 2 and YooKassa

If the app itself sells the trainer subscription and materials, the App Store rules require an in-app purchase through StoreKit 2, and Apple takes a commission on each one. Group lessons sold in the app fall under the same requirement. One-on-one live lessons with a teacher may be paid for by other means, so for those the app offers payment through YooKassa or another payment provider.

Why the first version runs on Firebase

Firebase means no custom server at the start and, by my estimate, saves about 4 weeks. The migration plan is written down in advance: the Firestore database structure is designed to move to PostgreSQL, and data access sits in a separate layer of code. Once the school outgrows Firebase, the move should take about 3–4 weeks. If local law requires student data to stay in the country, the backend goes on a local server from day one, which adds about 4 weeks.

I prepare the App Store submission with a checklist

Before submitting, I check everything App Review looks at: a clear description of the features, a demo account with a filled-in schedule for the reviewer, a privacy policy, account deletion right inside the app, and the permissions for the microphone, speech recognition and notifications. According to Apple, on average 90% of submissions are reviewed in less than 24 hours.

03 · Technology

Apple's own tools and Firebase

Swift

Apple's language for apps. Macros, added in version 5.9, cut repetitive code

SwiftUI (iOS 17+)

The basis of the interface: @Observable, Inspector, new scrolling features

Speech Framework

Speech recognition on the phone: checks whether the student's phrase matches the model

StoreKit 2

In-app purchases through the App Store, plus notifications from Apple's servers about payment status

YooKassa SDK

Payment for one-on-one live lessons; YooKassa is a Russian payment service

Firebase Auth/Firestore

Backend for the first version: sign-in, schedules and materials

Firebase Cloud Messaging

Notifications from the server when a lesson is moved or cancelled

SwiftSwiftUIiOS 17+Speech FrameworkStoreKit 2YooKassaFirebase

I learned Swift and SwiftUI at App Brewery and have built more than 20 apps with them, both training projects and my own. I tell the story on the About page.

04 · Estimate

How long the first version takes and what it costs

The estimate is for the same school: about 12 screens, a pronunciation trainer, two ways to pay and a Firebase backend.

Timeline
About 9 weeks

from the start of work to release in the App Store. With a local server from day one, about 4 weeks longer

Cost
from 1,200,000 ₽

the exact amount depends on the number of screens and payment options

Where to start
Audit

for 5,000 ₽: I'll look at how the school handles schedules and payments today and recalculate the timeline and budget

Development prices are on the Pricing page.

What each student who leaves costs the school

How many students the app keeps will only show after launch. In a school with 4,800 active students, one percentage point of retention is 48 students who are still studying a month later.

Multiply that by what the school spends to bring in one new student, and you get the value of each percentage point. That figure is a handy yardstick for the cost of the app.

05 · Where else it fits

Where else an app like this is useful

The general pattern: a first version on SwiftUI, a ready-made backend and a migration plan written in advance. It suits consumer products that already have an active audience and need to be on people's phones:

  • → Online schools for any subject: programming, math, languages, music
  • → Fitness clubs and yoga studios: workout schedules, reminders, progress
  • → Paid subscription services: media, audio, courses
  • → Web services: a mobile app for something that already works in the browser
  • → Clubs and communities: associations, loyalty programs, classes on a schedule
What carries over to other apps
  • A SwiftUI base for a first version: navigation, styling, accessibility, basic components
  • A separate data layer, with a ready plan to move to a custom server
  • Two payment paths that follow the App Store rules: in-app purchases, and outside payment for one-on-one live lessons
  • A checklist for the App Store submission
Ready to start?

Start with the 5,000 ₽ audit: a written report and a payback estimate

I'll tell you what to automate first, when it will pay for itself and whether your task needs AI at all. Sometimes it doesn't.

Or just ask a question. During business hours I reply within 2 hours