[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"technologies":3,"\u002Fservices\u002Fteam-augmentation":167,"service-parent:\u002Fservices\u002Fteam-augmentation":420,"service-children:\u002Fservices\u002Fteam-augmentation":427,"glossary":428},[4,10,15,21,26,32,38,43,48,53,58,63,68,73,77,82,87,92,97,103,108,113,118,123,128,133,138,143,147,152,157,162],{"title":5,"description":6,"slug":7,"category":8,"icon":9},"Android","Каждое наше приложение выходит и на Android — платформенные API, фоновое выполнение, разрешения и требования магазина вместе с ними.","android","framework","logos:android-icon",{"title":11,"description":12,"slug":13,"category":8,"icon":14},"Angular","Фронтенд-фреймворк, в котором мы работаем, когда продукт уже на Angular, — строгая структура, подходящая большим долгоживущим приложениям.","angular","logos:angular-icon",{"title":16,"description":17,"slug":18,"category":19,"icon":20},"Dart","Язык, на котором написано каждое наше Flutter-приложение, — строгая null safety, полноценный pattern matching и компиляция в нативный код и веб.","dart","language","logos:dart",{"title":22,"description":23,"slug":24,"category":8,"icon":25},"Django","Python-фреймворк, который мы берём, когда продукту нужны админка, аутентификация и модель данных в первый же день, а не самописный сервис.","django","logos:django-icon",{"title":27,"description":28,"slug":29,"category":30,"icon":31},"Docker","Каждый наш сервис поставляется в виде контейнера, поэтому на ноутбуке, в CI и в продакшене работает один и тот же артефакт, а не три разных.","docker","infrastructure","logos:docker-icon",{"title":33,"description":34,"slug":35,"category":36,"icon":37},"Fastlane","Автоматизация релизов в нашей мобильной разработке — подпись, сборки и загрузка в сторы идут из CI, а не с ноутбука одного инженера в день релиза.","fastlane","tools","logos:fastlane",{"title":39,"description":40,"slug":41,"category":8,"icon":42},"Flutter","Наш основной мобильный стек с 2018 года — одна кодовая база на Dart для iOS, Android, веба и десктопа без отдельной команды под каждую платформу.","flutter","logos:flutter",{"title":44,"description":45,"slug":46,"category":36,"icon":47},"Git","Все проекты, к которым мы прикасаемся, живут в Git — ревью пул-реквестов, CI на каждой ветке и история, понятная и спустя месяцы.","git","logos:git-icon",{"title":49,"description":50,"slug":51,"category":19,"icon":52},"Go","Наш бэкенд-язык для real-time API и сервисов под нагрузкой — маленькие бинарники, быстрая сборка и конкурентность, которая остаётся читаемой.","go","logos:gopher",{"title":54,"description":55,"slug":56,"category":30,"icon":57},"Google Cloud","Облако, в котором работают наши продакшен-нагрузки, — управляемый Kubernetes, хранилище и сеть без серверов, которые надо обслуживать руками.","gcp","logos:google-cloud",{"title":59,"description":60,"slug":61,"category":36,"icon":62},"Gradle","Система сборки, через которую проходит каждый Android-релиз, — флейворы, конфигурации подписи и вся обвязка зависимостей под Flutter-приложением.","gradle","logos:gradle",{"title":64,"description":65,"slug":66,"category":30,"icon":67},"Helm","Так мы упаковываем деплой в Kubernetes — сервис, конфигурация, секреты и ingress как одна версионируемая единица, которую можно выкатить и откатить.","helm","logos:helm",{"title":69,"description":70,"slug":71,"category":19,"icon":72},"Kotlin","То, что мы берём, когда Flutter-приложению нужен настоящий Android под ним, — platform channels, фоновые задачи и интеграции с нативными SDK.","kotlin","logos:kotlin-icon",{"title":74,"description":75,"slug":76,"category":8,"icon":72},"Kotlin Multiplatform","Общая бизнес-логика для iOS и Android, а нативный интерфейс у каждой платформы свой, — альтернатива, когда Flutter не подходит.","kmp",{"title":78,"description":79,"slug":80,"category":30,"icon":81},"Kubernetes","Так мы запускаем сервисы в продакшене — деплой в Helm-чартах, откатываемые выкатки и масштабирование, для которого не нужен человек в три ночи.","kubernetes","logos:kubernetes",{"title":83,"description":84,"slug":85,"category":30,"icon":86},"NATS","Лёгкий обмен сообщениями между сервисами — publish\u002Fsubscribe и request\u002Freply без эксплуатационного веса полноценного кластера брокера.","nats","logos:nats-icon",{"title":88,"description":89,"slug":90,"category":8,"icon":91},"Nuxt","Vue с серверным рендерингом, роутингом и SEO из коробки — так мы делаем сайты и веб-приложения, которые должны быстро грузиться и индексироваться.","nuxt","logos:nuxt-icon",{"title":93,"description":94,"slug":95,"category":19,"icon":96},"PHP","Там, где PHP-бэкенд уже есть: дорабатываем его, интегрируемся с ним и делаем мобильные и веб-клиенты, которые он обслуживает.","php","logos:php",{"title":98,"description":99,"slug":100,"category":101,"icon":102},"PostgreSQL","Наша база данных по умолчанию — от проектирования схемы до настройки индексов мы берём её, если у продукта нет конкретной причины взять другую.","postgres","database","logos:postgresql",{"title":104,"description":105,"slug":106,"category":19,"icon":107},"Python","Наш язык для бэкендов, работы с данными и AI-интеграций — включая Python-биндинги, которые мы выпускаем к собственным инструментам на Rust.","python","logos:python",{"title":109,"description":110,"slug":111,"category":8,"icon":112},"React","Фронтенд-библиотека, в которой мы работаем, когда продукт уже на React, — компоненты, хуки и выросшая вокруг них экосистема.","react","logos:react",{"title":114,"description":115,"slug":116,"category":101,"icon":117},"Redis","Место для данных, которые должны быть быстрыми и которые не жалко пересчитать, — кэши, сессии, лимиты и очереди фоновых задач.","redis","logos:redis",{"title":119,"description":120,"slug":121,"category":19,"icon":122},"Ruby","Язык, на котором написана автоматизация наших мобильных релизов, — лейны Fastlane, кастомные действия и связка с CI, доставляющая сборки в сторы.","ruby","logos:ruby",{"title":124,"description":125,"slug":126,"category":19,"icon":127},"Rust","Куда мы идём, когда важны и скорость, и корректность, — рендеринг документов, CLI-инструменты и сервисы, которые обязаны оставаться быстрыми и предсказуемыми.","rust","simple-icons:rust",{"title":129,"description":130,"slug":131,"category":101,"icon":132},"SQLite","База данных, которая поставляется внутри приложения, — локальные кэши, offline-first хранилище и всё, что должно работать без сети.","sqlite","logos:sqlite",{"title":134,"description":135,"slug":136,"category":8,"icon":137},"Strapi","Headless CMS, к которой мы обращаемся, когда контент должны вести сами редакторы, — готовая админка и чистый API вместо самописных.","strapi","logos:strapi-icon",{"title":139,"description":140,"slug":141,"category":19,"icon":142},"Swift","То, что мы берём, когда Flutter-приложению нужен настоящий iOS под ним, — platform channels, интеграции нативных SDK, виджеты и App Clips.","swift","logos:swift",{"title":144,"description":145,"slug":146,"category":8,"icon":142},"SwiftUI","UI-фреймворк Apple, на котором мы делаем нативные поверхности, недоступные Flutter-приложению, — виджеты, App Clips и расширения.","swiftui",{"title":148,"description":149,"slug":150,"category":8,"icon":151},"Tailwind CSS","Так мы стилизуем весь фронтенд — утилитарные классы и дизайн-токены вместо таблицы стилей, которая только растёт и никогда не чистится.","tailwind","logos:tailwindcss-icon",{"title":153,"description":154,"slug":155,"category":19,"icon":156},"TypeScript","Стандарт для всего, что мы пишем для браузера и для Node-сервисов, — типы ловят ошибки интеграции раньше, чем код доходит до ревью.","typescript","logos:typescript-icon",{"title":158,"description":159,"slug":160,"category":8,"icon":161},"Vue","Наш фронтенд-фреймворк для админок, дашбордов мерчантов и веб-приложений, которые должны оставаться поддерживаемыми годами, а не спринтами.","vue","logos:vue",{"title":163,"description":164,"slug":165,"category":36,"icon":166},"Whisper","Открытая модель распознавания речи от OpenAI — движок транскрипции для голосового ввода, который работает и как бэкенд-сервис, и прямо на устройстве в приложении.","whisper","simple-icons:openai",{"id":168,"title":169,"body":170,"description":392,"extension":393,"footerCta":394,"headingCta":408,"image":412,"meta":415,"metaDescription":416,"metaTitle":417,"navigation":418,"ogDescription":419,"parent":420,"path":421,"seo":422,"slug":423,"stem":424,"updated":425,"__hash__":426},"services_ru\u002Fservices\u002Fteam-augmentation.md","Расширение команды на Flutter",{"type":171,"value":172,"toc":383},"minimark",[173,178,188,202,206,210,213,219,231,235,238,273,277,280,285,317,321,332,336,357,361,364],[174,175,177],"h2",{"id":176},"что-такое-flutter-staff-augmentation","Что такое Flutter staff augmentation",[179,180,181,182,187],"p",{},"Flutter ",[183,184,186],"term",{"slug":185},"staff-augmentation","staff augmentation"," — это модель найма, при которой проверенные Flutter-инженеры входят в вашу существующую команду и работают под вашим управлением — в вашем репозитории, спринтах и инструментах, — а трудоустройством, бенефитами и содержанием пула занимаемся мы. Вы получаете senior-инженеров на Flutter за недели вместо месяцев, которые уходят на наём в штат, и без долгосрочных обязательств перед штатным сотрудником. Модель создана для команд, у которых уже есть инженерное руководство и не хватает только рук на Flutter — чтобы успеть к дедлайну, закрыть пробел в навыках или гибко менять состав под роадмап.",[179,189,190,191,196,197,201],{},"Если вы хотите передать продукт с понятным объёмом и полностью переложить ответственность за поставку на нас — это уже ",[192,193,195],"a",{"href":194},"\u002Fservices\u002Fflutter-app-development","разработка приложений на Flutter",". Не уверены, какая модель подходит? Мы разобрали это честно в посте ",[192,198,200],{"href":199},"\u002Fblog\u002Fhire-flutter-developers-2026","«Как нанять Flutter-разработчиков в 2026 году»",".",[203,204],"statistics-grid",{":items":205},"[{\"icon\": \"lucide:users\", \"value\": \"6\", \"label\": \"Flutter-инженеров\", \"description\": \"Senior-разработчики, готовые встроиться в вашу команду\"}, {\"icon\": \"lucide:award\", \"value\": \"8+ лет\", \"label\": \"Опыт во Flutter\", \"description\": \"Пишем на Flutter с 2018 года, в разработке с 2010\"}, {\"icon\": \"lucide:clock\", \"value\": \"2-4 нед\", \"label\": \"Срок онбординга\", \"description\": \"От подбора до продуктивности в вашем коде\"}, {\"icon\": \"lucide:globe\", \"value\": \"4+ ч\", \"label\": \"Пересечение по времени\", \"description\": \"С рабочими часами ЕС и востока США\"}]",[174,207,209],{"id":208},"модели-сотрудничества-выберите-насколько-хотите-управлять-сами","Модели сотрудничества: выберите, насколько хотите управлять сами",[179,211,212],{},"Staff augmentation — один из трёх способов работать с нами. Какой из них подойдёт, зависит от того, какую часть поставки вы хотите взять на себя.",[214,215],"features-table",{":heading":216,":rows":217,":top-left-label":218},"[{\"label\": \"Staff Augmentation\", \"hightlightLabel\": \"Максимум гибкости\"}, {\"label\": \"Выделенная команда\"}, {\"label\": \"Проектная разработка\"}]","[{\"label\": \"Кто управляет\", \"cells\": [{\"text\": \"Вы — ваши лиды и процесс\", \"color\": \"success\", \"icon\": \"lucide:check-circle\"}, {\"text\": \"Самоуправляемая команда с нашим лидом\", \"color\": \"neutral\"}, {\"text\": \"Мы — полная ответственность за поставку\", \"color\": \"success\", \"icon\": \"lucide:check-circle\"}]}, {\"label\": \"Когда подходит\", \"cells\": [{\"text\": \"Есть инженерное руководство, нужны руки\", \"color\": \"neutral\"}, {\"text\": \"Нужен результат, но нет Flutter-управления\", \"color\": \"neutral\"}, {\"text\": \"Чёткий объём и фиксированный дедлайн\", \"color\": \"neutral\"}]}, {\"label\": \"Скорость старта\", \"cells\": [{\"text\": \"От дней до 2-4 недель на инженера\", \"color\": \"success\", \"icon\": \"lucide:check-circle\"}, {\"text\": \"2-4 недели на сборку команды\", \"color\": \"warning\", \"icon\": \"lucide:minus\"}, {\"text\": \"1-3 недели до старта\", \"color\": \"success\", \"icon\": \"lucide:check-circle\"}]}, {\"label\": \"Гибкость\", \"cells\": [{\"text\": \"Масштабирование вверх\u002Fвниз помесячно\", \"color\": \"success\", \"icon\": \"lucide:check-circle\"}, {\"text\": \"Изменение состава команды на вехах\", \"color\": \"warning\", \"icon\": \"lucide:minus\"}, {\"text\": \"Только согласованный объём\", \"color\": \"warning\", \"icon\": \"lucide:minus\"}]}, {\"label\": \"Модель оплаты\", \"cells\": [{\"text\": \"За инженера, помесячно\", \"color\": \"neutral\"}, {\"text\": \"За команду, помесячно\", \"color\": \"neutral\"}, {\"text\": \"Фиксированная стоимость проекта\", \"color\": \"neutral\"}]}]","Модель",[220,221,224],"info-box",{":leading-icon":222,":title":223},"lucide:triangle-alert","Когда augmentation НЕ подходит",[179,225,226,227,230],{},"Staff augmentation работает, только если вы можете управлять инженерами — есть кому владеть архитектурой, ревьюить PR и расставлять приоритеты. Если такого ресурса нет, augmentation-инженеры начнут работать вразнобой, и результат окажется хуже, чем у агентства. В этом случае выбирайте ",[192,228,229],{"href":194},"проектную разработку"," и отдавайте ответственность за результат нам. Честность экономит ваши деньги в любом случае.",[174,232,234],{"id":233},"как-это-работает","Как это работает",[179,236,237],{},"От первого звонка до продуктивного инженера в вашем коде — пять шагов.",[239,240,241,249,255,261,267],"ol",{},[242,243,244,248],"li",{},[245,246,247],"strong",{},"Расскажите о задаче и стеке."," Роль, уровень, ваша архитектура и задача, которую нужно закрыть.",[242,250,251,254],{},[245,252,253],{},"Мы подбираем проверенных инженеров."," Шорт-лист из нашего пула — только те, кто подходит под стек и домен.",[242,256,257,260],{},[245,258,259],{},"Вы собеседуете и одобряете."," Решение за вами; никто не входит в команду без вашего «да».",[242,262,263,266],{},[245,264,265],{},"Онбординг за 2–4 недели."," Инженер подключается к репозиторию, спринтам и инструментам и начинает выпускать фичи.",[242,268,269,272],{},[245,270,271],{},"Масштабируйте вверх или вниз."," Добавляйте инженеров на пик и отпускайте, когда работа сделана, — на месячных условиях.",[174,274,276],{"id":275},"почему-наши-flutter-инженеры","Почему наши Flutter-инженеры",[179,278,279],{},"Когда человек входит в вашу команду, вы доверяете его суждениям о вашем коде. Мы проверяем то, что реально отличает хорошего инженера, а не ключевые слова в резюме.",[281,282],"features",{":items":283,":title":284},"[{\"label\": \"Реально выпущенные приложения\", \"description\": \"Живут в App Store и Google Play — финтех, real-time и потребительские приложения, а не слайды\"}, {\"label\": \"След в open-source\", \"description\": \"Опубликованные пакеты на pub.dev и контрибьюции, которыми пользуются разработчики по всему миру\"}, {\"label\": \"Владение архитектурой и state management\", \"description\": \"Обоснованные мнения о Riverpod, BLoC и Provider — и когда что применять\"}, {\"label\": \"Дисциплина тестирования и CI\u002FCD\", \"description\": \"Автосборки, подпись, выкладка в сторы, feature flags и поэтапные раскатки\"}]","Что доказал каждый наш инженер",[179,286,287,288,292,293,297,298,302,303,307,308,312,313,201],{},"Посмотреть, какие продукты выпускают наши инженеры, можно в ",[192,289,291],{"href":290},"\u002Fportfolio","портфолио"," — насыщенный графиками финтех-интерфейс ",[192,294,296],{"href":295},"\u002Fportfolio\u002Fextraetf","ExtraETF"," и полностью кастомная дизайн-система ",[192,299,301],{"href":300},"\u002Fportfolio\u002Farcana","Arcana"," — а также в наших ",[192,304,306],{"href":305},"\u002Fopen-source","open-source Flutter-пакетах",". С нашим augmentation вы получаете инженеров, которые уже прошли через сложные места продакшена на Flutter: ",[183,309,311],{"slug":310},"platform-channels","platform channels",", интеграцию нативных SDK и 60fps на слабых устройствах. Познакомьтесь с теми, кто войдёт в вашу команду, на ",[192,314,316],{"href":315},"\u002Fteam","странице команды",[174,318,320],{"id":319},"ставки","Ставки",[179,322,323,324,331],{},"Прозрачные помесячные ставки за инженера. Мы — команда с корнями в Восточной Европе, поэтому наши смешанные ставки лежат в диапазоне ",[245,325,326,330],{},[327,328],"price",{":value-usd":329},"{\"min\":50,\"max\":95}","\u002Fчас",": senior Flutter-инженер за долю стоимости in-house в США, без комиссий рекрутерам и долгосрочных обязательств.",[333,334],"pricing-table",{":items":335},"[{\"title\": \"Middle-инженер\", \"subtitle\": \"Уверенная поставка на вашем стеке\", \"price\": \"team-augmentation\u002Fmid\", \"terms\": \"за инженера \u002F месяц\", \"lines\": [\"3-5 лет Flutter\", \"Поставка функций в ваших спринтах\", \"Работа внутри вашей архитектуры\", \"Код-ревью и тестирование\"], \"callToAction\": {\"to\": \"\u002Fcontact?intent=staff-augmentation\", \"label\": \"Запросить разработчика\"}}, {\"highlight\": \"Чаще всего берут\", \"title\": \"Senior-инженер\", \"subtitle\": \"Ведёт фичи от начала до конца\", \"price\": \"team-augmentation\u002Fsenior\", \"terms\": \"за инженера \u002F месяц\", \"lines\": [\"5+ лет Flutter\", \"Архитектура и технические решения\", \"Platform channels и нативные SDK\", \"CI\u002FCD и релиз-инжиниринг\", \"Менторит вашу команду\"], \"callToAction\": {\"to\": \"\u002Fcontact?intent=staff-augmentation\", \"label\": \"Запросить разработчика\"}}, {\"title\": \"Lead \u002F архитектор\", \"subtitle\": \"Задаёт направление команде\", \"price\": \"team-augmentation\u002Flead\", \"terms\": \"за инженера \u002F месяц\", \"lines\": [\"8+ лет, Flutter с ранних версий\", \"Архитектура систем и приложений\", \"Ведёт выделенную команду\", \"Держит планку на код-ревью\"], \"callToAction\": {\"to\": \"\u002Fcontact?intent=staff-augmentation\", \"label\": \"Запросить разработчика\"}}]",[220,337,340],{":leading-icon":338,":title":339},"lucide:dollar-sign","Индивидуальная смета за два рабочих дня",[179,341,342,343,346,347,351,352,356],{},"Это типовые месячные диапазоны для инженера на полную занятость в вашей команде — точная ставка зависит от уровня, стека и длительности, доступны частичная занятость и команды из нескольких инженеров. Как augmentation соотносится с наймом in-house или агентства — в посте ",[192,344,345],{"href":199},"«Как нанять Flutter-разработчиков в 2026»"," и в нашем ",[192,348,350],{"href":349},"\u002Fblog\u002Fflutter-app-development-cost-2026","разборе стоимости",". ",[192,353,355],{"href":354},"\u002Fcontact?intent=staff-augmentation","Расскажите, что нужно"," — и мы пришлём смету под ваш проект.",[174,358,360],{"id":359},"часто-задаваемые-вопросы","Часто задаваемые вопросы",[179,362,363],{},"Всё, что нужно знать о расширении команды нашими Flutter-инженерами.",[365,366,368],"questions",{":items":367},"[{\"title\":\"Что такое Flutter staff augmentation?\",\"text\":\"Flutter staff augmentation — это модель, при которой вы встраиваете одного или нескольких проверенных Flutter-инженеров в свою существующую команду. Они работают в вашем репозитории, ваших спринтах и под вашим управлением, но наняты и предоставлены внешним партнёром. Это позволяет добавить senior-инженеров на Flutter за недели — без времени на рекрутинг, расходов на бенефиты и долгосрочных обязательств штатного найма.\"},{\"title\":\"Чем staff augmentation отличается от найма агентства?\",\"text\":\"При staff augmentation инженеры входят в вашу команду, и вы управляете ими каждый день, поэтому код и контекст остаются в вашем репозитории. При проектной разработке в агентстве поставкой управляет агентство и передаёт вам готовый продукт. Выбирайте augmentation, когда у вас есть инженерное руководство и не хватает рук; выбирайте проект в агентстве, когда хотите полностью передать очерченный объём.\"},{\"title\":\"Как быстро разработчик может выйти?\",\"text\":\"Проверенный инженер из нашего пула обычно выходит за несколько дней и становится продуктивным в вашем коде за две–четыре недели. Поскольку он уже знает Flutter, время на разгон уходит на ваш домен и архитектуру, а не на язык или тулинг. Это намного быстрее, чем два–четыре месяца, которые обычно занимает новый in-house-найм.\"},{\"title\":\"Сколько стоит нанять выделенного Flutter-разработчика?\",\"slot\":\"cost\",\"text\":\"Выделенный Flutter-разработчик через staff augmentation обычно стоит 560 000–1 440 000 ₽ за инженера в месяц в зависимости от уровня, при наших восточноевропейских смешанных ставках порядка 4 000–7 600 ₽\u002Fчас. Вы платите помесячную ставку без комиссий рекрутерам и долгосрочных трудовых обязательств и можете остановиться, когда работа сделана. Смету под проект пришлём за два рабочих дня.\"},{\"title\":\"Можно ли масштабировать команду вверх или вниз?\",\"text\":\"Да — гибкость и есть суть модели. Вы можете добавить инженеров на пик и отпустить их, когда работа сделана, на месячных условиях, без выходных пособий и рекрутингового цикла. Это позволяет подгонять число Flutter-инженеров под роадмап, а не держать фиксированный штат.\"},{\"title\":\"Кто управляет разработчиками?\",\"text\":\"Вы. Augmentation-инженеры работают под вашими лидами, в вашем процессе и спринтах, как любой член команды, — поэтому augmentation работает, только если у вас есть ресурс инженерного управления. Если вы предпочли бы, чтобы ответственность за результат нёс кто-то другой, лучше подойдёт выделенная команда с нашим лидом или полная проектная разработка.\"},{\"title\":\"Как вы проверяете Flutter-инженеров?\",\"text\":\"У каждого инженера, которого мы предлагаем, есть реально выпущенные приложения, живущие в App Store и Google Play, а у большинства — публичный след на pub.dev или в open-source. Мы проверяем владение архитектурой и state management, дисциплину тестирования и CI\u002FCD, опыт с platform channels и нативными SDK. Вы собеседуете и одобряете каждого инженера до его выхода — никто не попадёт в команду без вашего «да».\"}]",[369,370,372],"template",{"v-slot:cost_body":371},"",[179,373,374,375,379,380,382],{},"Выделенный Flutter-разработчик через staff augmentation обычно стоит ",[327,376],{":value-usd":377,"format":378},"{\"min\":7000,\"max\":18000}","full"," за инженера в месяц в зависимости от уровня, при наших восточноевропейских смешанных ставках порядка ",[327,381],{":value-usd":329,"format":378},"\u002Fчас. Вы платите помесячную ставку без комиссий рекрутерам и долгосрочных трудовых обязательств и можете остановиться, когда работа сделана. Смету под проект пришлём за два рабочих дня.",{"title":371,"searchDepth":384,"depth":384,"links":385},2,[386,387,388,389,390,391],{"id":176,"depth":384,"text":177},{"id":208,"depth":384,"text":209},{"id":233,"depth":384,"text":234},{"id":275,"depth":384,"text":276},{"id":319,"depth":384,"text":320},{"id":359,"depth":384,"text":360},"Добавьте senior Flutter-инженеров в команду за недели, а не месяцы","md",{"heading":395,"text":396,"buttons":397},"Готовы усилить команду?","Расскажите о своём стеке и о том, кого не хватает в команде. Мы подберём проверенных Flutter-инженеров, готовых выйти за недели, — а контроль над роадмапом остаётся у вас.",[398,404],{"to":399,"label":400,"leadingIcon":401,"color":402,"variant":403},"\u002Fcontact","Запросить разработчика","lucide:message-circle","neutral","outline",{"to":315,"label":405,"color":406,"variant":407},"Познакомиться с командой","primary","solid",[409,410],{"to":399,"label":400,"leadingIcon":401,"color":406,"variant":407},{"to":411,"label":234,"color":402,"variant":403},"#как-это-работает",{"url":413,"alt":169,"text":414},"\u002Fservices\u002Fteam-augmentation.webp","Ваша команда плюс senior Flutter-инженеры",{},"Нанимайте выделенных Flutter-разработчиков через staff augmentation: senior-инженеры в вашей команде, быстрый онбординг, масштабирование в любой момент.","Flutter staff augmentation — расширение команды",true,"Сеньоры на Flutter внутри вашей команды за недели, а не месяцы: быстрый онбординг и возможность масштабировать состав, когда меняется роадмап.",null,"\u002Fservices\u002Fteam-augmentation",{"title":169,"description":392},"team-augmentation","services\u002Fteam-augmentation","2026-07-03","DO0Tbe8HPFw_gXp8Xov_ZVBUF8zCWxL3YLal7lvtkOE",[],[429,444,457,472,486,501,517,530,543,560,573,584,594,607,619,630,639,653,666,673,687,702,715,728,741,752,763,774,787,797,810,821,835,846,860,869,880,893,906,919,932,944,956,968,978,990,1001,1015,1026,1038,1049,1062,1074],{"slug":430,"term":431,"definition":432,"category":433,"aliases":434,"links":436,"related":440,"readMore":-1,"target":442,"hasArticle":443},"aosp","AOSP","Android Open Source Project — Android без надстройки Google, который может форкнуть кто угодно. На его форках работают кассовые терминалы, киоски и автомобильные системы, а работа на этом уровне открывает части ОС, которых прикладной разработчик не видит.","platform",[435],"Android Open Source Project",[437],{"kind":438,"url":439},"website","https:\u002F\u002Fsource.android.com\u002F",[441],"host-card-emulation","\u002Fglossary#aosp",false,{"slug":445,"term":446,"definition":447,"category":433,"aliases":448,"links":449,"related":453,"readMore":-1,"target":456,"hasArticle":443},"app-clips","App Clips","Функция Apple, позволяющая запустить небольшую часть iOS-приложения — до 15 МБ — не устанавливая его целиком. Вызывается по QR-коду, NFC-метке или ссылке: для случаев, когда первое действие пользователя не должно требовать похода в App Store.",[],[450],{"kind":451,"url":452},"documentation","https:\u002F\u002Fdeveloper.apple.com\u002Fapp-clips\u002F",[454,455],"deep-linking","install-referrer","\u002Fglossary#app-clips",{"slug":458,"term":459,"definition":460,"category":433,"aliases":461,"links":462,"related":468,"readMore":-1,"target":471,"hasArticle":443},"bigquery","BigQuery","Аналитическое хранилище Google Cloud. Вы запускаете SQL по миллиардам строк, и они сканируются за секунды, а данные при этом лежат отдельно от машин, выполняющих запросы. Именно это снимает отчётность и исследование данных с базы, обслуживающей живой трафик.",[],[463,465],{"kind":438,"url":464},"https:\u002F\u002Fcloud.google.com\u002Fbigquery",{"kind":466,"url":467},"wikipedia","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FBigQuery",[469,470],"object-storage","elasticsearch","\u002Fglossary#bigquery",{"slug":473,"term":474,"definition":475,"category":476,"aliases":477,"links":481,"related":484,"readMore":-1,"target":485,"hasArticle":443},"ci-cd","CI\u002FCD","Автоматизация, которая собирает, тестирует и выкладывает каждое изменение без ручного запуска команд. В мобильной разработке это то, что превращает релиз в нажатие кнопки вместо полудня ожидания, пока освободится нужный человек.","practice",[478,479,480],"CI","непрерывная интеграция","непрерывная поставка",[482],{"kind":466,"url":483},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCI\u002FCD",[],"\u002Fglossary#ci-cd",{"slug":487,"term":488,"definition":489,"category":490,"aliases":491,"links":494,"related":497,"readMore":-1,"target":500,"hasArticle":443},"crud","CRUD","Create, read, update, delete — четыре операции, стоящие почти за каждой формой и админкой. Собирательное название для рутинной половины приложения, которая управляет данными, в отличие от частей с реальной предметной логикой.","architecture",[492,493],"Create, Read, Update, Delete","создание, чтение, обновление, удаление",[495],{"kind":466,"url":496},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCreate,_read,_update_and_delete",[498,499],"rest","graphql","\u002Fglossary#crud",{"slug":502,"term":503,"definition":504,"category":476,"aliases":505,"links":509,"related":514,"readMore":-1,"target":516,"hasArticle":443},"dev-container","Dev Container","Среда разработки, описанная один раз в devcontainer.json — ОС, инструменты и версии рантаймов, которые нужны проекту, — и открываемая одинаково внутри контейнера в редакторе любого участника, вместо инструкции по установке, которую каждый понимает по-своему.",[506,507,508],"devcontainer.json","Dev Containers","VS Code Dev Containers",[510,512],{"kind":438,"url":511},"https:\u002F\u002Fcontainers.dev\u002F",{"kind":451,"url":513},"https:\u002F\u002Fcode.visualstudio.com\u002Fdocs\u002Fdevcontainers\u002Fcontainers",[515],"container-registry","\u002Fglossary#dev-container",{"slug":470,"term":518,"definition":519,"category":433,"aliases":520,"links":523,"related":528,"readMore":-1,"target":529,"hasArticle":443},"Elasticsearch","Поисковый и аналитический движок, который индексирует записи, чтобы их можно было интерактивно фильтровать и искать, а не сканировать. К нему обращаются, когда вопрос звучит как «покажи вот эти сессии с шестью фильтрами», а не «просуммируй колонку».",[521,522],"Elastic","ELK",[524,526],{"kind":438,"url":525},"https:\u002F\u002Fwww.elastic.co\u002Felasticsearch",{"kind":466,"url":527},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FElasticsearch",[458],"\u002Fglossary#elasticsearch",{"slug":531,"term":532,"definition":533,"category":490,"aliases":534,"links":537,"related":538,"readMore":-1,"target":542,"hasArticle":443},"fan-out","Fan-out","Чтение источника один раз и доставка каждого обновления всем подписанным на него клиентам. Наивная версия пишет подписчикам в цикле и встаёт, как только один из сокетов начинает тормозить; рабочая — держит отдельный буфер на каждого клиента и отключает тех, кто не успевает.",[535,536],"веерная рассылка","фан-аут",[],[539,540,541],"websocket","pub-sub","server-sent-events","\u002Fglossary#fan-out",{"slug":544,"term":545,"definition":546,"category":476,"aliases":547,"links":550,"related":555,"readMore":-1,"target":559,"hasArticle":443},"gdpr","GDPR","Регламент ЕС о персональных данных людей в ЕС: законное основание для сбора, настоящее согласие на трекинг, право увидеть и удалить свои данные. Он следует за вашими пользователями, а не за вашими серверами: где зарегистрирована компания, значения не имеет.",[548,549],"Общий регламент по защите данных","General Data Protection Regulation",[551,553],{"kind":438,"url":552},"https:\u002F\u002Fgdpr.eu\u002F",{"kind":466,"url":554},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGeneral_Data_Protection_Regulation",[556,557,558],"pci-dss","soc-2","hipaa","\u002Fglossary#gdpr",{"slug":561,"term":562,"definition":563,"category":476,"aliases":564,"links":568,"related":571,"readMore":-1,"target":572,"hasArticle":443},"golden-test","Golden-тест","Тест, который отрисовывает виджет и сравнивает результат попиксельно с эталонным изображением. Во Flutter это самый дешёвый способ узнать, не сломал ли редизайн пустое состояние на 320pt, в тёмной теме, при 200% масштабе текста.",[565,566,567],"golden test","золотой тест","скриншотный тест",[569],{"kind":451,"url":570},"https:\u002F\u002Fapi.flutter.dev\u002Fflutter\u002Fflutter_test\u002FmatchesGoldenFile.html",[473],"\u002Fglossary#golden-test",{"slug":499,"term":574,"definition":575,"category":490,"aliases":576,"links":577,"related":582,"readMore":-1,"target":583,"hasArticle":443},"GraphQL","Язык запросов к API, где клиент сам перечисляет нужные поля и получает один ответ ровно такой формы. Он снимает избыточную выдачу, к которой дрейфуют REST-эндпоинты, и добавляет собственный режим отказа: неограниченный запрос, обходящий всю модель данных.",[],[578,580],{"kind":438,"url":579},"https:\u002F\u002Fgraphql.org\u002F",{"kind":466,"url":581},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGraphQL",[498],"\u002Fglossary#graphql",{"slug":558,"term":585,"definition":586,"category":476,"aliases":587,"links":589,"related":592,"readMore":-1,"target":593,"hasArticle":443},"HIPAA","Закон США о защищённой медицинской информации: как её можно хранить, передавать, логировать и раскрывать. Как и PCI-DSS, это архитектурное ограничение, которое выбирают в начале, а не документ, который дописывают перед запуском.",[588],"Health Insurance Portability and Accountability Act",[590],{"kind":466,"url":591},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHealth_Insurance_Portability_and_Accountability_Act",[556,544,557],"\u002Fglossary#hipaa",{"slug":595,"term":596,"definition":597,"category":490,"aliases":598,"links":601,"related":604,"readMore":-1,"target":606,"hasArticle":443},"headless-cms","Headless CMS","Система управления контентом с админкой и API, но без собственного фронтенда. Редакторы публикуют в одном месте, а сайт или приложение отрисовывает контент само — слой представления принадлежит вам, а не вендору CMS.",[599,600],"безголовая CMS","контентное API",[602],{"kind":466,"url":603},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHeadless_content_management_system",[605,498],"server-side-rendering","\u002Fglossary#headless-cms",{"slug":441,"term":608,"definition":609,"category":433,"aliases":610,"links":614,"related":617,"readMore":-1,"target":618,"hasArticle":443},"Host Card Emulation","Режим, в котором Android-телефон программно эмулирует бесконтактную карту по NFC, без аппаратного защищённого элемента. Так платит приложение-кошелёк на терминале: телефон говорит с ним по тому же протоколу EMV Contactless, что и пластиковая карта.",[611,612,613],"HCE","EMV Contactless","бесконтактные платежи",[615],{"kind":451,"url":616},"https:\u002F\u002Fdeveloper.android.com\u002Fdevelop\u002Fconnectivity\u002Fnfc\u002Fhce",[556,430],"\u002Fglossary#host-card-emulation",{"slug":620,"term":621,"definition":622,"category":433,"aliases":623,"links":624,"related":627,"readMore":-1,"target":629,"hasArticle":443},"impeller","Impeller","Движок рендеринга, на котором Flutter работает сегодня: по умолчанию на iOS с 2023 года и на Android с 2024-го. Он компилирует шейдеры заранее, а не во время первой анимации, что убрало главную видимую проблему Flutter в проде — джанк на компиляции шейдеров.",[],[625],{"kind":451,"url":626},"https:\u002F\u002Fdocs.flutter.dev\u002Fperf\u002Fimpeller",[628],"skia","\u002Fglossary#impeller",{"slug":455,"term":631,"definition":632,"category":433,"aliases":633,"links":634,"related":637,"readMore":-1,"target":638,"hasArticle":443},"Install Referrer","API Google Play, который передаёт только что установленному Android-приложению параметры кампании из ссылки, приведшей к установке. Android-половина отложенного диплинкинга и надёжный способ понять, откуда пришёл пользователь.",[],[635],{"kind":451,"url":636},"https:\u002F\u002Fdeveloper.android.com\u002Fgoogle\u002Fplay\u002Finstallreferrer",[454,445],"\u002Fglossary#install-referrer",{"slug":640,"term":641,"definition":642,"category":643,"aliases":644,"links":646,"related":651,"readMore":-1,"target":652,"hasArticle":443},"jwt","JWT","Подписанный токен, несущий свои данные внутри: сервер понимает, кому принадлежит запрос, не обращаясь к хранилищу сессий. Стандарт мобильной аутентификации. Подпись доказывает, что токен не меняли, но не скрывает его содержимое.","protocol",[645],"JSON Web Token",[647,649],{"kind":438,"url":648},"https:\u002F\u002Fjwt.io\u002F",{"kind":466,"url":650},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FJSON_Web_Token",[556],"\u002Fglossary#jwt",{"slug":654,"term":655,"definition":656,"category":476,"aliases":657,"links":661,"related":664,"readMore":-1,"target":665,"hasArticle":443},"kyc","KYC","Know Your Customer — проверки личности, которые регулируемый финансовый продукт проводит, прежде чем разрешить переводить деньги: съёмка документов, liveness, санкционный и антиотмывочный скрининг. На онбординг это влияет сильнее любого дизайн-решения.",[658,659,660],"Know Your Customer","AML","KYC\u002FAML",[662],{"kind":466,"url":663},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FKnow_your_customer",[556,544],"\u002Fglossary#kyc",{"slug":76,"term":74,"definition":667,"category":433,"aliases":668,"links":670,"related":671,"readMore":672,"target":672,"hasArticle":443},"Переиспользование бизнес-логики на Kotlin между Android, iOS и сервером, при этом интерфейс на каждой платформе остаётся нативным. Альтернатива Flutter, когда UI обязан быть нативным, а правила за ним — нет.",[669],"KMP",[],[],"\u002Ftechnologies\u002Fkmp",{"slug":674,"term":675,"definition":676,"category":677,"aliases":678,"links":681,"related":684,"readMore":-1,"target":686,"hasArticle":443},"mvp","MVP","Минимальная версия продукта, которую можно показать реальным пользователям и которая при этом отвечает на вопрос, ради которого его делали. Решение об объёме, а не о качестве: MVP всё равно обязан работать.","business",[679,680],"минимально жизнеспособный продукт","minimum viable product",[682],{"kind":466,"url":683},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMinimum_viable_product",[685],"white-label","\u002Fglossary#mvp",{"slug":688,"term":689,"definition":690,"category":643,"aliases":691,"links":695,"related":700,"readMore":-1,"target":701,"hasArticle":443},"oauth","OAuth","Стандарт, на котором держатся «Вход через Apple», Google и остальные: пользователь авторизует ваше приложение у провайдера, которому уже доверяет, а приложение получает токен вместо пароля. Никто не заводит новый пароль, и вы его не храните.",[692,693,694],"OAuth 2.0","вход через соцсети","Sign in with Apple",[696,698],{"kind":438,"url":697},"https:\u002F\u002Foauth.net\u002F2\u002F",{"kind":466,"url":699},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOAuth",[640],"\u002Fglossary#oauth",{"slug":556,"term":703,"definition":704,"category":476,"aliases":705,"links":708,"related":713,"readMore":-1,"target":714,"hasArticle":443},"PCI-DSS","Стандарт безопасности карточной индустрии, обязательный для всех, кто хранит, обрабатывает или передаёт данные карт. Большинство приложений намеренно остаются вне зоны его действия, отдавая ввод карты сертифицированному платёжному провайдеру.",[706,707],"PCI DSS","Payment Card Industry Data Security Standard",[709,711],{"kind":438,"url":710},"https:\u002F\u002Fwww.pcisecuritystandards.org\u002F",{"kind":466,"url":712},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPayment_Card_Industry_Data_Security_Standard",[640],"\u002Fglossary#pci-dss",{"slug":716,"term":717,"definition":718,"category":677,"aliases":719,"links":722,"related":725,"readMore":-1,"target":727,"hasArticle":443},"product-market-fit","Product-market fit","Момент, когда продукт доказуемо нашёл своих людей: они им пользуются, возвращаются и платят. До него разработка отвечает на вопрос, после — на спрос.",[720,721],"PMF","соответствие продукта рынку",[723],{"kind":466,"url":724},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FProduct-market_fit",[674,726],"time-to-market","\u002Fglossary#product-market-fit",{"slug":729,"term":730,"definition":731,"category":476,"aliases":732,"links":735,"related":738,"readMore":-1,"target":740,"hasArticle":443},"prompt-injection","Prompt injection","Атака, при которой текст от пользователя языковая модель читает как инструкции, а не как данные, и уходит в обход собственных правил. Родственник SQL-инъекции в эпоху LLM: возникает везде, где пользовательский ввод склеивается в промпт.",[733,734],"инъекция промпта","инъекция в промпт",[736],{"kind":466,"url":737},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPrompt_injection",[739],"rate-limiting","\u002Fglossary#prompt-injection",{"slug":540,"term":742,"definition":743,"category":490,"aliases":744,"links":747,"related":750,"readMore":-1,"target":751,"hasArticle":443},"Pub\u002FSub","Шаблон обмена сообщениями: производитель публикует событие, а любое число потребителей независимо читает его через стоящий между ними брокер. Производитель никогда их не ждёт — так путь запроса остаётся быстрым, а более медленная работа выполняется в фоне.",[745,746],"публикация\u002Fподписка","Google Cloud Pub\u002FSub",[748],{"kind":466,"url":749},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPublish%E2%80%93subscribe_pattern",[],"\u002Fglossary#pub-sub",{"slug":498,"term":753,"definition":754,"category":490,"aliases":755,"links":758,"related":761,"readMore":-1,"target":762,"hasArticle":443},"REST","Общепринятый стиль HTTP-API: URL называет ресурс, а HTTP-метод говорит, что с ним сделать. Способ по умолчанию, которым приложение общается с бэкендом, и то, что ожидает найти большинство сторонних интеграций.",[756,757],"REST API","Representational State Transfer",[759],{"kind":466,"url":760},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FREST",[539,541],"\u002Fglossary#rest",{"slug":557,"term":764,"definition":765,"category":476,"aliases":766,"links":769,"related":772,"readMore":-1,"target":773,"hasArticle":443},"SOC 2","Отчёт внешнего аудитора о том, как компания обращается с данными клиентов — безопасность, доступность, конфиденциальность, — а не сертификат, который можно купить. Корпоративные заказчики его требуют, а архитектуру он ограничивает задолго до самого аудита.",[767,768],"SOC2","System and Organization Controls",[770],{"kind":466,"url":771},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSystem_and_Organization_Controls",[556,544,558],"\u002Fglossary#soc-2",{"slug":775,"term":776,"definition":777,"category":677,"aliases":778,"links":781,"related":784,"readMore":-1,"target":786,"hasArticle":443},"saas","SaaS","Софт, который продают как постоянную подписку на размещённый у поставщика продукт, а не как разовую лицензию для установки у себя. Поставщик держит серверы, непрерывно выкатывает обновления и берёт плату за пользователя или за объём.",[779,780],"Software as a Service","ПО как услуга",[782],{"kind":466,"url":783},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSoftware_as_a_service",[785,685],"multi-tenancy","\u002Fglossary#saas",{"slug":541,"term":788,"definition":789,"category":643,"aliases":790,"links":792,"related":795,"readMore":-1,"target":796,"hasArticle":443},"Server-Sent Events","Односторонний поток от сервера к клиенту поверх обычного HTTP-соединения. Проще, чем WebSocket, и достаточен там, где только серверу есть что сказать: прогресс операции, ответ AI, приходящий токен за токеном.",[791],"SSE",[793],{"kind":466,"url":794},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FServer-sent_events",[539,498],"\u002Fglossary#server-sent-events",{"slug":628,"term":798,"definition":799,"category":433,"aliases":800,"links":803,"related":808,"readMore":-1,"target":809,"hasArticle":443},"Skia","Открытая 2D-графическая библиотека Google, которая рисует Chrome, Android и — до появления Impeller — каждый кадр Flutter. Она умеет выводить не только на экран, но и в PDF: именно это делает «печать в PDF» в Chrome.",[801,802],"Skia Graphics Engine","skia-safe",[804,806],{"kind":438,"url":805},"https:\u002F\u002Fskia.org\u002F",{"kind":466,"url":807},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSkia_Graphics_Engine",[620],"\u002Fglossary#skia",{"slug":185,"term":811,"definition":812,"category":677,"aliases":813,"links":817,"related":818,"readMore":-1,"target":820,"hasArticle":443},"Staff augmentation","Модель найма, при которой инженеры внешнего партнёра входят в вашу команду и работают под вашим управлением — в вашем репозитории, ваших спринтах, вашем процессе, — а не сдают отдельный проект. Вы покупаете ресурс; код и контекст остаются у вас.",[814,815,816],"аутстаффинг","расширение команды","выделенные разработчики",[],[819,726],"total-cost-of-ownership","\u002Fglossary#staff-augmentation",{"slug":822,"term":823,"definition":824,"category":643,"aliases":825,"links":829,"related":832,"readMore":-1,"target":834,"hasArticle":443},"tls","TLS","Слой шифрования под HTTPS. Он подтверждает, что сервер именно тот, о ком говорит его сертификат, согласует свежий ключ на сессию и шифрует всё дальнейшее — сеть между вами видит шифртекст и не может незаметно его изменить.",[826,827,828],"SSL","HTTPS","Transport Layer Security",[830],{"kind":466,"url":831},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTransport_Layer_Security",[833,640],"end-to-end-encryption","\u002Fglossary#tls",{"slug":726,"term":836,"definition":837,"category":677,"aliases":838,"links":841,"related":844,"readMore":-1,"target":845,"hasArticle":443},"Time to market","Время от решения строить продукт до момента, когда им пользуются настоящие люди. Большинство споров о стеке и объёме работ — на самом деле споры об этом числе: каждая сэкономленная неделя — это неделя выручки, обратной связи и позиции на рынке.",[839,840],"TTM","время выхода на рынок",[842],{"kind":466,"url":843},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTime_to_market",[674,819],"\u002Fglossary#time-to-market",{"slug":847,"term":848,"definition":849,"category":643,"aliases":850,"links":852,"related":857,"readMore":-1,"target":859,"hasArticle":443},"webrtc","WebRTC","Браузерный и мобильный стандарт для передачи аудио, видео и данных напрямую между двумя устройствами; серверы участвуют только в том, чтобы их познакомить. На нём строят видеозвонок внутри приложения, когда не берут готовый SDK.",[851],"Web Real-Time Communication",[853,855],{"kind":438,"url":854},"https:\u002F\u002Fwebrtc.org\u002F",{"kind":466,"url":856},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWebRTC",[858,539],"xmpp","\u002Fglossary#webrtc",{"slug":539,"term":861,"definition":862,"category":643,"aliases":863,"links":864,"related":867,"readMore":-1,"target":868,"hasArticle":443},"WebSocket","Протокол, который держит одно соединение между клиентом и сервером открытым, чтобы любая сторона могла отправить данные в любой момент, а не клиент спрашивал снова и снова. На нём работают живые котировки, чаты и статусы присутствия.",[],[865],{"kind":466,"url":866},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWebSocket",[541,498],"\u002Fglossary#websocket",{"slug":685,"term":870,"definition":871,"category":677,"aliases":872,"links":875,"related":878,"readMore":879,"target":879,"hasArticle":418},"White-label","Один продукт, выпускаемый под многими брендами. White-label платформа собирает каждому клиенту готовое к публикации приложение со своим названием, оформлением и контентом из общей кодовой базы, а не форкает проект под заказчика.",[873,874],"белый лейбл","мультитенантное приложение",[876],{"kind":466,"url":877},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWhite-label_product",[674],"\u002Fglossary\u002Fwhite-label",{"slug":858,"term":881,"definition":882,"category":643,"aliases":883,"links":886,"related":891,"readMore":-1,"target":892,"hasArticle":443},"XMPP","Открытый федеративный протокол обмена сообщениями и давняя альтернатива тому, чтобы писать чат-бэкенд самому или арендовать чужой. Он покрывает статусы присутствия, индикаторы набора и передачу файлов, а зрелые клиентские библиотеки есть под любую платформу.",[884,885],"Jabber","Extensible Messaging and Presence Protocol",[887,889],{"kind":438,"url":888},"https:\u002F\u002Fxmpp.org\u002F",{"kind":466,"url":890},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FXMPP",[847,539],"\u002Fglossary#xmpp",{"slug":894,"term":895,"definition":896,"category":677,"aliases":897,"links":901,"related":904,"readMore":-1,"target":905,"hasArticle":443},"in-app-purchase","Встроенные покупки","Продажа цифровых товаров и подписок через биллинг Apple и Google, который оба стора требуют для цифрового контента и с которого берут комиссию. Сложность никогда не в самой покупке, а в её восстановлении на новом устройстве и в честном учёте прав доступа.",[898,899,900],"in-app purchase","IAP","внутренние покупки",[902],{"kind":451,"url":903},"https:\u002F\u002Fdeveloper.apple.com\u002Fin-app-purchase\u002F",[716],"\u002Fglossary#in-app-purchase",{"slug":454,"term":907,"definition":908,"category":433,"aliases":909,"links":914,"related":917,"readMore":918,"target":918,"hasArticle":418},"Диплинкинг","Ссылка, которая открывает конкретный экран внутри установленного приложения, а не его главную или веб-страницу. Отложенный диплинкинг переживает установку: нажатие, прошедшее через магазин приложений, всё равно приводит на нужный экран.",[910,911,912,913],"deep linking","отложенный диплинкинг","Universal Links","Android App Links",[915],{"kind":466,"url":916},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMobile_deep_linking",[445,455],"\u002Fglossary\u002Fdeep-linking",{"slug":920,"term":921,"definition":922,"category":490,"aliases":923,"links":927,"related":930,"readMore":-1,"target":931,"hasArticle":443},"multi-arch-image","Мультиархитектурный образ","Один тег образа, который разрешается в разные бинарники для каждой архитектуры процессора — обычно это пара linux\u002Famd64 и linux\u002Farm64, — так что один и тот же docker pull работает без изменений и на серверах Intel\u002FAMD, и на ноутбуках с Apple Silicon.",[924,925,926],"мультиарх-сборка","multi-arch build","linux\u002Famd64 + linux\u002Farm64",[928],{"kind":451,"url":929},"https:\u002F\u002Fdocs.docker.com\u002Fbuild\u002Fbuilding\u002Fmulti-platform\u002F",[515],"\u002Fglossary#multi-arch-image",{"slug":785,"term":933,"definition":934,"category":490,"aliases":935,"links":938,"related":941,"readMore":-1,"target":943,"hasArticle":443},"Мультитенантность","Один развёрнутый бэкенд обслуживает много клиентов, и каждый видит только свои данные, конфигурацию и включённые функции, потому что контекст тенанта определяется для каждого запроса. Именно это делает линейку брендированных приложений одним продуктом, а не набором форков.",[785,936,937],"мультиарендность","тенант",[939],{"kind":466,"url":940},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMultitenancy",[685,942],"feature-flags","\u002Fglossary#multi-tenancy",{"slug":469,"term":945,"definition":946,"category":490,"aliases":947,"links":951,"related":954,"readMore":-1,"target":955,"hasArticle":443},"Объектное хранилище","Хранилище, которое держит файл целиком под ключом, а не в дереве файловой системы, — Amazon S3 и множество сервисов, совместимых с его API. Дешёвое, практически безграничное, привычное место для сырых событий, бэкапов и медиа: пишется один раз, читается редко, хранится вечно.",[948,949,950],"S3","S3-совместимое хранилище","блоб-хранилище",[952],{"kind":466,"url":953},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FObject_storage",[458],"\u002Fglossary#object-storage",{"slug":739,"term":957,"definition":958,"category":476,"aliases":959,"links":963,"related":966,"readMore":-1,"target":967,"hasArticle":443},"Ограничение частоты запросов","Предел на число запросов от одного клиента за заданный интервал. Именно он не даёт одному увлечённому пользователю, скраперу или боту потратить месячный бюджет платного API за вечер, и стоять он должен на вашей стороне интеграции.",[960,961,962],"rate limiting","рейт-лимит","троттлинг",[964],{"kind":466,"url":965},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRate_limiting",[729],"\u002Fglossary#rate-limiting",{"slug":310,"term":969,"definition":970,"category":433,"aliases":971,"links":973,"related":976,"readMore":-1,"target":977,"hasArticle":443},"Платформенные каналы","Мост, через который Flutter-приложение вызывает нативный код iOS и Android — Keychain и Keystore, биометрию, платёжные шторки, любой SDK без Dart-пакета. Работа рутинная, но настоящая, и первое место, где споткнётся инженер, не выходивший за пределы Dart.",[311,972],"method channel",[974],{"kind":451,"url":975},"https:\u002F\u002Fdocs.flutter.dev\u002Fplatform-integration\u002Fplatform-channels",[76],"\u002Fglossary#platform-channels",{"slug":979,"term":980,"definition":981,"category":643,"aliases":982,"links":985,"related":988,"readMore":-1,"target":989,"hasArticle":443},"post-quantum-cryptography","Постквантовая криптография","Алгоритмы шифрования, рассчитанные на устойчивость к будущему квантовому компьютеру; стандарты уже финализированы NIST. Мигрировать нужно до появления железа: трафик, записанный сегодня, расшифруют, когда такая машина появится.",[983,984],"PQC","постквантовое шифрование",[986],{"kind":466,"url":987},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPost-quantum_cryptography",[822,833],"\u002Fglossary#post-quantum-cryptography",{"slug":991,"term":992,"definition":993,"category":476,"aliases":994,"links":998,"related":999,"readMore":-1,"target":1000,"hasArticle":443},"staged-rollout","Поэтапная раскатка","Релиз сначала на небольшой процент пользователей и расширение только тогда, когда доля сессий без падений держится. Плохая сборка, пойманная на десяти процентах, — испорченный вечер; она же на ста процентах — испорченная неделя.",[995,996,997],"staged rollout","phased release","канареечный релиз",[],[942,473],"\u002Fglossary#staged-rollout",{"slug":515,"term":1002,"definition":1003,"category":490,"aliases":1004,"links":1010,"related":1013,"readMore":-1,"target":1014,"hasArticle":443},"Реестр контейнеров","Хранилище образов контейнеров, адресуемых по имени и тегу, — Docker Hub, GitHub Container Registry или собственный реестр облачного провайдера. Публикация сборки в реестр превращает «у меня работает» в образ, который любой может скачать и запустить без изменений.",[1005,1006,1007,1008,1009],"реестр образов","Docker registry","GHCR","ghcr.io","container registry",[1011],{"kind":451,"url":1012},"https:\u002F\u002Fdocs.github.com\u002Fen\u002Fpackages\u002Fworking-with-a-github-packages-registry\u002Fworking-with-the-container-registry",[502,920],"\u002Fglossary#container-registry",{"slug":605,"term":1016,"definition":1017,"category":490,"aliases":1018,"links":1021,"related":1024,"readMore":-1,"target":1025,"hasArticle":443},"Серверный рендеринг","Сборка страницы в готовый HTML на сервере, чтобы первый же ответ содержал контент, заголовки, метатеги и структурированные данные. Краулеры, превью ссылок и медленные устройства читают это, не выполняя JavaScript.",[1019,1020],"SSR","server-side rendering",[1022],{"kind":466,"url":1023},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FServer-side_scripting",[595],"\u002Fglossary#server-side-rendering",{"slug":833,"term":1027,"definition":1028,"category":490,"aliases":1029,"links":1033,"related":1036,"readMore":-1,"target":1037,"hasArticle":443},"Сквозное шифрование","Шифрование, которое накладывается на устройстве отправителя и снимается только на устройстве получателя, так что сервис, передающий сообщение, не может его прочитать — ни по решению суда, ни после взлома. Оно защищает содержимое, но никогда — метаданные.",[1030,1031,1032],"E2EE","end-to-end encryption","оконечное шифрование",[1034],{"kind":466,"url":1035},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FEnd-to-end_encryption",[822,640],"\u002Fglossary#end-to-end-encryption",{"slug":819,"term":1039,"definition":1040,"category":677,"aliases":1041,"links":1044,"related":1047,"readMore":-1,"target":1048,"hasArticle":443},"Совокупная стоимость владения","Во что продукт обходится за всю жизнь, а не только на этапе разработки: поддержка, обновления, ежегодные миграции на новые ОС и правила сторов, вторая команда, чтобы две кодовые базы не расходились. Обычно больше сметы на разработку и почти никогда в неё не входит.",[1042,1043],"TCO","total cost of ownership",[1045],{"kind":466,"url":1046},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTotal_cost_of_ownership",[726],"\u002Fglossary#total-cost-of-ownership",{"slug":1050,"term":1051,"definition":1052,"category":490,"aliases":1053,"links":1057,"related":1060,"readMore":-1,"target":1061,"hasArticle":443},"state-management","Управление состоянием","То, как приложение решает, где живёт значение, кому позволено его менять и какие части экрана перерисовываются, когда оно меняется. Во Flutter выбор между Riverpod, BLoC и Provider — одно из первых архитектурных решений и одно из самых трудных для пересмотра.",[1054,1055,1056],"state management","BLoC","Riverpod",[1058],{"kind":451,"url":1059},"https:\u002F\u002Fdocs.flutter.dev\u002Fdata-and-backend\u002Fstate-mgmt\u002Foptions",[561],"\u002Fglossary#state-management",{"slug":942,"term":1063,"definition":1064,"category":476,"aliases":1065,"links":1069,"related":1072,"readMore":-1,"target":1073,"hasArticle":443},"Фиче-флаги","Переключатели, которые включают и выключают функциональность из конфигурации, а не из релиза. Один бинарник ведёт себя по-разному для разных брендов, рынков и пользователей, а рискованную фичу можно погасить, не отправляя новую сборку на ревью.",[1066,1067,1068],"feature flags","фиче-флаги","feature toggle",[1070],{"kind":466,"url":1071},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FFeature_toggle",[991,685,785],"\u002Fglossary#feature-flags",{"slug":1075,"term":1076,"definition":1077,"category":490,"aliases":1078,"links":1082,"related":1085,"readMore":-1,"target":1086,"hasArticle":443},"floating-point","Числа с плавающей точкой","Двоичный формат IEEE 754, стоящий за double и float. Он не хранит 0.1 точно, поэтому 0.1 + 0.2 даёт 0.30000000000000004 — незаметно в графике и фатально в деньгах, которым место в целых минорных единицах или в decimal-типе.",[1079,1080,1081],"IEEE 754","double","плавающая запятая",[1083],{"kind":466,"url":1084},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FIEEE_754",[],"\u002Fglossary#floating-point"]