Создайте свой собственный full-stack продукт на Scala 3 с использованием стека ZIO. Точно так же, как Scala трансформировала способ создания приложений с использованием функционального программирования, стек ZIO меняет способ построения прочных, тестируемых и доказуемо правильных API. С акцентом на функциональном Scala и реальном приложения, этот курс представляет собой способ от начала до конца изучить Full Stack Scala 3 с использованием ZIO, Laminar и друзей.
Что вы построите?
Вместе мы создадим Companies Board от Rock the JVM, полноценную платформу онлайн-обзоров с оплатой кредитной картой и интеграцией искусственного интеллекта. Пользователи могут создавать и управлять своим аккаунтом, размещать и просматривать отзывы о компаниях, работающих с Scala, и приглашать других сделать то же самое.
Мы создадим приложение с нуля, используя специфичную для ZIO декомпозированную слоистую архитектуру на бэкенде и архитектуру функционально-реактивного программирования на фронтенде с использованием ScalaJS и Laminar.
Приложение включает много серверных компонентов, включая аутентификацию, отправку электронной почты, загрузку изображений, оплату кредитных карт и использование генератора контента на основе искусственного интеллекта. У нас есть обширное тестирование в бэкенде, и мы разрабатываем некоторые основные модули с использованием разработки через тестирование (TDD).
Фронтенд построен как одностраничное приложение, организованное для масштабируемости, если вы захотите добавить новые страницы или функциональные компоненты.
Real-Life" означает "Real Live"
Я хочу превратить свои слова в дело.
Приложение, которое вы научитесь создавать в этом курсе, полностью развернуто и доступно по адресу:
companies.rockthejvm.com
Да, это настоящая платформа обзоров компаний, которую я лично буду использовать для своих студентов в Rock the JVM. Я не знаю, станет ли она успешным стартапом на миллиарды долларов, но вы с гордостью можете развернуть проект в этом курсе.
Если вы представляете компанию и хотите продвигаться в сообществе Rock the JVM, не стесняйтесь использовать его!
Для меня "реальная жизнь" означает:
- это работает с реальными электронными почтовыми аккаунтами
- за продуктовые функции можно взимать деньги
- это достаточно сложно, чтобы быть полноценным продуктом
- это выглядит и работает как готовый продукт
- вы развернете его на веб-сайте с вашим собственным доменом (я сделаю это на камеру)
Это даже не курс "ориентированный на проект". Вы научитесь создавать полноценный продукт, который люди могут использовать и платить за него. С тем, что вы узнаете в этом курсе, вы можете создать свой стартап (возможно, с лучшей бизнес-идеей)
Этот курс построен на ZIO. Мы используем следующие библиотеки:
- ZIO (основная) для всего
- ZIO HTTP для реализации сервера
- Tapir для определения конечных точек, Swagger и клиента для фронтенда
- Quill для типобезопасных запросов к базе данных
- ZIO JSON для кодирования/декодирования HTTP-полезной нагрузки
- ZIO Config для, ну, конфигураций
- ZIO Test для тестового набора
- ZIO Test Containers для тестирования репозиториев и интеграционных тестов
- ZIO Logging для логов
На фронтенде мы используем
- Laminar. Это удивительная библиотека для функционально-реактивного программирования на фронтенде с ScalaJS, и ее легко использовать. Мы интегрируем ее с ZIO в ScalaJS в мини-фреймворк для приложения.
Также мы используем следующие библиотеки и инструменты, обернутые в ZIO-эффекты и ZIO-слои:
- Stripe для оплаты кредитной картой
- GPT-4 для генерации контента с использованием искусственного интеллекта
- Flyway DB для миграции схемы базы данных
- Auth0 JWT для создания и подписи аутентификационных токенов
- PostgreSQL для базы данных
- Java Mail для отправки электронных писем людям
ZIO - это инструментарий на Scala, который позволяет нам писать мощные, параллельные и высокопроизводительные приложения на Scala с использованием чистого функционального программирования.
Zay что?!
ZIO описывает, что означает выполнение "эффекта" в вашем коде, что позволяет нам без проблем комбинировать действия.
Помимо основного типа "эффекта" в библиотеке ZIO есть мощные инструменты, построенные на отточенных в бою практиках и шаблонах проектирования, что позволяет нам писать более легкочитаемый код.
Также работает на фронтенде.
Мы используем все важные библиотеки ZIO в этом курсе.
Для кого этот курс?
Разработчики Scala, которые хотят расширить свои навыки Scala с полноценным продуктом в виде full-stack-приложения.
Вам должно быть удобно писать любой вид Scala-кода, так как мы не будем рассматривать основы Scala. Курсы для начинающих и продвинутых разработчиков Scala сосредотачиваются на языке.
Вы уже должны быть знакомы с ZIO. Мы проведем краткое повторение в начале курса, но больше сосредоточимся на проекте.
Фронтенд написан на ScalaJS с использованием Laminar. Любой опыт с ними хорош, но 100% необязателен.
В общем, этот курс для:
- тех, кто ищет полноценный проект на Scala с начала до конца;
- бэкэнд-разработчиков, стремящихся к полноценной разработке на Scala;
- разработчиков Scala, стремящихся развивать свои навыки и карьеру;
- тех, кто хочет стать лучше в Scala, архитектуре full-stack или функциональном программировании.
Не уверены, подходит ли он вам? 100% возврат средств, если он вам не подходит
В любом случае, не бойтесь. Мы вместе создадим что-то великое.
Навыки, которые вы изучите и практикуете
В каждом видео мы изучаем и реализуем концепцию в наше приложение. Иногда мы будем использовать их многократно для решения новых проблем.
Поскольку мы создаем полноценное приложение на Scala, этот курс охватывает многое. Вот некоторые из вещей, которые вы сможете изучить:
- REST API
- Аутентификация
- Авторизация с использованием JWT
- Авторизация на основе ролей
- Отправка электронной почты
- Проверка/аннулирование пользовательских сеансов
- Очистка и валидация пользовательского ввода
- Взимание платы с кредитных карт
- Интеграция с искусственным интеллектом
- Хостинг и преобразование изображений
- Сложные фильтры на бэкэнде
- Состояния загрузки и ошибок
- Функциональное реактивное программирование
- Маршрутизация
- Асинхронные эффекты
- Вебхуки
- Слои и декомпозиция модулей
- Настройка
- Общие модели домена
- Разработка через тестирование
- Тестовые контейнеры
- Сборка и настройка для разработки, стейджинга и продакшена
- Развертывание с использованием настраиваемых доменов
100% Практика
Мы будем строить проект с нуля, начиная с пустого каталога и с первых принципов. По мере усложнения нашего кода мы будем модульно структурировать его по мере необходимости.
Мы дойдем до нашей слоистой архитектуры естественным образом, без того чтобы с самого начала навязывать вам свой стиль. Возможно, вы найдете его довольно приятным.
Часть бэкэнда написана в стиле разработки через тестирование. У нас также есть участки, где мы пишем тесты после реализации, чтобы вы могли почувствовать разницу на практике. Мы также пишем некоторые части снизу вверх, а некоторые сверху вниз, чтобы вы знали, как это.
Что касается фронтенда, мы добавим поддержку ScalaJS с нуля, затем начнем создавать каркас нашего приложения для масштабируемости, чтобы вы могли легко добавлять новые страницы, новые компоненты с состоянием или новые конечные точки.
Мы также тщательно разработаем нашу доменную модель, чтобы фронтенд и бэкэнд использовали одни и те же определения, исключая неприятные ошибки из-за несоответствий схемы.
https://rockthejvm.com/courses/zio-rite-of-passage/lectures/48290457