2025 · Education · Лід · Osvitly
Osvitly — одна платформа від школи з однієї людини до цілої школи
Уроки, домашні з реальними доказами, тести, що перевіряються самі, журнал, який заповнюється сам, відвідуваність і живий чат — для шкіл, навчальних центрів і вчителя, який працює сам.
Той самий набір функцій і модель даних, чи в робочому просторі один учитель, чи пʼятдесят
Context
Школі з сорока вчителями й репетитору, що працює з дому, потрібне те саме: місце для уроку, спосіб зібрати домашнє, журнал, відвідуваність і звʼязок із батьками. Продукти для інституцій ставляться до вчителя-одинака як до урізаного акаунта, а продукти для одинаків не можуть із ним зростати — тож учитель, який наймає колегу, починає заново в іншому місці.
Складнішою половиною завдання були не функції, а межі — дані кожної школи окремо, кожен з батьків бачить лише своїх дітей, кожна роль обмежена — бо в освіті ціна помилки тут не простій сервісу.
Рішення
Обрав Зробити незалежного вчителя повноцінним випадком на тій самій моделі даних, що й школу замість окремий урізаний продукт для вчителів-одинаків
Учитель, який наймає першого колегу, — саме той клієнт, якого варто втримати, а окремий продукт перетворює цей момент на міграцію — тобто на момент, коли порівнюють альтернативи. Одна модель коштує більше уваги до прав доступу і більше нічого.
Обрав Оцінка зберігається в балах і застосовується як пресет відображення замість зберігати оцінки в тій шкалі, яку вибрала школа
Українські школи працюють за 12-бальною шкалою, інші — ні, і школи змінюють рішення. Якщо шкала вбудована у збережене значення, її перемикання перезаписує історію — неприпустимо для оцінки. Відділення подання від збереженого балу робить перемикання налаштуванням, а не міграцією з проблемою аудиту.
Обрав Вирішувати запізнення один раз, на першій здачі замість перераховувати запізнення за останньою здачею
Учителі повертають роботу на доопрацювання, і це варто підтримувати. Якщо годинник перезапускається на кожній повторній здачі, прохання поліпшити вчасну роботу робить її запізнілою — система карала б саме ту поведінку, яку вчитель намагається виховати.
Обрав Відсоток відвідуваності вважається лише за тим, що справді відмічено замість вважати невідмічений урок пропуском
Журнал, якого ніхто не заповнив, — це відсутні дані, а не повна кімната відсутніх дітей. Читати це як пропуск означає хибні позначки «потрібна допомога» саме в той бік, що шкодить учневі, і вчителі перестають вірити цифрі з першого ж разу.
Обрав Доступ батьків обмежений власними дітьми на рівні запиту, а повідомлення між учнями вимкнені, поки школа їх не увімкне замість обмежувати батьківський перегляд в інтерфейсі, а повідомлення тримати відкритими за замовчуванням
Батько, який побачив оцінки іншої родини, — це інцидент, з якого школа не виходить тихо, тому межа належить туди, де дані дістаються, а не туди, де відображаються. Повідомлення — той самий аргумент в інший бік: безпечні налаштування за замовчуванням, зі шляхом для скарги та чергою перегляду для адміністраторів, коли школа вирішує їх відкрити.
Що я зробив
Я побудував платформу навколо однієї мультитенантної моделі даних, де школа з однієї людини — повноцінний випадок, а не тариф: ті самі функції і нічого не потрібно міграціювати, коли вчитель згодом наймає колег.
Навчання працює на блоковому редакторі уроків — текст, зображення, відео, аудіо, вкладення — написаному один раз і запланованому в стільки класів, скільки веде вчитель. Тести перевіряються самі на момент здачі для питань із вибором і стають у чергу до вчителя для відкритих, а ключі відповідей ніколи не потрапляють на екран учня. Домашнє приймає файли, скриншоти, відео й посилання з циклом доопрацювання. Проєкти мають дошку задач; журнал заповнюється сам із тестів, домашніх і оцінених проєктів; поруч — відвідуваність, сторінка прогресу на кожного учня зі списком тих, кому потрібна допомога, живий чат і оголошення. Уся платформа двомовна: англійська й українська.
Результат
Один робочий простір покриває і школу з однієї людини, і школу з пʼятдесяти, з ізоляцією даних кожної школи на рівні бази даних, рольовим доступом для адміністратора, вчителя, учня й батьків та батьківським порталом, обмеженим власними дітьми кожної родини.
Школи платять лише за місця вчителів, і місце починає рахуватися, коли вчитель приймає запрошення, а не коли його надіслали.
Озираючись назад
Найважливішими виявилися дрібні правила про час і стан — коли здача вважається запізнілою, що означає незаповнений журнал, чи змінює перемикання шкали оцінювання збережені оцінки. Кілька з них я вирішував уже під час реалізації, а не до неї, і кожне, що зсунулося пізніше, коштувало міграції та розмови з учителем, який уже звик до старої поведінки. Наступного разу я записував би цей набір правил так само явно, як модель даних, бо вони і є модель даних: вони визначають, що означає збережене значення.