Для повседневной работы владельцу школы этот раздел не нужен — все настройки доступны в интерфейсе.
Документация полезна, если вы интегрируете школу с внешними системами (CRM, аналитика, боты) или
разрабатываете собственные скрипты.
Технологический стек
Клиентское приложение — это single-page application на React с полной типизацией и SSR-серверной частью.Поддерживаемые платформы
Один и тот же код собирается под несколько платформ. Платформа определяется на этапе сборки и в рантайме.
Определение платформы и окружения выполняется через сторы (
ConfigStore.isDesktop, RouterStore.type)
и компонент Platform.If. Продукт также разворачивается в двух режимах — открытый маркетплейс
(MarketplacePlatform) и отдельная школа (SchoolPlatform).
Архитектура фронтенда
Код организован по доменам. Ключевые директории:Как устроены страницы
Все страницы следуют единому шаблону на базе системы компонентовPage.*. Типичная страница
разбита на файлы: сам компонент страницы, index.tsx (реэкспорт для ленивой загрузки),
graphql.tsx (операции), store.tsx (стор страницы, если нужен) и папку views/ с под-компонентами.
Page.Wrapper— корневой контейнер: восстановление скролла, safe area, тема.Page.Header/Page.MainHeader— заголовок страницы с кнопками действий.Page.Content→Page.Row→Page.Section— область контента.Page.Context— правое контекстное меню (только на десктопе).
Маршрутизация
Маршрутизация построена на кастомном роутере (@exode-team/router). Маршруты описаны в src/router/routes/
и поддерживают:
- URL-параметры:
:id,:page([0-9]+); - регулярные выражения для валидации;
- типы маршрутов:
tab,modal,fullscreen,iframe.
lazyWithRetry(() => import(...)). Для навигации используется
компонент Link или программный вызов Router.pushPage(...).
Управление состоянием
Состояние хранится в MobX-сторах, сгруппированных по доменам (core, user, platform, preference).
Сторы конкретных страниц лежат рядом со страницей (pages/**/store.tsx). Компоненты, читающие сторы,
оборачиваются в observer().
GraphQL
Взаимодействие с сервером идёт через единый GraphQL-эндпоинт с помощью Apollo Client.- Схема — источник истины (
schema.gqlв корне проекта). - Операции описываются в
graphql.tsxрядом со страницей или доменом. - Из операций генерируются типизированные хуки (
useXxxQuery,useXxxMutation) командойyarn graphql:build. - Кэш обновляется вручную по паттерну
readQuery→ изменение →writeQueryс теми же переменными, с синхронным обновлением полейcount,items,page/pages.
REACT_APP_GRAPHQL_CSR_URL. Подробнее о внешних запросах,
ключах и авторизации — в разделе API.