Praxis — это не одно приложение, а экосистема из Flutter-клиента для учащихся, CMS для авторов курсов и сервера на Serverpod. В этом кейсе важна работа с продуктом, где нужно одновременно держать учебный сценарий, контентную модель и серверную логику.
Контекст
Платформа построена вокруг прохождения интерактивных курсов по программированию. Здесь есть каталог курсов, структура из модулей и уроков, несколько типов заданий, прогресс пользователя и сценарии обучения на длинной дистанции.
Проект интересен тем, что покрывает сразу несколько ролей: учащегося, автора курсов и серверную часть, которая держит контент, прогресс, достижения и аутентификацию.
Архитектура
Клиент для учащихся собран на Flutter с Clean Architecture, BLoC, локальным кэшированием через Drift и типизированным клиентом, сгенерированным Serverpod. Отдельно существует Flutter Web CMS для создания и редактирования курсов, а сервер на Serverpod с PostgreSQL и Redis покрывает домены курсов, модулей, уроков, заданий, прогресса, достижений и ИИ-эндпоинтов для подсказок и объяснений.
Что важно в реализации
Сильная сторона кейса в целостности: один технологический язык на клиенте, CMS и сервере, общие типы через кодогенерацию и четкое разделение по слоям. Это позволяет быстрее развивать продукт и не расходиться в контрактах между частями системы.
Дополнительную ценность дает сама предметная модель: это не абстрактный CRUD, а платформа с интерактивным обучением, проверкой ответов, прогрессом, локальным кэшем, ИИ-интеграцией и устойчивой серверной логикой.