DartWay вырос не из желания сделать ещё один фреймворк. Он вырос из студии, где мы каждый месяц собираем клиентам разные приложения — и не можем позволить себе инструмент, который в чём-то нас ограничивает. Любое требование клиента должно быть реализуемо. Всегда.
Отсюда правило, которое мы проверяем каждым релизом: упрощать рутину, не забирая гибкость. Сегодня на pub.dev уехали два пакета — и они ровно про вторую половину этого правила.
dartway_telegram — интеграция с Telegram Mini Apps. dartway_shared_preferences — локальное хранилище с реактивными riverpod-провайдерами. Напрашивается: суньте в ядро, пусть будет «из коробки». Мы сделали наоборот — это плагины.
Что это значит на практике. Ядро фреймворка не знает слова «Telegram». Не знает про локальное хранилище. Приложение, которое не Mini App, не качает телеграмный SDK только чтобы запуститься. Нужен Telegram — плагин объявляется при старте и доступен отовсюду как
dw.plugins.telegram. Нужно хранилище — dw.plugins.prefs. Не нужно ни то ни другое — в приложение не приезжает ни строчки.И тот же шов открыт каждому разработчику. Telegram у нас — не привилегированная «фича фреймворка», а обычный плагин через публичный
DwPlugin. Понадобится проекту аналитика, connectivity, пуши, какой-то свой вендор — разработчик пишет плагин точно так же и достаёт его как dw.plugins.<своё>. Ядро остаётся минимальным контрактом; всё опциональное живёт снаружи и подключается одинаково — и нашими руками, и руками любого, кто ставит пакет.То же и с внешним видом. DartWay намеренно не поставляет дизайн-систему — ни одной кнопки. Дизайн — единственное, что любой серьёзный проект всё равно форкает под свой бренд; отдать его зависимостью значит обречь всех на спор про радиус кнопки. Поэтому UI-кит — это исходники в самом приложении (модель shadcn/ui): код принадлежит проекту, меняется как угодно, никто не спорит.
Вот что стоит за словами «фреймворк ничего не отнимает». Сложное — запуск, действия, права, реалтайм, CRUD — решено один раз и по-нормальному. Но интеграции — свои, хранилище — своё, UI — свой, модели — свои. Ни в одной точке нет двери, за которой «дальше только форк».
DartWay упрощает многое — и не ограничивает ни в чём.
Теперь это можно проверить на своём проекте:
https://pub.dev/packages/dartway_telegram
https://pub.dev/packages/dartway_shared_preferences