Портал русской воскресной школы
Публичный сайт на трёх языках и личный кабинет для семей и педагогов — одна система, в которой живёт вся школа: от первой заявки родителя до журнала, расписания и счетов.
- 0языка сайта — RU · DA · EN
- 0ролей в кабинете
- 3–18лет — возраст детей
Что такое портал Deti.dk
Портал — это не сайт и отдельно «какая-то программа для учёта». Это одна система с двумя лицами: наружу она рассказывает о школе и принимает заявки, внутрь — ведёт семьи, занятия, журнал и деньги. Данные у обеих половин общие, поэтому заявка с сайта становится учеником, не превращаясь по дороге в письмо, таблицу и стикер на мониторе.
🌍 Публичный сайт
- Русский, датский и английский — переключаются одной кнопкой
- Программы по возрастам, расписание, команда, цены, отзывы, галерея
- Квиз «какой кружок подойдёт ребёнку»
- Запись на пробное занятие и на мероприятия
- Личные страницы педагогов и страницы курсов — ими не стыдно поделиться в соцсетях
🔑 Личный кабинет
- Пять ролей: гость, родитель, педагог, администратор, директор
- Каждая роль видит свой набор разделов — и ничего сверх него
- Дети, расписание, журнал, материалы, счета, мероприятия
- Сообщения, календарь, сообщество семей одной школы
- Управление публичным сайтом изнутри — без программиста
Путь семьи — от первого клика до полноценного кабинета
- 1ЗаявкаРодитель оставляет заявку на сайте — форма работает даже без JavaScript
- 2ПробноеШкола записывает на бесплатное занятие, родитель получает ответ на своём языке
- 3ЗачислениеВыбирается группа, заводится профиль ребёнка и первый счёт по тарифу
- 4КабинетСемья получает полный доступ: занятия, журнал, материалы, оплаты
Одна вещь, о которой стоит сказать отдельно. Содержимое сайта — тексты, расписание, карточки педагогов, FAQ, отзывы, галерея — хранится в базе, а не в коде. Школа правит его сама из кабинета, и изменения появляются на сайте сразу, без участия разработчика и без «выкладки новой версии».
Публичный сайт
Одна длинная страница, по которой родитель проходит сверху вниз и в конце оставляет заявку. Плюс отдельные страницы: педагоги, курсы, приватность, условия.
Знакомство
- Главный экран и «Почему мы»
- Выбор по возрасту ребёнка
- Мини-садик 3–5 лет
- Чему учим · Русский, литература, логопед
Доказательства
- Расписание воскресений
- Команда — карточки педагогов
- Галерея
- Отзывы родителей
Решение
- Квиз подбора кружка
- Цены — открыто, таблицей
- Частые вопросы
- Заявка и контакты
Что здесь сделано аккуратнее, чем обычно
🌐 Три языка по-честному
Не «переключатель, который меняет половину надписей». Каждый язык живёт по собственному адресу — /ru, /da, /en, — а сайт сам угадывает язык нового посетителя по настройкам его браузера. Ответ на заявку приходит на том языке, на котором её подали.
📝 Форма, которая не подводит
Заявка на пробное занятие и запись на мероприятие работают без JavaScript: на старом телефоне, в режиме экономии трафика, при заблокированных скриптах. Заявка не теряется никогда — это единственная точка входа в школу.
🔎 Понятен поисковикам и ИИ
Структурированная разметка организации, карта сайта, корректный robots — школу правильно понимают и поисковики, и современные ИИ-ассистенты, к которым родители всё чаще идут с вопросом «куда отдать ребёнка в Копенгагене».
👩🏫 Страницы педагогов и курсов
У каждого педагога — своя страница с биографией и списком его курсов; у каждого курса — своя. Это отдельные адреса с нормальным превью для соцсетей: ссылку можно отправить в родительский чат.
Сайтом управляет школа, а не разработчик
Раздел «Сайт» в кабинете — это редактор всего публичного содержимого: тексты на трёх языках, расписание, каникулы, карточки команды, галерея, отзывы, FAQ, блоки «почему мы» и «чему учим», возрастные карточки, карточки курсов. Администратор или директор меняет — на сайте видно сразу.
Кабинет: пять ролей
Кабинет один, но каждый входит в свою версию. Разделы, которых у роли нет, не просто спрятаны из меню — они закрыты и по прямой ссылке.
| Раздел | Гость | Родитель | Педагог | Админ | Директор |
|---|---|---|---|---|---|
| Дети и страница ученика | — | ✓ | ✓ | ✓ | ✓ |
| Занятия и расписание — воскресенья, запись, сетка | ✓ | ✓ | — | ✓ | ✓ |
| Счёт семьи — баланс и списания | ✓ | ✓ | — | — | — |
| Сообщения и чаты | ✓ | ✓ | ✓ | ✓ | ✓ |
| Школа — афиша, календарь, сообщество | ✓ | ✓ | — | — | — |
| Воскресенье — занятия дня и журнал | — | — | ✓ | ✓ | ✓ |
| Мои предметы — группы, предложения, курсы | — | — | ✓ | — | — |
| Мои часы по сетке звонков | — | — | ✓ | — | — |
| Дети и семьи — все дети, по группам, воронка, после пробного | — | — | — | ✓ | ✓ |
| Входящие — запросы, отсутствия и замены, кандидаты, отзывы | — | — | — | ✓ | ✓ |
| Деньги — балансы семей, списания, переводы | — | — | — | ✓ | ✓ |
| Сайт — тексты и мероприятия | — | — | — | ✓ | ✓ |
| Команда — сотрудники, роли, приглашения | — | — | — | — | ✓ |
| Настройки и согласия | ✓ | ✓ | ✓ | ✓ | ✓ |
Директор может посмотреть кабинет «глазами» любой роли и войти в кабинет конкретного человека — педагога, администратора, семьи. Это отдельный режим: он меняет набор разделов, но не даёт лишних прав, ничего не сохраняет от чужого имени, не открывает чужую переписку и пишет каждый вход в журнал поимённо.
Родитель и гость
Кабинет родителя отвечает на четыре вопроса, ради которых он вообще заходит: что было с ребёнком на занятии, что будет дальше, сколько я должен и как связаться со школой.
👧 Дети
Главная кабинета. Карточка каждого ребёнка: заметки педагогов, посещаемость за последние недели, фото, блок «безопасность» (аллергии, экстренный контакт, кто забирает) и одноклассники с возможностью написать их родителям.
🗓 Занятия
Две вкладки. Наши воскресенья — ближайшие занятия детей: отмены зачёркнуты, замены подписаны именем заменяющего; отсюда же «предупредить о пропуске» — педагог узнает заранее. Записаться — каталог групп и курсы.
📚 Материалы и игры
Отдельного раздела нет — они на карточке ребёнка. Темы занятий и файлы педагогов только тех групп, где он учится, и дверь в игровой портал.
🎓 Записаться: группы и курсы
Два разных списка на одной вкладке. Группы — каталог: педагог, свободные места, цена за урок; можно задать вопрос, записать ребёнка или встать в лист ожидания. Курс — не кружок и не абонемент: у каждого курса своя цена за курс целиком, своё начало и свой конец, а запись открывается заранее, как на мероприятие. Курсы живут в отдельном календаре на год, а не в воскресной сетке.
💳 Счёт
Баланс семьи, а не счета за месяц вперёд: деньги лежат на счету и списываются за посещённые занятия по отметке в журнале. Пополнения, история списаний, реквизиты для перевода, статус «ждёт подтверждения» до того, как администратор увидит перевод; кончаются деньги — школа предупреждает заранее.
🎈 Школа
Афиша с записью на мероприятия, календарь школы и семьи — занятия, каникулы, события, дни рождения — и сообщество: семьи одноклассников, педагоги, групповые чаты.
Гость — семья, которая ещё не стала членом школы
Кабинет заводится сразу после заявки с сайта, и он тот же, что у родителей школы: дети, занятия, счёт, сообщения, школа, настройки. Наверху главной, пока семья не член школы, стоит карточка пути: заявка → пробное → зачисление → членство, там же согласия. Членом школы семья становится сама с первым годовым взносом; до этого закрыты только чужие дети, фото других семей и чаты родителей.
Игровой портал
Обучающие игры со словами на трёх языках, звёзды за пройденное, озвучка. Доступны и гостям — ребёнок может начать играть в тот же день, когда родитель оставил заявку. Педагоги пополняют наборы слов, школа видит отчёт вовлечённости по возрастам и навыкам.
Педагог, администратор, директор
📖 Педагог
- Воскресенье — журнал выбранного дня: посещаемость одним касанием, с автосохранением; стрелками ‹ › — любое воскресенье
- Бейджи прямо в списке: аллергия, «без фото», день рождения
- Заметка о ребёнке — сразу видна родителю, с уведомлением
- Материалы к занятию — тема и файлы уходят всем родителям группы
- Мои предметы — свои группы и курсы: педагог предлагает, администрация утверждает; до утверждения ни группы, ни курса не существует
- Желаемое время — педагог просит время в сетке, администратор двигает блок и назначает кабинет; подтверждённое занятие ложится в черновик и публикацию не минует
- Четыре недели вперёд с заменами и «не смогу», часы по сетке звонков, чаты
🗂 Администратор
- Воскресенье — занятия дня по урокам: кто отмечен, пробные, занятия без педагога, семьи с деньгами на исходе; журнал любого педагога открывается отсюда
- Дети и семьи: все дети школы, люди по группам, воронка — заявка → пробное → зачислен → активен, архив с причиной отказа — и кто остался после пробного; зачисление одним действием: группа, профиль ребёнка, счёт семьи
- Входящие — всё, что ждёт решения, одной лентой: запросы семей и педагогов, отсутствия и замены (запрос педагога → заменяющий → уведомления во всех расписаниях), кандидаты в команду, отзывы и жалобы
- Расписание: сетка воскресенья, взрослые и часы, курсы, каникулы; группы, места, лист ожидания, отмены и возвраты занятий
- Деньги: балансы семей, списания по посещаемости, подтверждение переводов, счета на пополнение
- Сайт: тексты и страницы предметов, мероприятия и рассылки
🦉 Директор · Воскресенье
Главная у директора та же, что у администратора: занятия дня, кто отмечен, пробные, семьи с деньгами на исходе. Отдельного дашборда нет.
Команда
Сотрудники и роли: приглашения по e-mail, смена ролей, блокировка, передача группы другому педагогу, выгрузки школы, журнал действий.
Кандидаты в команду
Отклики желающих преподавать: администратор видит их во «Входящих» и напоминает, нанимает директор.
Два правила, на которых держится расписание
Черновик, а не хаос
Правки расписания копятся в черновике и не тревожат ни родителей, ни сайт. Публикует их человек одним действием — и только тогда уходят письма, причём адресно: только тем семьям, у чьих детей действительно изменились занятия.
Отмена и выходной — разные вещи
Отмена значит «занятия не будет и оно не оплачивается». Выходной педагога значит «нужна замена». Пересечение по педагогу или кабинету — предупреждение, которое подтверждает человек; пересечение по группе — отказ, который не продавливает никто.
Деньги — прозрачно и по правилам
Цена в школе считается за один урок, а не «за месяц вообще». Поэтому в месяце с пятью воскресеньями счёт больше, а каникулы уменьшают его сами, без пересчётов вручную и споров.
Школа, 6–18 лет — цена за один урок в группе до 10 человек
| Уроков в неделю | Помесячно | 6 месяцев | Год |
|---|---|---|---|
| Один | 90 kr | 80 kr | 80 kr |
| Два и больше | 80 kr | 75 kr | 75 kr |
Мини-садик 3–5
250 kr за воскресенье за ребёнка: 1000 kr в месяце с четырьмя воскресеньями, 1250 kr — с пятью; в каникулы садика нет, и эти воскресенья не считаются. Группы до 20 человек. Скидки за длинный срок здесь нет.
Второй ребёнок
−10% от получившейся суммы. Старшинство считается по дате рождения.
Годовой взнос
250 kr за ребёнка раз в учебный год, отдельной строкой. Платится целиком, когда бы ребёнок ни пришёл. Скидка за второго ребёнка на него не действует.
Индивидуальные занятия
Логопед-дефектолог — от 450 kr за час или курс на три месяца за 4999 kr; запись через администратора. Остальные индивидуальные занятия: цену и продолжительность преподаватель обсуждает с семьёй лично.
Как выставляются счета
Считает машина, выставляет человек
20-го числа система готовит черновик счетов за следующий месяц и зовёт администратора: «проверьте». Ничего не уходит родителям само. Человек подтверждает ровно то, что видел на экране: если к моменту нажатия пересчёт дал другую сумму, подтверждение отклоняется.
Счёт правится до отправки
Экран подтверждения — не список сумм, а редактор: администратор открывает счёт, меняет цену, добавляет и убирает строки и только потом отправляет семье. До отправки счёта не существует — родитель не видит его не потому, что тот спрятан фильтром, а потому что данных ещё нет.
Выставленный счёт не переписывается
После отправки сумма задним числом не меняется — поправка идёт вперёд отдельной строкой. Чужой перевод не закрывает чужой счёт, частичная оплата принимается, а исключить ребёнка из выставления можно только с причиной, и причина попадает в журнал.
Срок оплаты у всех одинаковый — 1-е число. Оплата — через MobilePay прямо в кабинете: деньги ложатся на счёт семьи сразу после оплаты, и школе не нужно искать их в выписке. Если MobilePay недоступен, остаётся банковский перевод; к нему обязательна пометка — за что и имя и фамилия ребёнка, — а поступление подтверждает администратор по выписке. Курс считается отдельно от воскресных уроков: цену за курс целиком назначает преподаватель, у курса своё начало и свой конец. Скидка за второго ребёнка на курс не действует; ушёл ребёнок или не пришёл — оплата остаётся школе; отменила курс школа или педагог — возврат полный, и доля пройденного не считается.
Приватность и безопасность
Главный принцип: по умолчанию закрыто больше, чем открыто. Вернуть приватность после утечки нельзя, а открыть себя по кнопке — можно. Поэтому каждое умолчание в системе выбрано в пользу закрытости, а не удобства.
🧒 У ребёнка нет учётной записи
И не будет. Ребёнок — это запись, которую заводит родитель, а подтверждает школа. Дети не переписываются, не заводят профилей и не «дружат» внутри системы. Именно это удерживает портал от превращения в социальную сеть с несовершеннолетними.
👁 Взрослый сам решает, кто его видит
Три уровня: только пересекающиеся семьи (умолчание), весь кабинет, только сотрудники. «Пересекаемся» — это общая группа у детей или общее мероприятие, куда обе семьи идут. Телефон и почта скрыты по умолчанию; администрации видны всегда.
✅ Согласия — раздельные и отзываемые
Согласие на страницу ученика и согласие на фотографии — разные, отзываются порознь, в любой момент, из настроек. День рождения ребёнка появляется в общем календаре только по согласию родителя.
🔒 То, что не показывается никогда
Аллергии, экстренный контакт и то, кто забирает ребёнка, не видны никому и ни на каком уровне открытости. Эти сведения живут только в журнале у педагогов той группы, где учится ребёнок.
Техническая сторона
🌍 Всё в Европе
Приложение — Стокгольм, база данных — Ирландия. Данные детей не покидают ЕС.
🛡 Защита на уровне строк
Включена в базе у всех таблиц без исключения: даже при ошибке в коде чужая строка не отдастся.
🚪 Мгновенный отзыв доступа
Закрытие сессии действует сразу, в том числе для уже открытых вкладок и фоновых действий.
Сообщество — как оно устроено безопасно
Родитель пишет отзыв из кабинета и видит его судьбу; администрация одобряет или отклоняет; одобренный отзыв появляется на сайте. Жалоба на сообщение или человека попадает в очередь к администрации, закрывается решением и попадает в журнал — при этом пожаловавшийся не узнаёт ничего нового о том, на кого пожаловался. Блокировка личная и взаимная: заблокированный исчезает из потока, диалогов и каталога у обоих. Педагога заблокировать нельзя. Перед первым сообщением в общешкольный чат человек видит напоминание, что чат читают все.
Надёжность и устройство
Школьный портал — это не витрина, которую не жалко потерять. В нём журнал, счета и данные детей. Поэтому отдельная часть работы ушла не в функции, а в то, чтобы система умела рассказывать о себе и переживать неприятности.
📬 Ежедневное письмо о состоянии
Каждое утро на общий ящик школы приходит письмо о том, что происходит с системой — в том числе когда всё хорошо. Правило простое: молчание означает поломку, а не благополучие. Нет письма два утра подряд — это повод разбираться.
💾 Ночной шифрованный бэкап
База копируется каждую ночь, копии шифруются и хранятся в двух местах. Восстановление из бэкапа не «предусмотрено», а отрепетировано на живой копии — и повторено по записанной инструкции.
🧪 Автоматические проверки
158 наборов проверок: приватность, деньги, расписание, языки сайта, доступ по ролям. Каждый набор пишется по правилу «проверка, которая не может покраснеть, — не проверка»: после написания код ломают нарочно и убеждаются, что проверка это поймала.
🔐 Предохранители на рабочих данных
Любой служебный сценарий, способный изменить рабочие данные, без явного разрешения просто отказывается работать. Это защита не от злого умысла, а от обычной усталости в конце дня.
На чём построено
| Приложение | Next.js 14 и React — один современный код на сайт и кабинет, быстрый на телефоне |
| База данных | PostgreSQL (Supabase), защита на уровне строк, EU-регион |
| Хостинг | Vercel, регион Стокгольм; домен deti.dk |
| Почта | Собственный домен школы, настроенные SPF, DKIM и DMARC — письма школы не уходят в спам |
| Языки | Русский, датский, английский — и содержимое, и интерфейс |
Отдельно стоит сказать про обновления: сайт и кабинет — это одно приложение, поэтому школе не нужно «обновлять программу», ждать окна обслуживания или переносить данные. Новая возможность появляется у всех сразу, а данные всё время лежат в одной базе.
Коротко о главном
Для родителя
- Понятный сайт на своём языке и заявка в два поля
- Кабинет, где видно занятия, заметки педагога и посещаемость
- Все счета в одном месте, без напоминаний в мессенджерах
- Прямая связь с педагогом и другими семьями школы
- Полный контроль над тем, что и кому видно о семье
Для школы
- Ни одной заявки мимо — все в общей воронке
- Журнал, расписание и замены в одном рабочем месте
- Счета считаются сами, выставляет их человек
- Сайт правится изнутри, без разработчика
- Данные детей — в ЕС, под защитой и с бэкапами
Что уже работает и что впереди
Работает
- Публичный сайт на трёх языках
- Заявки, пробные занятия, воронка семей
- Кабинеты педагогов и администрации
- Журнал, расписание, замены, мероприятия
- Счета, тарифы, редактор счёта и подтверждение оплат
- Оплата MobilePay в кабинете, счёт семьи и оплата вперёд
- Членский взнос отдельной строкой, уважительный пропуск без денег
- Курсы: свой календарь на год, цена за курс, запись и возвраты
- Сообщество, отзывы, модерация
На подходе
- Открытие кабинета всем семьям — включается одним действием
- Развитие сообщества: знакомства семей, клубы по интересам
Как пользоваться порталом
Короткие ответы на вопрос «что мне нажать»: с чего начать, частые дела по шагам и что делать, когда не получается.
Вы не вошли в кабинет, поэтому здесь открыты гостевая и родительская части — то, что станет вашим собственным опытом. Остальные откроются после входа, и каждому своя.
Гость
Кабинет заводится сам после заявки с сайта. Ссылка приходит на почту. Отдельного гостевого кабинета больше нет: с первого входа семья видит тот же кабинет, что и родители школы, — дети, занятия, счёт, сообщения, школа, настройки. Наверху главной, пока семья не стала членом школы, стоит карточка пути: заявка → пробное → членство → зачисление, там же согласия. Членом школы семья становится сама с первым годовым взносом (или при зачислении); до этого закрыты только чужие дети, фото других семей и чаты родителей — школе и педагогу писать можно сразу.
Разделы кабинета
| Раздел меню | Что в нём |
|---|---|
| Дети | Главная: карточки ваших детей и, пока семья не стала членом школы, карточка пути — заявка → пробное → членство → зачисление — с согласиями. |
| Занятия | Три вкладки: ближайшие воскресенья и предупреждение о пропуске, запись на пробное и платное с ценой, сетка воскресенья всей школы с вашими детьми в клетках. |
| Счёт | Счёт семьи: баланс, движения по счёту, пополнение переводом или через MobilePay, история платежей; здесь же «Как работает счёт семьи». |
| Сообщения | Чат со школой и с педагогом группы — писать можно сразу; кнопка «📎» рядом с полем прикладывает фото. Чаты родителей открываются после членского взноса — 250 kr за ребёнка за учебный год; после пробного кабинет сам покажет шаг «Членство» с суммой и кнопкой в «Счёт». |
| Школа | Афиша мероприятий и календарь года — сразу; одноклассники и фото других семей — после первого взноса. |
| Настройки | Язык, данные о себе и согласия. |
Если что-то не получается
- Детей на главной нет. Ребёнка в картотеку школы заводит администратор — напишите в «Сообщениях», и вас запишут на пробное; после этого запись на пробное и на платное делается самим из «Занятий».
- В «Школе» не видно одноклассников и фото. До первого годового взноса чужие дети, фото других семей и чаты родителей закрыты. Взнос списывается со счёта при первом пополнении — после него всё открывается само.
- Пробное записано, а хочется перенести. «Занятия» → «Сетка воскресенья»: в клетке занятия у ребёнка кнопки перенести и снять запись.
Обновлено 13 сентября 2026
Обновлено 13 сентября 2026