От веб-приложения к продукту: 100 уроков
Эта партия продолжает актуальный веб: 100 уроков восьми новых курсов. В каждой серии общий учебный проект, последовательное объяснение, код и ожидаемый результат. Подготовлены оглавления, переходы между уроками и архивы исходников.
Материалы опубликованы. Примеры подготовлены по официальной документации, но ещё не запускались. Показанные результаты ожидаемые; техническая проверка учебных приложений остаётся отдельным этапом.
Восемь курсов
| Курс | Уроков | Общая задача |
|---|---|---|
| SaaS для нескольких компаний | 16 | Организации, участники, роли, изоляция PostgreSQL, аудит и жизненный цикл. |
| Платежи, подписки и платные функции | 12 | Тарифы, платежные состояния, повторные уведомления, продление, отмена и доступ. |
| Kubernetes для веб-разработчика | 14 | Локальный кластер, собственный API, конфигурация, probes, ресурсы и обновление. |
| Temporal: длительные процессы | 12 | Согласование, таймеры, сигналы, повторы, отмена, компенсация и история. |
| Svelte и SvelteKit: кабинет читателя | 14 | Закладки и прогресс, серверные данные, формы, SSR и доступность. |
| ClickHouse: собственная аналитика сайта | 12 | События, повторы и задержки, воронки, возвращаемость и агрегаты. |
| Многоязычный сайт: переводы, URL и SEO | 10 | Словари, Intl, Markdown, старые адреса, языковые альтернативы и редактура. |
| Rust и WebAssembly: вычисления в браузере | 10 | Договор текста, память, ошибки, Wasm, Worker, запасной движок и измерение. |
Учебные маршруты
Разработчик SaaS: ASP.NET Core → PostgreSQL → единый вход → рабочие пространства → биллинг → Temporal.
Сопровождение приложения: Linux → Docker → GitLab CI/CD → Kubernetes → наблюдаемость.
Учебная платформа: Markdown или Astro → кабинет SvelteKit → многоязычность → аналитика ClickHouse. Для обработки файлов дополнительно рассмотрите Rust и WebAssembly.
Маршруты связывают знания. Приложения разных серий не являются автоматически совместимыми модулями; конкретные границы интеграции описаны в оглавлениях и README архивов. SaaS и биллинг развивают общую модель «Пространства», но перенос изменений в существующую базу требует отдельной подготовки.
Все 100 уроков
SaaS для нескольких компаний: ASP.NET Core + PostgreSQL
- Организация как граница данных
- Каркас ASP.NET Core и соединение с PostgreSQL
- Таблицы организаций, членства и проектов
- Доверенный контекст выбранной компании
- Выборки только внутри своей организации
- Создание и изменение без смены владельца
- Составной внешний ключ для связанных объектов
- Роли участников и права отдельных операций
- Приглашение с ограниченным сроком действия
- Версия проекта и конфликт двух изменений
- Row-Level Security как дополнительная защита
- Контекст PostgreSQL внутри транзакции
- Компания в фоновом задании
- Аудит завершённых действий организации
- Частный экспорт данных компании
- Приостановка и завершение работы организации
Платежи, подписки и платные функции
- Деньги, заказ и платеж — разные объекты
- Версия тарифа и неизменяемая цена заказа
- Идемпотентное создание заказа
- Адаптер провайдера и повтор создания платежа
- Переходы состояния платежа
- Входящее уведомление и повтор доставки
- Сверка платежей после пропущенного уведомления
- Подписка и границы календарного месяца
- Планировщик повторной оплаты
- Отмена продления и незавершённого платежа
- Возврат с собственным ключом и остатком суммы
- Платная функция по действующему праву
Kubernetes для веб-разработчика
- Желаемое состояние веб-приложения в Kubernetes
- Собственные образы API и frontend «Площадки»
- Локальный кластер и первый Pod API
- Deployment, ReplicaSet и восстановление копий API
- Service, DNS и готовые адресаты API
- Браузерный маршрут и граница Gateway API
- ConfigMap, Secret и обновление окружения процесса
- Startup, readiness, liveness и завершение API
- Requests, limits и причины Pending
- Namespace и права наблюдателя через RBAC
- PVC и граница постоянного хранения
- Новая версия API, rollout и rollback
- Журналы, ручное масштабирование и условия HPA
- Передача Kubernetes-проекта и границы восстановления
Temporal: длительные процессы и восстановление после сбоев
- Длительный процесс как Workflow: проект «Согласование»
- Минимальные Workflow, Activity, Worker и Client
- Task Queue и жизненный цикл Worker
- Устойчивый таймер и восстановление ожидания
- Signal редактора, Query состояния и срок решения
- Retries, timeouts и heartbeat внешней операции
- Идемпотентная Activity при потере ответа
- Cancel Workflow и сотрудничество Activity
- Компенсация брони и ручное согласование ошибки
- История событий и детерминированное воспроизведение
- Patched и совместимое изменение Workflow
- Передача длительного процесса и пределы восстановления
Svelte и SvelteKit: кабинет читателя
- Кабинет читателя и границы SvelteKit
- Состояние и вычисления в Svelte 5
- Компонент карточки и обратные вызовы
- Маршруты уроков и общая компоновка
- Загрузка страницы и серверные данные
- SSR, prerender и личный кабинет
- Браузерные эффекты и сохранение предпочтений
- Поиск и фильтры в URL
- Серверные действия для закладок
- Проверка формы и восстановление ввода
- Улучшение формы через use:enhance
- Сессия и владелец истории читателя
- Ошибки кабинета и доступный интерфейс
- Передача проекта «Маршрут»
ClickHouse: собственная аналитика сайта
- ClickHouse и модель аналитики сайта
- Контракт события и минимизация данных
- Таблица событий и типы ClickHouse
- Пакетная вставка и подтверждение доставки
- Ключ сортировки и партиции событий
- Повторы и поздние события
- Счётчики событий и качество данных
- Воронка просмотра и завершения
- Когорты и удержание читателей
- Материализованные представления и повторы
- TTL и срок хранения аналитики
- Экспорт отчёта и передача «Событий»
Многоязычный сайт: переводы, URL и SEO
- Язык, локаль и постоянный адрес
- Словарь интерфейса и устойчивые ключи
- Множественные формы через Intl.PluralRules
- Даты, числа и сортировка по локали
- Переводы Markdown и единый ID статьи
- Переключение языка без потери страницы
- Canonical, hreflang и карта языковых версий
- Изменение оригинала и устаревший перевод
- Направление текста и доступный интерфейс
- Выпуск многоязычной библиотеки
Rust и WebAssembly: вычисления в браузере
- Задача для WebAssembly и контракт анализатора
- Строки, заимствование и владение в Rust
- Result и ошибки на границе JavaScript
- Сборка Rust-модуля для браузера
- Асинхронная загрузка и интерфейс анализатора
- Числовые массивы и стоимость передачи данных
- Web Worker и актуальный результат вычисления
- Запасная реализация с тем же контрактом
- Как сравнивать JavaScript и WebAssembly
- Передача Wasm-модуля в веб-проект