Это практический курс по созданию Backend-системы на FastAPI. Вы разработаете полноценную образовательную платформу с Clean Architecture, JWT-аутентификацией, тестированием, очередями, Docker-runner для проверки кода и системой прогресса обучения. Курс ориентирован на разработчиков, которые хотят перейти от простых API к архитектурно сложным backend-проектам. Внимание, данный курс не содержит ни минуты видео! Чему вы научитесь: Проектировать backend-приложения на FastAPI с использованием Clean Architecture Разделять систему на domain, application, infrastructure и delivery слои Реализовывать Use Cases, репозитории и Unit of Work Работать с SQLAlchemy, миграциями и persistence-слоем Создавать JWT-аутентификацию, роли и систему авторизации Писать unit, integration и end-to-end тесты Разрабатывать интерактивные системы тестирования и отслеживания прогресса Реализовывать платформу кодовых задач с автоматической проверкой решений Настраивать Docker-runner для безопасного исполнения пользовательского кода Работать с очередями, worker-процессами и брокерами сообщений Проектировать масштабируемую архитектуру образовательной платформы Оптимизировать производительность через индексы и кеширование Код проекта, который создается в рамках курса, вы можете посмотреть на GitHub. Чему научитесь: Модуль 1. «MVP». Мы спроектируем и реализуем первую рабочую версию онлайн-школы на FastAPI с опорой на Clean Architecture. Разберем структуру проекта, разделим домен, application, persistence и delivery-слои, настроим конфигурацию, ошибки и инфраструктурную основу. Реализуем ключевые сущности Course, Module, Section, Lecture и User, добавим роли пользователей и базовую модель доступа. Построим read- и write-сценарии через Use Cases, оформим контракты слоев, подключим ORM, репозитории, Unit of Work и миграции базы данных. Вынесем функциональность в FastAPI-эндпоинты, оформим OpenAPI-документацию, реализуем JWT-аутентификацию, авторизацию и защиту маршрутов. В завершении раздела проведем практическое, unit, интеграционное и end-to-end тестирование проекта. Модуль 2. «Интерактивное обучение: тесты, попытки, прогресс» Мы расширим MVP интерактивной частью и перейдем от простого контента к активному обучению. Реализуем роли для авторов, студентов и управляющих пользователей, добавим сущности Question, AnswerOption и QuestionAttempt. Научимся поддерживать одиночный и множественный выбор ответов, фиксировать попытки прохождения тестов, рассчитывать результаты, баллы и статусы. Построим авторские сценарии создания тестов и пользовательские сценарии прохождения, добавим прогресс обучения как часть доменной модели и обсудим учебную мотивацию через баллы. Реализуем persistence-слой интерактивного этапа, FastAPI-роуты, зависимости и схемы, после чего протестируем модуль вручную и с помощью автоматизированных тестов. Модуль 3. «Кодовые задачи и Docker-runner» Мы добавим в платформу практические задания и систему автоматической проверки решений. Начнем с домена простых задач: реализуем сущность Task, попытки решений, историю отправок, правила проверки, роли, владельцев и доступы. Перейдем к кодовым задачам: создадим сущность CodeTask, сценарии отправки кода, application-слой проверки и жизненный цикл результата. Настроим очередь и worker для асинхронной обработки, разработаем Docker-runner для безопасного исполнения пользовательского кода и сохранения артефактов проверки. Отдельно рассмотрим безопасность, отказоустойчивость, внешний брокер, реальную очередь и поддержку разных языков программирования. В конце раздела подключим FastAPI-слой, обновим учебный прогресс и протестируем этап задач вручную и автоматически. Модуль 4. «Платформенные сценарии вокруг обучения» Мы превратим проект в более полноценную образовательную платформу вокруг курсов, студентов и авторов. Реализуем жизненный цикл курса со статусами draft, published и archived, бизнес-сценарий публикации, каталог курсов и карточку курса. Добавим обложку, описание, сложность, теги, поиск и фильтрацию по темам, тегам и уровню сложности. Построим аналитику для студента и автора: завершение курса, баллы, слабые места, прохождение, сложные вопросы и задачи. Реализуем рейтинги, отзывы, комментарии, обсуждения под лекциями и историю активности студента. В завершении раздела оптимизируем чтение данных с помощью индексов и кеширования контента. Программа: MVP: Обзор проекта, стека и маршрута разработки Clean Architecture на практике Структура проекта: каркас, пакеты, стандарты Конфигурация и ошибки: фундамент production-подхода Сущность Course как бизнес-ядро Сущности Modules, Sections и структура курса Сущность Lecture и учебный материал Сущность User и роли: модель доступа Read-сценарии: первые Use Cases Write-сценарии: управление контентом через Use Cases Контракты слоёв: интерфейсы, границы, ответственность Persistence: ORM отдельно, домен отдельно Репозитории: доступ к данным Unit of Work: транзакции как часть архитектуры Миграции базы данных и инфраструктура FastAPI как слой доставки Эндпоинты чтения Эндпоинты управления OpenAPI: документация, теги, схемы ошибок Аутентификация: регистрация, логин, JWT Авторизация: роли, доступы, защита маршрутов Практическое тестирование проекта Автоматизированное тестирование проекта (Unit тесты) Интеграционное тестирование и End-to-End тесты Домашнее задание Интерактивное обучение: тесты, попытки, прогресс: Точка входа во второй модуль: от контента к активности Роли второго этапа: кто создает, кто проходит, кто управляет Cущность Question Сущность AnswerOption и варианты ответа Формы ответа: одиночный и множественный выбор Сущность QuestionAttempt и прохождение тестов Результаты теста, баллы и статус Авторские сценарии для тестов Домашнее задание Пользовательские сценарии прохождения Прогресс обучения как новая часть домена Баллы и учебная мотивация Persistence интерактивного этапа: ORM, репозитории, UoW FastAPI для интерактивного этапа: роуты, зависимости, схемы Практическое тестирование интерактивного этапа Автоматизированное тестирование тестового этапа Домашнее задание Кодовые задачи и Docker-runner: Точка входа в этап задач Сущность Task Попытка решения и история отправок Правила проверки простых задач Роли, владелец и доступы в домене задач Авторские сценарии простых задач Пользовательские сценарии простых задач Контракты и инфраструктурные границы Persistence простых задач и развитие схемы Кодовые задачи, сущность CodeTask Отправка кода и жизненный цикл проверки Авторские сценарии кодовых задач Application-слой кодовых задач Очередь и worker Среда исполнения: Docker-runner и артефакты проверки Безопасность и отказоустойчивость проверки кода Прогресс кодовых задач и итоговая учебная модель FastAPI и сценарии проверки задач Практическое тестирование этапа задач Внешний брокер и реальная очередь Поддержка других языков программирования в задачах Практическое тестирование этапа задач, ч.2 Автоматизированное тестирование этапа задач Домашнее задание Платформенные сценарии вокруг обучения: Жизненный цикл курса: draft, published, archived Бизнес-сценарий публикации курса Каталог курсов и карточка курса Обложка, описание, сложность и теги курса Домашнее задание Поиск по каталогу курсов Фильтрация по темам, тегам и сложности Профиль пользователя Аналитика для студента: завершение, баллы, слабые места Домашнее задание Аналитика для автора: прохождение, сложные вопросы и задачи Рейтинг и отзывы о курсе Домашнее задание История активности студента по платформе Индексы, оптимизация чтения Кеширование контента