Redwood.js - эволюция мира fullstack
Данный короткий экскурс в RW фреймворк хочу сделать, полагая, что читатель знает хотя-бы в общих чертах об: React, Nodejs, СУБД и ORM, а в теле статьи давать внешние ссылки на некоторые термины/понятия, что могут оказаться вновинку.
Итак, что есть Redwood фреймворк:
Fullstack платформа (фреймворк++) для среды Nodejs с React для дизайна UI. В основе - Reactjs с множеством предустановленных пакетов и конфигураций, для упрощения создания полнофункциональных (fullstack) веб-приложений.
Ну и что за фуллстэк было бы оно - без БД инструментария в арсенале(..?) - взаимодействие с базой (хранилище данных* - далее БД) осуществляется через прослойку Prisma (ORM), где последняя берёт на себя изрядную долю работы, реализуя миграции, считывая "схему данных" (schema.prisma) приложения, переводя в DDL запросы и далее, предоставляя синтаксис-абстакции для менее мозгоёмкого общения с БД. Там же и ряд других вкусняшек от шеф-повара, как например prisma-studio.
Кодовое древо редвуд приложения разделено на 2 ветви: API - где всё об бэкенд и WEB - фронтэнд часть.
Редвуд относят к типу "opinionated frameworks" - достаточно комплексная платформа разработки, объединяет в себе возможномсти React, GraphQL, Prisma, TypeScript + Jest и Storybook (для тестирования/отладки компонентов - если просто/кратко), и всё в одном флаконе(!) Вроде как получается - фреймворк с батарейками в комплекте. Как описано на сайте: "полноценная веб-инфраструктура, призванная помочь разрабу вырасти от стороннего проекта до стартапа", и ведь - таковое звучит звонко !:).
Меня порадовало то, что относительно легко начать вдаваться и работать - лепить свой продукт: генерация кода одной командой cli (т.н. generators), RBAC, тут же и предустановки безопасности (secure-by-default), Graphql - для запросов с фронэнд и dev-инструменты вроде Graphiql среди прочего.
Ещё cli команды: для автонастройки UI-библиотек (на момент - v 6.3 - за пазухой есть Tailwind, Chakra и Mantine), для проверки нужной инфы (как id/статус и пр.необходимости тек.пользователя) в базе, и много всякого вплоть до деплоймента на различные хосты (serverless/traditional servers + docker).
На фронэнде: система чудо-"ячеек" (cells) - как единый источник данных для компонентов, элегантный "раутер" со встренными особенностями, "авторизация/аутентикация" и SSG для отдельных страниц (последние версии редвуд). Web формы (Redwood forms) - требуют отдельного описания с их компонентами и набором хэлперов (базируются на React Hook Form), c валидацией и всплывающими оповещениями (pop-up, на react-hot-toast) - для полного улёта в работе с формами(!).
Конечно - в документации каждой фиче посвящён полноценный раздел.
На закуску встроен jest - для тестирования кода со "сценариями" и storybook - для каталогизации & тестирования интерфейса "в изоляции". Вся структура (строго) типизирована, по сему, на блюдце имеем автозаполнение в IDE.
Сам было перештудировал и долго лепил некий внутренний проект на сей платформе года полтора назад, где многое узнал на деле. Признаться, натыкался таки на мелкие недочёты (единицы) и пожелания к улучшению чудо-платформы, но, много воды с той поры утекло ..
Спешу к приятному: редвуд - путь и молод среди ветеранов-фреймворков, но достаточно стабилен - всё таки зиждется на китах :) - и по сегодня продолжает активно развиваться, набирать свежие версии, обрастать фичами, коммюнити и т.д.
Согласно сайту фреймворка - держит прицел на стартапы(!) и на данной стадии эволюции - делают больше уклон на качество документации и туториала (англ.яз). Cвежую (да и подробную) документацию всегда лучше смотреть на сайте производителя, тем более, что фреймворки (в отличии от самих языков программирования) развиваются семимильными шагами.
У самого в планах работать с сиим чудо-инструментом и дальше, особенно в роли соло-разраба. Думаю - заброшенность и тлен сей чудо-платформе пока не грозит (а надеюсь - и вовсе :)). Тут стоит упомянуть о поддержке и отцах основателях Redwood.js: Был создан Томом Престоном-Вернером (Tom Preston-Werner), сооснователем GitHub и проектов, как Semantic Versioning, TOML, Jekyll и мн. других, а в основной команде проекта есть ещё: Peter Pistorius, Rob Cameron, David Price и более 250 контрибюторов на сегодня.
Схожие (пусть и где-то отдалённо) проекты: blitzjs.com, remix.run, imba.io, traxion.dev