Relaunch of an Online SAT/ACT Prep School

Онлайн школа Вебиум

Webium

In 2021, Webium was running on a Ruby system built by outsourced contractors. They came to us with a classic issue: the contractors were dragging their feet on new features.

After reviewing the code and team capabilities, we realized refactoring the existing system would be slow and costly. Instead, we opted to rebuild from scratch using our go-to stack—Django and Nuxt.js. We nailed it in a year: by September 2022, all students were buying and taking courses on the new platform.

Challenges

  1. Ensure business-requested features are delivered on predictable timelines. Extreme example: “Let’s add this tiny thing; sure, it’ll be done tomorrow” (two weeks later), “Oops, it’ll take six months” (and that’s if they’re honest).
  2. Hire a CTO and build an in-house dev team to ditch reliance on outsourcing.
  3. Pull this off without pausing classes or hurting the business.
Задачи
Webium’s Homepage — The Online School That Needed a Fun Relaunch
Папки и счета
Главная страница Вебиума — онлайн-школы, которую ждал нескучный перезапуск

Split the Work into Two Big Phases

Launch of the New Store

The part of the site where students and parents buy courses.

Launch of the New Learning Platform

The Learning Management System (LMS) where students watch webinars, access materials, complete assignments, and chat with mentors.

Интерфейс видео-уроков
Webium’s Homepage — The Online School That Needed a Fun Relaunch

Part One: Store Relaunch

6 months
The store relaunch gave the business two big wins: a shopping cart and clear analytics. The old Webium had a major limitation: one course = one purchase. Bad for business, bad for students.

What we needed to do:

  • Build a user-friendly cart allowing bulk course purchases with discounts.
  • Create a data structure that doesn’t make developers want to quit.
Architecture
We set up separate databases for each system. Here’s a snippet of the functional diagram for adding items to the cart with discounts applied.
Вебиум - Архитектура
This is what the cart looks like in the new store.
Вебиум - Корзина
For traffic routing, we used a combo of Traefik and Express.js. Express.js acts as a Backend for Frontend (BFF). Here’s the traffic routing diagram using an Express.js proxy.
Traefik и Express.js.

The diagram shows three types of requests:

  1. privacy-policy (yellow): A static page from the new store. Express.js handles the request and returns the result to the client.
  2. api/v2/courses (blue): A request to the new backend. It’s proxied to the Python backend, and the result is sent to the client.
  3. certificates  (red): — A page from the LMS. The Express.js app doesn’t recognize this path, so the request is proxied to the Ruby app, and the result is returned.

Store Launch

We planned rollback meticulously: pre-filled all sales data in both the new store and the old system. We set up feature flags —environment variables that could instantly revert to the old system if needed.

Вебиум-Чеклист

Not a single user faced payment issues during the switch. Everyone who wanted to pay Webium got it done. We’re pretty proud of that.

Part Two: LMS Relaunch

7 месяцев
The goal: relaunch the LMS—the platform where students watch webinars, do assignments, and interact with mentors.

We also had to overhaul the admin panel for staff.
The student-mentor chat interface allows discussions for each completed assignment. The LMS admin panel serves multiple roles: content managers, mentors, homework coordinators, subject teachers, and super-admins, each with specific permissions.
Вебиум-Сообщения
This is what a course page looks like for students: watching webinars and lessons, completing and reviewing assignments.

Here’s the cart in the new store again.
Вебиум-Страница курса

LMS scenarios fall into five groups:

  1. Managing courses, schedules, and calendars—separately for students and mentors.
  2. Automatic and manual student group assignments.
  3. Educational content: watching webinars and lessons, completing and grading assignments.
  4. Viewing and sending notifications on the site and via social platforms for students and staff.
  5. Assignment discussion chats for students and mentors.
High-level architecture of the new Webium, from the documentation we handed over with the project.
Вебиум-Новая архитектура

LMS scenarios (detailed):

  1. Student authentication and authorization.
  2. Notifications.
  3. Educational content.
  4. Mentor and student chats.
  1. Course management and lifecycle.
  2. Student group assignments.
  3. Staff authentication, authorization, and role management.
Communication between key LMS components. Arrows on the left connect from the store.
Коммуникация между ключевыми элементами LMS
For monitoring and error tracking, we used trusted tools — Datadog and Sentry. For CI/CD, we switched to GitHub Actions instead of CircleCI.
Datadog

LMS Launch

7 months
Like the store, we had to integrate the new system with the existing one. For the store launch, we integrated with the old LMS; for the LMS launch, we synced with the new store.

We rolled it out in phases:

  • webium.ru: The store site
  • lms.webium.ru: The LMS site. Pre-launch, it ran the old LMS; post-launch, the new one.
  • LMS admin panel.
  • A backup domain for the old LMS post-launch.

What’s Next

During the relaunch, Webium hired a CTO and built an in-house dev team with our help. They coded alongside us and are now ready to take the platform forward.

Webium now has not just great teachers, marketers, product managers, designers, mentors, and instructors, but also awesome developers. We’re incredibly proud of the work we did. Ready to tackle the next challenge.

Team

FANS

Fedor Borshev,
Samat Galimov

Technical Directors

Nikita Alyoshnikov,

Backend Developer

Andrey Batsunov,

Frontend Developer

Alexey Bogoslovsky,

Full-Stack Developer

Mikhail Burmistrov,

Lead Frontend Developer, Project Lead

Anton Davydov,

Architect

Nikolay Kiryanov,

Backend Developer

Nikita Lazarenko,

Backend Developer

Vyacheslav Nabatchikov,

Backend Developer

Alexander Nesterov,

Frontend Developer

Ksenia Safronova,

Project Manager

Eduard Stepanov,

Backend Developer

Vladimir Taranovsky,

Frontend Developer

Alexey Chudin,

Lead Backend Developer

Webium

Roxana Borovik,

CEO

Victoria Garmash,

Product Manager

Nikita Savostin,

Technical Director

Alexander Evgrafov,

Art Director

Alina Tupikova,

Product Designer

Bogdan Pilyavets,

Lead Analyst

Andrey Aleynikov,

Analyst

Mikhail Gerun,

Project Manager

Evgeny Novikov,

Project Manager

Ilya Konanykhin,

Legacy System Developer

Mikhail Sakhno,

Backend Developer

Kirill Starikov,

Frontend Developer

Sergey Volkov,

Frontend Developer

Elena Mikirtumova,

Web Layout Designer

Roman Kovalev,

Lead SEO Specialist

Olga Rokossovskaya,

Tech Support and Testing

Katerina Klimova,

Tech Support and Testing

Pavel Romanov,

Technical Director (Pre-Relaunch Phase)

Evgeny Yuriev,

Legacy System Developer

Technologies

Planning and Management

Basecamp
FigJam
Figma

Development

Ruby
traefik
Express.js
Datadog