Разработка аукциона на Slim и ReactJS

Серия скринкастов по разработке интерактивного аукциона с API на микрофреймворке Slim PHP и фронтендом на ReactJS

Рассмотрим всё от установки до деплоя с использованием Docker для каждой стадии процесса. С WebSocket-интерактивом и очередями на RabbitMQ. С проектированием удобной слабосвязанной доменной модели. С интеграцией сторонних сервисов и платёжных систем. С тюнингом PhpStorm для ускорения разработки. С написанием модульных, интеграционных и приёмочных тестов подходами Test First, TDD и BDD. С рассмотрением практик CI/CD с организацией пайплайнов тестирования и сборки на Jenkins, Gitlab-CI и подобных.

Free
Постановка задачи по разработке будущего проекта и определение используемых подходов. Предполагаемая структура проекта.
Free
Причины выбора микрофреймворка и его отличия от классических фреймворков. Почему мы используем Slim и React.
Free
Чем является Docker и чем не является. Удобство использования Docker для локальной разработки и для продакшена.
Подъём девелоперской версии сайта с Docker. Построение сетевой структуры. Сборка образов для продакшена и первый деплой.
Free
Автоматизация серверной инфраструктуры. Автоматическая установка Docker и Compose на виртуальную машину через Ansible. Подключение сертификатов Let's Encrypt.
Подготовка структуры директорий API. Добавление образа PHP-CLI. Установка Slim Framework. Ускорение установки в Composer.
Оптимизация Docker-образов для production через использование кеширования и мультистадийный билдинг.
Установка Xdebug в Docker-образы. Настройка отладки консольных скриптов. Подключение к PhpStorm для отладки веб-скриптов в PHP-FPM.
Проверка корректности кода с PHPLint. Валидация и корректировка стиля кода с CodeSniffer. Подключение статических анализаторов.
Установка и настройка PHPUnit. Написание Unit-тестов. Создание инфраструктуры функциональных тестов для API. Анализ тестового покрытия.
Моделирование по философии Domain Driven Design. Понятие доменной модели. Исследование предметной области и выделение ограниченных контекстов.
Free
Анализ Use Cases взаимодействия с модулем аутетнификации. Выделение команд Command и запросов Query. Принцип CQS разделения операций.
Free
Моделирование юзкейса запроса регистрации по email. Декомпозиция объектов. Абстрактные типы данных. Проработка сущностей и сервисов через Unit-тесты.
Добавление статуса ожидания и активности пользователя. Реализация команды подтверждения регистрации по токену из ссылки в электронном письме.
Реализация команды регистрации через социальные сети. Именованные конструкторы объектов. Привязка соцсети к текущему профилю.
Реализация двухшагового восстановления пароля с подтверждением операции по электронной почте. Защита от спама и возможной перегрузки сервера.
Реализация команды установки нового пароля с проверкой текущего. Инъекция сервисов в метод. Тестирование зависимых объектов. Стабы и моки.
Написание команды двухшаговой смены email-адреса в кабинете пользователя с подтверждением по ссылке с токеном в письме.
Добавление роли пользователя. Установка роли по умолчанию при регистрации и смена администратором. Команда удаления неактивного пользователя.
Скоро
20 Подключение БД и выбор ORM
Подключение базы данных с Docker. Работа с переменными окружения. Мэппинг сущностей на БД. Написание и генерация миграций. Выбор ORM и регистрация в DI контейнере.
Скоро
21 Отправка электронной почты
Реализация отправки электронных писем по протоколу SMTP. Подключение почтовика для локальной разработки. Подключение шаблонизатора для написания шаблонов.
Скоро
22 Написание и тестирование контроллеров
Написание контроллеров регистрациии и их тестирование Feature-тестами. Отправка письма подтверждения регистрации. Тестирование исходящих писем через локальный эмулятор почтовой системы.
Скоро
23 Валидация ввода
Добавление предварительной валидации данных команд для красивого отображения ошибок в формате JSON для отображения на фронтенде.
Скоро
24 Аутентификация OAuth 2
Добавление и тестирование API-аутентификации по протоколу OAuth 2.0 с использованием JWT. Закрытие приватных контроллеров от постороннего доступа.
Скоро
25 Установка и подключение ReactJS
Знакомство с библиотекой ReactJS. Подключение и сборка пакетов через NodeJS. Способы взаимодействия с API.
Скоро
26 Линтеры и юнит-тесты в JavaScript
Обзор инструментов для проверки синтаксиса и стиля кода в JavaScript. Обзор фреймворков для юнит-тестирования компонентов.
Скоро
27 Приёмочные тесты c Selenium в Docker
Написание приёмочных тестов для проверки работы фронтенда с API. Тестирование ReactJS-приложения в браузере с помощью Selenium в Docker-контейнере.
Скоро
28 Философия CI, CD и CD
Философия Continuous Integration, Continuous Delivery и Continuous Deployment. Отличия и сходства.
Скоро
29 Доменная модель аукциона
Проектирование независимой доменной модели аукциона. Сущности, команды и события.
Скоро
30 ...