Специализируюсь на Dart там, где о нём вспоминают реже всего, на стороне сервера. Для большинства Dart это язык мобильных приложений Flutter, а я использую его как основу для серверной логики. Собираю HTTP-сервисы и REST API поверх middleware в духе shelf и фреймворков масштаба Serverpod: маршруты, авторизация, проверка входящих данных, структурированные логи, аккуратная остановка процесса под нагрузкой. Внимание уделяю тому, что не бросается в глаза, но определяет удобство эксплуатации: стабильное время ответа, понятные статусы ошибок, пул подключений к Postgres или иному хранилищу и читаемый код, в который спокойно вернётся другой человек спустя месяцы.
Отдельное направление у меня, это оснастка для команд разработки. Готовлю консольные приложения с разбором параметров, вложенными командами, наглядным выводом и правильными кодами завершения, чтобы они предсказуемо работали в скриптах и на CI. Много опираюсь на встроенную систему сборки: build_runner и source_gen генерируют типобезопасную сериализацию, клиентские обёртки и шаблонный код, который вручную быстро расходится с реальностью. Если нужен внутренний демон, инструмент миграций, загрузчик данных или прослойка между сервисами, отдаю компактный статически типизированный бинарник, собранный в один файл без внешних зависимостей.
По честному про рамки: идеальные мобильные интерфейсы и переезд на Node либо Go, это не ко мне. Прихожу туда, где сервер уже написан на Dart или где хотят держать клиент и сервер на одном языке силами одной команды. Покрываю код тестами, описываю эндпоинты и оставляю то, что реально запускается и живёт дальше без меня.
— REST и HTTP API на shelf и фреймворках уровня Serverpod
— Консольные инструменты, демоны и автоматизация для CI
— Кодогенерация через build_runner и source_gen
— Базы данных, миграции и пул подключений (Postgres и прочие)
— Авторизация, проверка данных, логи и обработка ошибок
— Компиляция Dart в единый нативный бинарник
Отдельное направление у меня, это оснастка для команд разработки. Готовлю консольные приложения с разбором параметров, вложенными командами, наглядным выводом и правильными кодами завершения, чтобы они предсказуемо работали в скриптах и на CI. Много опираюсь на встроенную систему сборки: build_runner и source_gen генерируют типобезопасную сериализацию, клиентские обёртки и шаблонный код, который вручную быстро расходится с реальностью. Если нужен внутренний демон, инструмент миграций, загрузчик данных или прослойка между сервисами, отдаю компактный статически типизированный бинарник, собранный в один файл без внешних зависимостей.
По честному про рамки: идеальные мобильные интерфейсы и переезд на Node либо Go, это не ко мне. Прихожу туда, где сервер уже написан на Dart или где хотят держать клиент и сервер на одном языке силами одной команды. Покрываю код тестами, описываю эндпоинты и оставляю то, что реально запускается и живёт дальше без меня.
— REST и HTTP API на shelf и фреймворках уровня Serverpod
— Консольные инструменты, демоны и автоматизация для CI
— Кодогенерация через build_runner и source_gen
— Базы данных, миграции и пул подключений (Postgres и прочие)
— Авторизация, проверка данных, логи и обработка ошибок
— Компиляция Dart в единый нативный бинарник