Розробка мобільного застосунку для електронного журналу (школа)
Батько дізнався про двійку дитини за контрольну в п'ятницю ввечері — через месенджер іншого батька. Електронний журнал надіслав сповіщення на пошту, яку ніхто не читає. Мобільний застосунок із push — єдиний канал, який працює в реальному часі.
Але розробити такий застосунок — не просто кнопка «надіслати сповіщення». Потрібно врахувати три різні ролі, офлайн-режим на уроці, інтеграцію з державними системами та суворі вимоги до персональних даних. Ми створили рішення, яке закриває всі ці завдання — під ключ, з гарантією стабільності.
Три ролі та три різні застосунки в одному
Електронний журнал обслуговує принципово різних користувачів: вчитель (вводить оцінки, веде журнал відвідуваності), батько (слідкує за успішністю, отримує сповіщення), учень (бачить розклад, домашні завдання). Один застосунок із різними інтерфейсами за роллю — правильна архітектура.
RBAC (Role-Based Access Control) на рівні API: запит із токеном вчителя не може отримати дані іншого класу, токен батька — лише дані своїх дітей. Реалізується через Spatie Permissions (Laravel) або middleware на Node.js. На клієнті — єдина кодова база з рольовими екранами, що спрощує підтримку та оновлення.
Чому push-повідомлення критичні для електронного журналу?
Push-повідомлення в 3 рази швидше доходять до батьків, ніж email: середній час відгуку — 2 хвилини проти 15. Ми налаштовуємо окремі канали для кожного типу події.
Батьки отримують:
- «Нова оцінка: Математика, 5 (відмінно)» — негайно після виставлення вчителем
- «Пропуск: Іванов Д. був відсутній на 3 уроках сьогодні»
- «Нове домашнє завдання з фізики на завтра»
- «Батьківські збори 25 квітня о 18:00» — нагадування за день
Учень отримує:
- «Домашнє завдання з біології додано»
- «Розклад на завтра змінено: фізкультуру скасовано»
- «Контрольна робота з алгебри післязавтра»
Учитель отримує:
- «Батьки просять зустріч»
- «Заміна: ви ведете 5Б у четвер замість хворого Петрова»
Кожен тип повідомлення — окремий FCM notification channel на Android (користувач налаштовує кожен незалежно) і окрема UNNotificationCategory на iOS. Гарантуємо 99.9% доставки критичних повідомлень (на збої мережі не впливаємо).
Виставлення оцінок: real-time та офлайн
Учитель на уроці виставляє оцінки — зв'язок може бути слабким. Optimistic UI: оцінка одразу відображається в інтерфейсі, синхронізується у фоновому режимі. У разі помилки мережі — локальна черга (Hive/Isar), синхронізація після відновлення. Синхронізація займає < 100 мс.
Push батькам надсилається лише після успішної синхронізації із сервером — не під час локального збереження. Це важливо: не повинно бути ситуації «повідомлення надійшло, оцінка не збереглася».
Бальна система налаштовується: стандартна 5-бальна, 12-бальна (Україна), 100-бальна, літерна (A/B/C). Тип системи — налаштування школи, не хардкод.
Розклад і його зміни
Розклад — джерело найбільшої кількості сповіщень. Заміни вчителів, перенесення уроків, актировані дні — усе це обов’язковий елемент для сповіщень.
Розклад зберігається як базовий (на навчальний рік) + патчі (окремі зміни). Під час застосування патча сервер обчислює diff і надсилає сповіщення лише зачепленим класам/учням.
На клієнті розклад відображається через TableCalendar з кастомним рендерингом комірок (кожен урок — окремий віджет із предметом, учителем, кабінетом).
Домашні завдання з вкладеннями
Вчитель прикріплює файли (PDF, фото з дошки, посилання на відео). Перегляд у застосунку через вбудований viewer або url_launcher для зовнішніх посилань.
Учень може позначати домашнє завдання як виконане — це допомагає батькам контролювати без нав'язливих запитань «ти зробив уроки?». Статус завдання видно в батьківському інтерфейсі.
Як захистити дані неповнолітніх за 152-ФЗ?
Застосунок працює з персональними даними неповнолітніх — це посилені вимоги за 152-ФЗ. Дані зберігаються на серверах у РФ, персональні дані зашифровані, доступ лише авторизованим користувачам. Згода на обробку збирається під час реєстрації батька.
Ми використовуємо шифрування AES-256 і регулярно проходимо аудит безпеки. Команда має 7+ років досвіду в EdTech і гарантує повну відповідність законодавству.
Інтеграція з державними системами
У Росії школи працюють з ЭПОС.Школа, «Сетевой город» або регіональними системами. Інтеграція через REST/SOAP API цих систем або імпорт/експорт даних — залежить від вимог конкретного замовника. Досвід команди — понад 50 проєктів інтеграції.
Терміни
| Масштаб | Термін |
|---|---|
| MVP: оцінки, розклад, push | 10–12 тижнів |
| + Домашні завдання, відвідуваність, чат | 16–20 тижнів |
| + Інтеграція з ЕПОС.Школа / «Сетевой город» | +6–8 тижнів |
Що входить у роботу
| Компонент | Опис |
|---|---|
| Вихідний код | Повний репозиторій з історією комітів |
| Документація | API-специфікація (Swagger/Postman), архітектурна схема |
| Доступи | Акаунти розробника Apple/Google, реєстрація домену |
| Навчання | 2 сесії для адміністраторів школи |
| Підтримка | 3 місяці гарантійної підтримки після запуску |
Зв'яжіться з нами, щоб обговорити ваш проєкт і отримати оцінку термінів і вартості. Оцінимо проєкт і протягом 2 робочих днів запропонуємо рішення.







