Custom online school platform or ready-made SaaS: what to choose and what it costs

Who needs a custom platform for online lessons — and why
Building your own online lesson platform starts around 1.5M RUB and three months. A SaaS subscription starts around 3,000 RUB per month, with signup in about two weeks — and you can teach immediately. The choice looks obvious. A year or two later it often flips: fees climb, students hit someone else’s UI, and teachers cannot run the lesson format they need. The “free plan” ends up costing more than a product you own.
WAPP builds EdTech products for companies of different sizes and sees both sides of this choice. On the EdTech solutions page we show projects from one-to-one music lessons to university platforms. That experience gives a clear language for when boxed tools are enough — and when they become a brake.
Three scenarios — three different answers
There is no universal answer. There are clear criteria that help you choose quickly.
Scenario one — a teacher at the start. An English tutor with 30 students. They need a portal, a schedule, homework, chat, and video. A course builder on GetCourse, Antitrainingi, or similar covers that. Custom development is a waste here: the student base is small, the learning flow is standard, and materials — video, text, files — fit templates. You can try free plans and work for a year or two without hard limits.
Scenario two — a school that has grown. 500 students, several courses, groups at different levels. SaaS pricing starts to bite. Commission on every payment, no way to build interactive tasks with your own logic, weak access to student data for analytics, someone else’s site instead of your brand. The school invents workarounds and loses contacts on every platform update. Here you should run the numbers: sometimes a year of extra SaaS cost exceeds the first stage of a custom system.
Scenario three — a large school or training centre. 2,000+ students, webinars, lesson recording, payments, CRM, a mobile app, teacher–student chat, a branching curriculum. Boxed products can still run — but every new feature is a crutch. A custom online lesson platform pays off because you own the data, remove product limits, and shape the product around the business instead of the other way around.
Who this article is for
Below is concrete detail for each scenario: what development costs, what drives the price, how to run live lessons without call dropouts, and why video is a separate hard problem. If you want learning that scales without overpaying — we walk through teaching online on your own stack or on SaaS, and when the first option wins.
When GetCourse and similar SaaS are enough
Honestly: if a teacher has 30–80 students and one or two courses, debating frameworks and databases is a waste of time. SaaS is faster and cheaper. Here are situations where custom build is not needed at all.
Teacher at the start: speed beats perfection
An English tutor used to teach on Zoom and now wants a recorded course with paid access. Dozens of students, modest revenue. The first impulse — “our own platform so it looks serious.” Don’t.
GetCourse, Antitrainingi, Stepik, Teachable — any of these let you assemble a student portal in two or three days, upload video, attach files, set homework, and take payments. A lesson builder walks you through each step. Signup is enough to start the same day.
Plans start around 3,000–5,000 RUB per month. That includes chat, quizzes, webinar recording, and a contact base. Some products offer a free tier or a 14-day trial. On Stepik you can publish a course for free and grow the first cohort.
36,000–60,000 RUB a year for SaaS versus at least 1.5M RUB and three months to build. The arithmetic is clear.
Standard learning format — standard platform
A school that runs recorded lessons, homework review, teacher feedback, occasional webinars. Under a hundred students. Content is video, text, decks, quizzes. No custom simulations, branching programmes, or deep analytics.
For that, SaaS fits. GetCourse covers sales funnel and lesson delivery in one product. Antitrainingi keeps course creation simple. Teachable works for English-speaking audiences. Any of these can last years — until the school hits limits that hurt.
If you teach under a hundred people online, custom build is a distraction. Time spent on specs and developer cycles is better spent on new lessons and acquiring students. At the start the product is the education outcome, not the platform.
When student count passes a hundred and non-standard flows appear — then a custom platform becomes a real conversation.
What really limits you on ready-made platforms
The first limit growing schools hit is money — but do not confuse acquiring fees with a platform markup. Get Module (GetCourse Pay) commission is payment processing: as of a 2026 snapshot, about 3.5% for Russian cards, SBP and Pay services, and about 10% for foreign cards. Rates change, so check current terms before you model costs. That is acquiring inside the ecosystem, not GetCourse charging “on top of” acquiring.
The real scale trap is different. GetCourse pricing is based on the full accumulated contact base, not on active students. As of a 2026 snapshot, plans start around 4,400–5,900 RUB per month and climb to about 145,000 RUB on the top tiers — you keep paying for people who stopped learning long ago. Every funnel and ad campaign grows the base, and with it the monthly bill. Pricing policy can also shift: tiers rise, terms tighten, while students, materials and payment history stay locked inside the product.
Someone else’s domain, someone else’s brand
The school runs on a platform subdomain or a template site. Student portals look the same for every customer of that SaaS. You cannot build a memorable learning environment that stands for your brand. An app? Only if the vendor ships one — under their name.
Lesson logic and classroom mechanics
This is where builders break first. You want gamification: points for homework, group rankings, topics unlocked by progress. Ready-made LMS tools rarely support that. Stitching third-party tools is fragile.
Or you need interactive tasks with live checking — not multiple choice, but richer logic. Or personal paths where the next lesson depends on previous results. That is outside what course constructors can do.
Student data is locked
Webinars ran, videos uploaded, the base grew — but raw data access is limited. You get the reports the vendor designed. Contacts, material history, homework files sit on someone else’s servers. Privacy policy is theirs, not yours. If the service shuts down or changes terms, continuous learning is hard to keep. Export is usually a thin CSV.
When limits become critical
The line is not only student count — it is task complexity. If you need in-lesson support chat, non-linear materials, or your own mobile app, you either live with limits or build. The first path is cheaper for a few days; the second for a two-year horizon. That is when you ask what a custom distance-learning platform is made of — and what it costs.
What a custom online school platform is made of
A custom platform is not one monolith. It is a set of modules. You can assemble them gradually: first what you need to launch, then the rest.
Role portals
Each user type gets its own interface:
- Student portal — schedule, lesson access, homework, payment history. No extra buttons.
- Teacher portal — create lessons, upload materials, review work, give feedback. No finance screens.
- Admin portal — tariffs, registrations, analytics, payments.
- Curator portal — group progress and retention support.
Role split sounds simple; flexible setup on SaaS is almost impossible. Multi-branch schools need limited admins per branch. Example: the volleyball school platform with branches, where each site has its own curators and schedule.
Schedule and calendar
For live lessons, scheduling is critical. Students book slots, teachers confirm, the system sends reminders. One-to-one lessons need time zones. Group lessons need seat limits, waitlists, and auto-cancel when underfilled.
Content delivery
The core of any learning platform: video, text, quizzes, files, decks, homework. A lesson builder lets teachers assemble materials without engineers. Non-linear courses need knowledge checks built in. That is how the Glinka Digital music lesson platform works: interactive tasks, fast access to recordings, materials tuned per student.
Payments and subscriptions
Payments, tariffs, renewals, refunds. Acquiring is paid either way — on SaaS and on a custom platform. As of a 2026 snapshot, YuKassa’s base card rate starts around 2.8%, SBP around 0.4–0.7%; Get Module for Russian cards, SBP and Pay services is about 3.5%. A gap of roughly 0.7 pp does not pay for building a payments module by itself, and YuKassa can also be connected inside GetCourse. Acquirer rates change — re-check the numbers before you decide.
What a custom platform gives here is not “savings on a middleman fee”, but freedom to pick the acquirer and payment flows: instalments, subscriptions, SBP-first with a lower fee, your own refund rules and access statuses. The payments module exists so money follows the school’s logic, not a course-builder template.
Analytics and reports
Who finished the course? Where do people drop? Which teachers get the best scores? SaaS analytics is a handful of standard reports. A custom platform can cut any slice — down to days between signup and first payment.
You do not have to build everything at once
This is not a monolith. Start with portals, schedule, and content delivery; add chat, mobile, and advanced analytics months later. That cuts initial budget and time to launch — often 60–90 days instead of half a year.
Video for online lessons: why it is a separate hard problem
Among all modules, video is the trickiest. It looks like “drop in any call tool and send a link.” In practice, “run a meeting” and “run a lesson” are far apart.
Why a normal video chat fails for lessons
First enemy — audio quality. For a work call, 32 kbps is fine. Try a music lesson at that bitrate: noise suppression cuts overtones as “background noise.” The same happens in language lessons: intonation and fine phonetics disappear. When sound carries knowledge, that is critical.
Second enemy — latency. In chat, 300–500 ms is normal. In interactive lessons where a student must repeat a phrase or play a passage, half a second breaks the dialogue. People talk over each other and tire faster. In a class of 15–20, delays stack into chaos.
Group lessons are another headache
Stability follows the weakest link. One student on 3G, another on home Wi‑Fi, a third on a crowded coworking network. The system must adapt per participant: drop video resolution on a weak link while keeping usable audio. Zoom or Jitsi manage this only roughly — they do not know lesson logic or who needs priority: the speaker answering now or the person sharing a whiteboard.
On Glinka Digital for music lessons, video was the key challenge. The goal was not a call — it was hearing sound production nuance in real time. Standard codecs were not enough; audio was handled separately from video so sound stayed clean when the channel dipped.
Related load problems appeared on the Skoltech project: hundreds of students online, from broadcast lectures for 200 to small groups of 5–8 with feedback.
What to check when choosing
If you run live lessons — not only recorded video — treat video as a separate workstream early. Test latency, devices, and unstable networks. Free trials help, but the final choice follows the subject: homework-heavy courses care less about call quality; live voice interaction makes video the foundation.
What custom development costs and how long it takes
Cost depends on dozens of variables; anyone naming an exact figure before discovery is guessing. Orientations still help.
What drives the budget
First — number of roles. One student type and one teacher is simpler than admins, curators, methodologists, and groups with separate portals and rights. Each role means dozens of screens.
Second — feature set. Course builder, auto-graded homework, live schedule, chat, payments, webinar recording, boards, mobile — each is a module. More modules in v1 means longer timelines and higher budget.
Third — integrations. Payments, email, CRM, video, file storage. Each needs build, test, and support time.
A deeper cost breakdown for apps is in this article. It also explains why a native mobile app roughly doubles budget versus web-only.
MVP, full platform, and support
MVP is the smallest product that can teach the first students: portals for two roles, lesson access, simple content, basic tasks. An EdTech MVP often starts from 1.5M RUB and three months — exact scope depends on roles and modules.
A full platform with per-student analytics, flexible schedule, live video lessons, and multi-group tariffs is estimated after discovery.
A mobile app for iOS and Android is a separate line that adds time and money.
The mistake almost everyone makes
Schools fund the build, launch, celebrate — and three months later need UI updates, teacher tools, device-specific fixes, and OS adaptations. Support is a monthly line every year.
Without a support budget the platform ages in six to twelve months. Hosting, security, personal-data handling, bugfixes, OS updates are not optional — they are fuel and maintenance.
Before you choose SaaS vs custom, count total cost over two or three years, not only the first invoice. Sometimes a “free” SaaS plan is more expensive; sometimes custom never pays back. It depends on scale: students, courses, and tasks that cannot be solved without custom work.
How to decide: a checklist for your school
Numbers are in, pros and cons are clear — and choice still stalls because every project is unique. Answer the questions below honestly and match the recommendation at the end.
Questions that decide everything
How many students do you have now? Under 200, SaaS covers the basics: lesson builder, student portal, payments, homework, chat — free or a few thousand RUB a month. Custom build is not worth it at that scale.
How large is the contact base, and which SaaS plan are you on? On GetCourse the bill grows with the accumulated base, not only with active students. Add a year of subscription plus acquiring — and compare that to how many contacts still learn.
Do you need unique lesson and task logic? Branching quizzes, adaptive paths, non-standard scoring — if any of that is critical, boxed plans rarely cope. Standard platforms do video, text, and simple tests. Speech recognition for English lessons is already out of scope.
Is built-in video critical? If you run live lessons or webinars, is Zoom as a separate tool fine — or do you need recording, boards, and decks inside the product? The second path is custom.
Will you grow two or three times in a year? If yes, user count and SaaS fees grow together. Each new student raises cost on someone else’s platform.
Is there a technical owner on the team? Someone who can brief vendors and check delivery. Without that person a custom project stretches. Not a reason to refuse — a reason to add two weeks of prep.
How important is ownership of the student base? Contacts, per-lesson analytics, CRM links — on someone else’s site that is not fully yours. Full control means your system.
Three outcomes
Most answers point to small scale. Under 200 students, under 300k RUB revenue, standard tasks, no unique features. Stay on SaaS, try a free plan, do not overcomplicate. Priority is content and sales.
The school is growing, but not everything is critical. 300–1000 students, several courses, revenue above 500k RUB, a few poorly served tasks. Migrate partly: keep SaaS as the base, custom-build video or special tasks on the side.
Everything hits limits. Over 1000 students, high revenue, unique methods, CRM and marketing data needs. Build your platform. Get quotes from two or three studios. Examples at different scales are on the EdTech solutions page.
The choice is not binary. Start on SaaS today and grow into custom over a year. Staged migration beats building everything before you know which features your cohorts actually need.
Frequently asked questions
Common questions from online school owners choosing between SaaS and a custom build.
Can you migrate students and content from SaaS to your own platform?
Yes, but it depends on the vendor. GetCourse and similar products usually export students, contacts, payments, and materials as CSV or via API. Video, homework, quizzes, and decks often need manual transfer or scripts. First step — request a full personal-data export; by law they cannot refuse.
How long does an MVP for online lessons take?
A working product with portals, schedule, payments, and video content delivery usually takes 2–4 months. Timeline depends on roles (student, teacher, admin), interactive tasks, and whether video is built in. For a fast hypothesis check, a first release can land in 6–8 weeks, with more features after launch.
What is cheaper over two years — SaaS or custom?
For schools with up to 300–500 students, SaaS is usually cheaper: 3,000–15,000 RUB per month, up to ~360k RUB over two years. A custom platform starts from ~1.5M RUB to build, then hosting and support. Past 500k RUB monthly revenue and about a thousand students, SaaS fees and limits eat the savings — custom often pays back by the end of year one.
Is a mobile app mandatory for an online school?
No. An adaptive site is enough at the start. Most students learn on phones in the browser; if UX is good, an app rarely moves conversion. An app makes sense past ~1,000 active students when you need push, offline materials, or real-time chat. A PWA constructor is a middle step between site and native apps.
How do you keep stable video for group online lessons?
Goals: audio latency under ~200 ms, adaptive video bitrate, resilience when some participants have weak internet. For groups up to ~30, SDKs like Daily, Whereby Embedded, or Agora work well. Larger groups need an SFU media server. Plain WebRTC peer-to-peer collapses around 5–6 participants. More on lesson video in the music lesson platform case.
Takeaways
Choosing between SaaS and a custom online lesson platform comes down to three numbers: student count, monthly revenue, and number of courses — not ambition or “we want what the big schools have.”
A teacher with 30–50 students running English lessons or a few courses does not need custom development. SaaS covers portals, homework, webinar recording, payments, and group chat. A free plan or 3–5k RUB per month lets you work instead of approving UI mockups.
A school with 300–500 students and several teachers sits in the grey zone. SaaS still works, but limits show: commissions, awkward data export, no custom lesson scenarios or mobile app. The platform that helped growth starts to slow it.
The tipping point is when a year of SaaS cost exceeds the first custom stage. For most schools that lands somewhere between 500 and 2,000 students — depending on fees, commissions, and add-ons. Migration prep takes months; start counting before limits become critical.
Quick check: take the last 90 days of revenue and sum what goes to the vendor (plan + commissions + side tools). Past 50–70k RUB a month and still rising — get a custom quote. If not — staying on SaaS is a rational choice, not a compromise.
Education is moving online for good. Tools must match business scale, not the other way around. Do not build from scratch for 20 students. Do not keep paying for someone else’s limits when custom pays back in a year.
Find your stage, run the numbers — and the answer becomes clear without any article. If the numbers say it is time to build, the WAPP team can discuss scope and timelines.