[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"technologies":3,"\u002Fservices\u002Fweb-development\u002Fadmin-dashboards":167,"service-parent:\u002Fservices\u002Fweb-development\u002Fadmin-dashboards":441,"service-children:\u002Fservices\u002Fweb-development\u002Fadmin-dashboards":747,"glossary":748},[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":406,"extension":407,"footerCta":408,"headingCta":422,"image":426,"meta":430,"metaDescription":431,"metaTitle":428,"navigation":432,"ogDescription":433,"parent":434,"path":435,"seo":436,"slug":437,"stem":438,"updated":439,"__hash__":440},"services_ru\u002Fservices\u002Fadmin-dashboards.md","Админ-панели и дашборды",{"type":171,"value":172,"toc":386},"minimark",[173,177,186,191,235,240,243,247,260,264,272,276,279,283,286,290,293,297,300,304,307,311,314,318,324,335,338,342,358,361,365,368,372],[174,175,176],"p",{},"Разработка админ-панелей — это инженерия интерфейсов, на которых бизнес работает, а не тех, которыми он себя рекламирует: дашборд, где операционная команда следит за цифрами, панель настроек, где менеджер меняет поведение продукта, бэк-офис, где поддержка находит аккаунт и чинит его. У этих инструментов нет ни лендинга, ни карточки в сторе. И они же определяют, сколько людей нужно, чтобы компания работала.",[174,178,179,180,185],{},"Мы строим их на Vue и Nuxt с TypeScript насквозь, на том же стеке, что и наша публичная ",[181,182,184],"a",{"href":183},"\u002Fservices\u002Fweb-development","веб-разработка",", но под другую цель. Админ-инструмент измеряется в сэкономленных минутах операторов и предотвращённых ошибках, а не в показателях отказов, и это меняет то, ради чего ведётся инженерия.",[187,188,190],"h3",{"id":189},"какие-продукты-мы-делаем","Какие продукты мы делаем",[192,193,194,202,208,223,229],"ul",{},[195,196,197,201],"li",{},[198,199,200],"strong",{},"Операционные дашборды"," — живые представления данных, по которым команда действует: заказы, сессии, выплаты, алерты — с фильтрами и детализацией, которые превращают стену строк в решение",[195,203,204,207],{},[198,205,206],{},"Панели конфигурации"," — интерфейсы, где изменение настройки меняет продукт: правила ценообразования, фиче-флаги, параметры кампаний, которые бэкенд читает на лету",[195,209,210,213,214,218,219],{},[198,211,212],{},"Бэк-офисы мобильных продуктов"," — веб-сторона приложения, как админка за ",[181,215,217],{"href":216},"\u002Fservices\u002Fwhitelabel-app-development","white-label парком",", который мы ведём; клиентская веб-часть — отдельная страница, ",[181,220,222],{"href":221},"\u002Fservices\u002Fweb-development\u002Fcompanion-web-app","парные веб-приложения",[195,224,225,228],{},[198,226,227],{},"Инструменты поддержки и работы с аккаунтами"," — найти пользователя, увидеть то, что видел он, исправить то, что пошло не так, — с записью каждого действия в журнал",[195,230,231,234],{},[198,232,233],{},"Кабинеты мерчантов и партнёров"," — обращённый наружу родственник админ-панели с ограниченными правами, где партнёр управляет своей частью вашей платформы",[236,237,239],"h2",{"id":238},"кто-будет-делать-вашу-админ-панель","Кто будет делать вашу админ-панель",[174,241,242],{},"Наше самое ясное доказательство — бэк-офис, управляющий настоящим парком приложений.",[187,244,246],{"id":245},"админка-которая-запускает-брендированные-приложения","Админка, которая запускает брендированные приложения",[174,248,249,250,254,255,259],{},"Для нашей ",[181,251,253],{"href":252},"\u002Fportfolio\u002Fcashback-loyalty-platform","платформы кэшбэка и лояльности"," запуск нового white-label бренда раньше был инженерной повинностью: конфигурация, идентификаторы бандлов, ресурсы для подписи, метаданные сторов, новый таргет в CI. Мы свели всё это в одно приложение на Nuxt поверх PHP-сервисов и PostgreSQL. Менеджер заполняет форму (название бренда, тема, ресурсы, функции), а система генерирует конфигурационный бандл, регистрирует приложение в ",[256,257],"term",{"slug":258},"ci-cd"," конвейере и выпускает подписанные сборки для iOS и Android. Запуск бренда превратился из многодневной инженерной задачи в форму самообслуживания, которой управляют люди, не пишущие код. Это и есть стандарт, по которому мы оцениваем админ-инструменты: панель управляет машинерией, а не описывает её.",[187,261,263],{"id":262},"построено-теми-кто-строит-и-бэкенд","Построено теми, кто строит и бэкенд",[174,265,266,267,271],{},"Админ-панель хороша ровно настолько, насколько хорош её API, и мы редко делаем одно без другого. Тот же проект, что дал описанную выше админку, дал и PHP-сервисы за ней; фронтенд ",[181,268,270],{"href":269},"\u002Fportfolio\u002Fformtastic","Formtastic"," на Nuxt работает с бэкендом на Django и Go, который мы развивали вместе с ним. Когда обе стороны в руках одной команды, «фронтенду нужен эндпоинт под это» — вопрос одного утра, а не межкомандных переговоров, и правила валидации в панели совпадают с тем, что бэкенд действительно проверяет.",[236,273,275],{"id":274},"чего-на-самом-деле-требуют-админ-инструменты","Чего на самом деле требуют админ-инструменты",[174,277,278],{},"Пять задач возникают в каждом бэк-офисе.",[187,280,282],{"id":281},"авторизация-совпадающая-с-оргструктурой","Авторизация, совпадающая с оргструктурой",[174,284,285],{},"Экран логина — это не контроль доступа. Настоящему админ-инструменту нужны роли (кто смотрит, кто редактирует, кто утверждает), проверяемые на сервере, а UI лишь отражает то, что API и так откажется выполнять. Ролевой контроль доступа мы закладываем сначала в слой API, чтобы вручную составленный запрос не мог сделать того, чего не позволила бы скрытая кнопка.",[187,287,289],{"id":288},"формы-которые-управляют-реальной-машинерией","Формы, которые управляют реальной машинерией",[174,291,292],{},"Когда отправка формы генерирует конфигурацию, двигает деньги или запускает сборочный конвейер, форма наследует инженерные стандарты машинерии за ней: валидацию, совпадающую с серверной, идемпотентную отправку, чтобы двойной клик не мог запустить два бренда, и ясные, конкретные состояния ошибок. Счастливый путь — самая простая часть.",[187,294,296],{"id":295},"таблицы-которые-переживают-реальные-данные","Таблицы, которые переживают реальные данные",[174,298,299],{},"Каждая админ-панель прекрасно выглядит на демо с двенадцатью строками и умирает на пятидесяти тысячах. Мы делаем пагинацию на сервере, уводим фильтрацию и поиск в базу данных, где есть индексы, и держим сортировку, фильтры и экспорт отзывчивыми на тех объёмах, до которых ваши операции действительно дорастут.",[187,301,303],{"id":302},"журнал-изменений-с-первого-дня","Журнал изменений с первого дня",[174,305,306],{},"Кто изменил ставку выплат, когда и с какого значения на какое? В админ-инструменте это функция, а не форензика. Действия логируются с автором, временем и значениями «до» и «после», потому что бэк-офис, где изменения анонимны, превращается в место, где менять что-либо не позволено никому.",[187,308,310],{"id":309},"скучно-намеренно","Скучно — намеренно",[174,312,313],{},"Внутренним инструментам не нужно SEO и чаще всего не нужен серверный рендеринг: обычное single-page приложение на Vue за логином — часто правильное решение, и мы так и скажем, вместо того чтобы выставлять счёт за фреймворк, который вам не нужен. Там, где Nuxt отрабатывает своё — когда его серверные роуты заменяют отдельный бэкенд или публичная и внутренняя части живут в одной кодовой базе, — мы его используем, как сделали в админке парка. Этот выбор — инженерное решение, и в предложении он проговаривается явно.",[236,315,317],{"id":316},"как-мы-работаем","Как мы работаем",[174,319,320,323],{},[198,321,322],{},"Проект с фиксированным объёмом."," Мы ведём инструмент от картирования процессов до деплоя, включая негламурные части вроде миграции данных из таблиц, которые он заменяет.",[174,325,326,329,330,334],{},[198,327,328],{},"Staff augmentation."," Наши инженеры входят в вашу команду и строят бэк-офис рядом с вашим продуктом — см. ",[181,331,333],{"href":332},"\u002Fservices\u002Fteam-augmentation","расширение команды",".",[174,336,337],{},"В обоих случаях смету под задачу мы присылаем в течение двух рабочих дней после того, как разберёмся в требованиях.",[236,339,341],{"id":340},"сколько-стоит-админ-панель","Сколько стоит админ-панель",[174,343,344,345,348,349,354,355,334],{},"Админ-панель — это веб-приложение с авторизацией, и оценивается она по тем же опубликованным тарифам, что и на странице ",[181,346,347],{"href":183},"веб-разработки",": компактный бэк-офис с аутентификацией, ролевым доступом и основными таблицами и формами попадает в тариф веб-приложения, ",[350,351],"service-price",{"format":352,"service":353},"full","web-development\u002Fapp",", а мультитенантный портал или панель, вплетённая в большую платформу, оценивается как работа уровня SaaS — ",[350,356],{"format":352,"service":357},"web-development\u002Fsaas",[174,359,360],{},"Это те же ключи, из которых рисуется таблица цен пилларной страницы, поэтому разойтись они не могут. Что двигает цифру внутри диапазона: сколько ролей и процессов покрывает инструмент, какая часть бэкенда уже существует и панель лишь читает ваши системы — или управляет ими.",[236,362,364],{"id":363},"частые-вопросы","Частые вопросы",[174,366,367],{},"Что чаще всего спрашивают команды, заказывающие админ-панели и внутренние дашборды.",[369,370],"questions",{":items":371},"[{\"title\":\"Чем админ-панель отличается от дашборда?\",\"text\":\"Дашборд показывает: живые метрики, таблицы, детализацию, на которых строится решение. Админ-панель действует: её формы и элементы управления меняют то, что делает продукт, — конфигурацию, контент, цены, учётные записи. Большинство настоящих бэк-офисов — и то и другое, и инженерная разница важна: трудные задачи дашборда — запросы и объёмы данных, трудные задачи админ-панели — авторизация, валидация и гарантия, что отправленная форма не может навредить. Мы строим их как один инструмент, применяя обе дисциплины.\"},{\"title\":\"Сколько стоит разработка админ-панели?\",\"text\":\"Компактный бэк-офис с аутентификацией, ролевым контролем доступа и основными таблицами и формами поверх существующего API обычно стоит от 1 200 000 до 3 200 000 рублей и занимает от одного до трёх месяцев: тот же опубликованный тариф веб-приложения, что и на нашей странице веб-разработки. Мультитенантный партнёрский портал или панель, которая оркеструет реальную машинерию, оценивается как работа уровня SaaS — свыше 4 000 000. Стоимость двигает в первую очередь количество отдельных ролей и процессов, а не число экранов.\"},{\"title\":\"Вы делаете и бэкенд или только интерфейс?\",\"text\":\"И то и другое, и обычно вместе. Админ-панель хороша ровно настолько, насколько хорош её API, поэтому проект, как правило, охватывает эндпоинты, слой авторизации и интерфейс как одну работу. Для white-label платформы, которую мы ведём, одна и та же команда построила админку на Nuxt и PHP-сервисы за ней, и именно поэтому отправка формы там может безопасно генерировать конфигурацию и запускать подписанные мобильные сборки. Если API у вас уже есть, мы строим поверх него и честно говорим, где его нужно менять.\"},{\"title\":\"Vue или Nuxt для внутреннего инструмента?\",\"text\":\"Для инструмента, целиком живущего за логином, честный ответ — часто обычное single-page приложение на Vue: индексировать нечего, поэтому серверный рендеринг добавляет движущиеся части, не добавляя ценности. Nuxt отрабатывает своё, когда его серверные роуты могут заменить отдельный бэкенд на небольшом продукте или когда внутренняя и публичная части делят одну кодовую базу. Мы работаем с обоими и проговариваем выбор в предложении явно, а не берём более тяжёлый инструмент по умолчанию.\"},{\"title\":\"Смогут ли нетехнические сотрудники управлять инструментами, которые вы строите?\",\"text\":\"Это проектная цель, по которой мы оцениваем собственную работу. Админка, которую мы построили для white-label платформы приложений, позволяет менеджерам без навыков программирования запускать полностью брендированное, готовое к публикации мобильное приложение, заполнив форму: система генерирует конфигурацию, регистрирует таргет в CI-конвейере и выпускает подписанные сборки. Мера качества бэк-офиса — убирает ли он инженера из цепочки, и каждый сценарий мы проектируем по этому стандарту.\"},{\"title\":\"Как вы обеспечиваете безопасность админ-панели?\",\"text\":\"Авторизация проверяется на сервере, а не просто прячется в интерфейсе; сессии — в httpOnly, secure, SameSite cookie; ролевой контроль доступа — на уровне API; и журнал изменений, фиксирующий, кто, что и когда поменял. Админ-инструменты концентрируют привилегии, что делает их мишенью. Если у вас есть готовая панель, в которой вы не уверены, наш аудит AI-кода отдельно проверяет аутентификацию, работу с сессиями и утечки данных.\"}]",[174,373,374,375,379,380,383,384,334],{},"Посмотрите, ",[181,376,378],{"href":377},"\u002Fblog\u002Fwhite-label-app-platform-flutter","как устроена админка парка",", в разборе платформы, почитайте про ",[181,381,382],{"href":216},"white-label услугу",", к которой она относится, или начните с пилларной страницы ",[181,385,347],{"href":183},{"title":387,"searchDepth":388,"depth":388,"links":389},"",2,[390,392,396,403,404,405],{"id":189,"depth":391,"text":190},3,{"id":238,"depth":388,"text":239,"children":393},[394,395],{"id":245,"depth":391,"text":246},{"id":262,"depth":391,"text":263},{"id":274,"depth":388,"text":275,"children":397},[398,399,400,401,402],{"id":281,"depth":391,"text":282},{"id":288,"depth":391,"text":289},{"id":295,"depth":391,"text":296},{"id":302,"depth":391,"text":303},{"id":309,"depth":391,"text":310},{"id":316,"depth":388,"text":317},{"id":340,"depth":388,"text":341},{"id":363,"depth":388,"text":364},"Бэк-офисы, стоящие за продуктами, — ролевой доступ, формы, которые управляют реальной машинерией, и таблицы, остающиеся удобными на любом объёме, от команды, чья админка запускает целые парки приложений","md",{"heading":409,"text":410,"buttons":411},"Вашей команде нужен бэк-офис получше?","Расскажите, что ваши операторы сегодня делают в таблицах, чатах и тикетах на инженеров. Мы честно скажем, каким частям нужна админ-панель и что потребуется, чтобы её построить.",[412,418],{"to":413,"label":414,"leadingIcon":415,"color":416,"variant":417},"\u002Fcontact?intent=web-development","Записаться на консультацию","lucide:message-circle","neutral","outline",{"to":252,"label":419,"color":420,"variant":421},"Смотреть админку в деле","primary","solid",[423,424],{"to":413,"label":414,"leadingIcon":415,"color":420,"variant":421},{"to":252,"label":425,"color":416,"variant":417},"Смотреть наши работы",{"url":427,"alt":428,"text":429},"\u002Fservices\u002Fadmin-dashboards.webp","Разработка админ-панелей и дашбордов","Бэк-офис, из которого ваша команда ведёт бизнес",{},"Разработка админ-панелей и дашбордов на Vue и Nuxt: ролевой доступ, журнал изменений и бэк-офисы, которыми управляют нетехнические сотрудники. Открытые цены.",true,"Бэк-офисы, на которых держатся реальные операции, — от команды, чья админка позволяет менеджерам запускать полностью брендированные мобильные приложения без участия инженера.","web-development","\u002Fservices\u002Fweb-development\u002Fadmin-dashboards",{"title":169,"description":406},"admin-dashboards","services\u002Fadmin-dashboards","2026-09-05","hlK7NUaWvPKeJcyWUoRLorwrYivd74rQMtMgLSiEBo8",{"id":442,"title":443,"body":444,"description":719,"extension":407,"footerCta":720,"headingCta":730,"image":736,"meta":739,"metaDescription":740,"metaTitle":741,"navigation":432,"ogDescription":742,"parent":743,"path":183,"seo":744,"slug":434,"stem":745,"updated":439,"__hash__":746},"services_ru\u002Fservices\u002Fweb-development.md","Веб-разработка",{"type":171,"value":445,"toc":706},[446,450,453,472,476,480,483,487,490,494,497,501,511,515,528,533,546,550,553,597,601,604,610,616,627,657,661,664,668,675,677,680,703],[236,447,449],{"id":448},"современная-веб-разработка-на-nuxt-и-ssr","Современная веб-разработка на Nuxt и SSR",[174,451,452],{},"Мы создаём быстрые, понятные поисковикам веб-приложения на современном стеке с серверным рендерингом. Не конструктор сайтов и не раздутый single-page app, который отдаёт Google пустой экран, — настоящие приложения, которые рендерятся на сервере, быстро грузятся на телефоне и ранжируются.",[174,454,455,456,459,460,464,465,467,468,471],{},"Насколько мы уверены в этом стеке? ",[198,457,458],{},"Этот самый сайт собран на нём"," — Nuxt 4, ",[256,461,463],{"slug":462},"server-side-rendering","серверный рендеринг",", Tailwind CSS и Nuxt Content. Мы выбрали эти инструменты не для лендинга — мы ведём на них собственный бизнес. И делали на них проекты для клиентов, включая ",[181,466,270],{"href":269},", платформу для создания форм на Nuxt, и ",[181,469,470],{"href":252},"платформу лояльности с кешбэком",", чья админка на Nuxt запускает брендированные приложения поверх PHP-сервисов.",[473,474],"statistics-grid",{":items":475},"[{\"icon\": \"lucide:search\", \"value\": \"SSR\", \"label\": \"Индексируется сразу\", \"description\": \"Серверный HTML, который краулеры читают без запуска JavaScript\"}, {\"icon\": \"lucide:gauge\", \"value\": \"90+\", \"label\": \"Цель по Lighthouse\", \"description\": \"Мы строим под Core Web Vitals, а не против них\"}, {\"icon\": \"lucide:smartphone\", \"value\": \"Mobile-First\", \"label\": \"Адаптивно везде\", \"description\": \"Сначала под телефоны, затем — десктоп\"}, {\"icon\": \"lucide:code\", \"value\": \"Type-Safe\", \"label\": \"TypeScript насквозь\", \"description\": \"От слоя API до пропсов компонентов\"}]",[236,477,479],{"id":478},"наш-стек-и-почему-nuxt-ssr","Наш стек — и почему Nuxt + SSR",[174,481,482],{},"Выбор фреймворка — это разница между сайтом, который Google читает мгновенно, и тем, который он с трудом рендерит. Вот на чём мы строим и почему.",[187,484,486],{"id":485},"серверный-рендеринг-для-seo","Серверный рендеринг для SEO",[174,488,489],{},"Классический single-page app отдаёт пустую HTML-оболочку и просит браузер собрать страницу с помощью JavaScript. От этого страдают краулеры, превью ссылок и медленные устройства. Nuxt рендерит полный HTML на сервере, поэтому контент присутствует уже в первом ответе — мета-теги, заголовки, структурированные данные и текст, всё до того, как выполнится хоть строка клиентского JavaScript. Это самый мощный рычаг внутренней SEO-оптимизации, который может дать фреймворк, и здесь он по умолчанию, а не как надстройка.",[187,491,493],{"id":492},"tailwind-для-быстрого-единообразного-ui","Tailwind для быстрого, единообразного UI",[174,495,496],{},"Мы стилизуем на Tailwind CSS — utility-first, без хаотичных глобальных стилей, без мёртвого CSS, который грузится пользователю. Он держит дизайн-систему единой на всех страницах, делает адаптивные брейкпоинты явными и отгружает только реально используемые классы. Результат — UI, который быстро собирать, легко поддерживать и который мало весит.",[187,498,500],{"id":499},"nuxt-content-для-контентных-сайтов","Nuxt Content для контентных сайтов",[174,502,503,504,510],{},"Для маркетинговых сайтов, документации и блогов ",[181,505,509],{"href":506,"rel":507},"https:\u002F\u002Fcontent.nuxt.com",[508],"nofollow","Nuxt Content"," превращает Markdown в полностью отрендеренные на сервере страницы с типобезопасными схемами — ровно так работают блог и страницы услуг этого сайта. Редакторы пишут Markdown; сайт остаётся быстрым и индексируемым; разработчики держат всё под контролем версий. База данных не нужна.",[187,512,514],{"id":513},"strapi-когда-нужна-headless-cms","Strapi, когда нужна headless CMS",[174,516,517,518,522,523,527],{},"Когда контентом должны владеть нетехнические редакторы — товары, объявления, кампании, — мы подключаем ",[181,519,134],{"href":520,"rel":521},"https:\u002F\u002Fstrapi.io",[508],", open-source ",[256,524,526],{"slug":525},"headless-cms","headless CMS",". Ваша команда получает удобную админку; фронтенд на Nuxt получает данные через чистый API и рендерит их на сервере. Вы получаете редакторскую свободу без потери производительности и SEO, а данные и хостинг остаются вашими.",[529,530],"features",{":items":531,":title":532},"[{\"label\": \"Мобильная совместимость\", \"description\": \"Mobile-first, адаптивные макеты, которые работают на любом экране от телефона до широкоформатного — протестировано, а не на авось\"}, {\"label\": \"Правильная аутентификация\", \"description\": \"Сессии, OAuth и JWT с реальными серверными проверками авторизации — а не экран входа с открытым бэкдором\"}, {\"label\": \"Безопасные cookie и согласие\", \"description\": \"httpOnly, secure, SameSite cookie для сессий плюс обработка согласия по GDPR для аналитики и трекинга\"}, {\"label\": \"SEO встроено\", \"description\": \"Серверные мета-теги, Open Graph, canonical и hreflang, структурированные данные JSON-LD на каждой странице\"}, {\"label\": \"Производительность и Core Web Vitals\", \"description\": \"Оптимизация изображений, code splitting и кеширование, настроенные под прохождение Core Web Vitals на реальных устройствах\"}, {\"label\": \"Интеграция headless CMS\", \"description\": \"Nuxt Content или Strapi, чтобы команда публиковала контент, не трогая код\"}]","Что мы делаем правильно",[534,535,538],"info-box",{":leading-icon":536,":title":537},"lucide:shield-check","Безопасность — часть сборки",[174,539,540,541,545],{},"Аутентификация, cookie и работа с данными — именно здесь большинство веб-приложений незаметно даёт утечки. Мы делаем это правильно с самого начала — а если вам досталось приложение, в котором вы не уверены, наш ",[181,542,544],{"href":543},"\u002Fservices\u002Fai-code-audit","аудит AI-кода"," проверит аутентификацию, безопасность сессий и утечки данных, пока они не стали инцидентом.",[236,547,549],{"id":548},"что-мы-строим","Что мы строим",[174,551,552],{},"Четыре вида веб-работы возвращаются в наших проектах снова и снова, и теперь у каждого есть собственная страница с доказательствами за ней:",[192,554,555,564,576,584],{},[195,556,557,561,562,334],{},[198,558,559],{},[181,560,169],{"href":435}," — бэк-офисы, стоящие за продуктами: ролевой доступ, формы, которые управляют реальной машинерией, таблицы, остающиеся удобными на любом объёме. Опорный пример — админка, запускающая брендированные приложения нашей ",[181,563,253],{"href":252},[195,565,566,572,573,575],{},[198,567,568],{},[181,569,571],{"href":570},"\u002Fservices\u002Fweb-development\u002Fnuxt-development","Разработка на Nuxt"," — маркетинговые сайты, контентные платформы и миграции на серверный рендеринг, как переезд ",[181,574,270],{"href":269}," с шаблонов Django на Nuxt. Этот сайт — постоянная демонстрация.",[195,577,578,583],{},[198,579,580],{},[181,581,582],{"href":221},"Парные веб-приложения"," — браузерная сторона продукта, который живёт прежде всего в мобильном приложении и делит с ним один API и один бэкенд.",[195,585,586,592,593,334],{},[198,587,588],{},[181,589,591],{"href":590},"\u002Fservices\u002Fweb-development\u002Fembeddable-widgets","Встраиваемые виджеты и скрипты"," — JavaScript, работающий внутри страниц, которые вы не контролируете, без зависимостей и защищённый по замыслу, как сборщик за нашей ",[181,594,596],{"href":595},"\u002Fportfolio\u002Frealtime-bot-detection-platform","платформой детекции ботов",[236,598,600],{"id":599},"flutter-для-веба-плюсы-и-минусы","Flutter для веба — плюсы и минусы",[174,602,603],{},"Flutter умеет компилироваться в веб, и клиенты с мобильным приложением на Flutter часто спрашивают, не переиспользовать ли его и для сайта. Честный ответ: иногда — но редко для публичного, контентного веба. Вот в чём компромисс.",[605,606],"features-table",{":heading":607,":rows":608,":top-left-label":609},"[{\"label\": \"Nuxt + SSR\", \"hightlightLabel\": \"Публичный веб\"}, {\"label\": \"Flutter Web\"}, {\"label\": \"Классический SPA\"}]","[{\"label\": \"SEO \u002F индексация\",\"cells\": [{\"text\": \"Отлично (SSR)\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Плохо (canvas)\", \"color\": \"error\", \"icon\": \"lucide:x\" },{ \"text\": \"Слабо (пустая оболочка)\", \"color\": \"warning\", \"icon\": \"lucide:minus\" }]}, {\"label\": \"Размер первой загрузки\",\"cells\": [{\"text\": \"Маленький\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Тяжёлый бандл\", \"color\": \"error\", \"icon\": \"lucide:x\" },{ \"text\": \"Средний\", \"color\": \"warning\", \"icon\": \"lucide:minus\" }]}, {\"label\": \"Общий код с мобильным\",\"cells\": [{\"text\": \"Нет\", \"color\": \"warning\", \"icon\": \"lucide:minus\" },{ \"text\": \"Почти 100%\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Частично (React Native)\", \"color\": \"warning\", \"icon\": \"lucide:minus\" }]}, {\"label\": \"UI как в приложении\",\"cells\": [{\"text\": \"Хорошо\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Отлично\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Хорошо\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" }]}, {\"label\": \"Контентные \u002F маркетинговые сайты\",\"cells\": [{\"text\": \"Идеально\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Плохо подходит\", \"color\": \"error\", \"icon\": \"lucide:x\" },{ \"text\": \"Сносно\", \"color\": \"warning\", \"icon\": \"lucide:minus\" }]}, {\"label\": \"Доступность\",\"cells\": [{\"text\": \"Нативный HTML\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Улучшается, ограничена\", \"color\": \"warning\", \"icon\": \"lucide:minus\" },{ \"text\": \"Нативный HTML\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" }]}, {\"label\": \"Лучше всего для\",\"cells\": [{\"text\": \"Сайты и веб-приложения\", \"color\": \"success\"},{ \"text\": \"Внутренние инструменты в духе приложения\", \"color\": \"warning\"},{ \"text\": \"Дашборды\", \"color\": \"warning\"}]}]","Аспект",[174,611,612,615],{},[198,613,614],{},"Где Flutter web силён:"," продукт, который ведёт себя как приложение, где у вас уже есть мобильная кодовая база на Flutter и вы хотите, чтобы одна команда выпускала продукт на всех платформах — внутренние дашборды, инструменты за логином, сильно интерактивные или canvas-ориентированные интерфейсы за стеной авторизации, где SEO не важно, а пользователи ждут приложение, а не страницу.",[174,617,618,621,622,626],{},[198,619,620],{},"Где он подводит:"," всё, что нужно находить в Google. Flutter web рендерит в canvas, который краулеры читают с трудом, отгружает тяжёлый стартовый бандл и конфликтует с браузером в части доступности и ",[256,623,625],{"slug":624},"deep-linking","диплинков",". Для маркетинговых сайтов, блогов, e-commerce и лендингов это дисквалифицирующий недостаток.",[534,628,629],{},[174,630,631,634,635,638,639,642,643,647,648,652,653,334],{},[198,632,633],{},"Итог:"," используйте ",[198,636,637],{},"Nuxt + SSR"," для всего публичного и SEO-зависимого — маркетинговых сайтов, контента, e-commerce, маркетинговых страниц SaaS. Используйте ",[198,640,641],{},"Flutter web",", когда расширяете мобильное Flutter-приложение в веб-инструмент, который ведёт себя как приложение, а охват через поиск не цель. Мы делаем и то, и другое и честно подскажем, что нужно вашему проекту. Если на повестке и мобильное приложение, посмотрите услугу ",[181,644,646],{"href":645},"\u002Fservices\u002Fflutter-app-development","разработки на Flutter"," и разбор компромиссов в ",[181,649,651],{"href":650},"\u002Fblog\u002Fflutter-vs-react-native-2026","Flutter против React Native в 2026"," и ",[181,654,656],{"href":655},"\u002Fblog\u002Fflutter-vs-native-2026","Flutter против нативной разработки",[236,658,660],{"id":659},"стоимость-веб-разработки","Стоимость веб-разработки",[174,662,663],{},"Прозрачные диапазоны на основе объёма и сложности",[665,666],"pricing-table",{":items":667},"[{\"title\": \"Маркетинговый сайт \u002F лендинг\", \"subtitle\": \"Быстрый, готовый к SEO, контентный\", \"price\": \"web-development\u002Flanding\", \"terms\": \"2-4 недели\", \"lines\": [\"Nuxt + SSR для полной индексации\", \"Адаптивный, mobile-first дизайн\", \"SEO-мета, Open Graph и структурированные данные\", \"Nuxt Content или Markdown-CMS\", \"Формы обратной связи и аналитика\", \"Настройка под Core Web Vitals\", \"Деплой и настройка домена\"], \"callToAction\": {\"to\": \"\u002Fcontact?intent=web-development\", \"label\": \"Начать\"}},{\"highlight\": \"Популярно\",\"title\": \"Веб-приложение\", \"subtitle\": \"Интерактивный продукт с авторизацией\", \"price\": \"web-development\u002Fapp\", \"terms\": \"1-3 месяца\", \"lines\": [\"Всё из маркетингового сайта\", \"Аутентификация пользователей (OAuth \u002F JWT)\", \"Безопасные сессии и работа с cookie\", \"Интеграция REST или GraphQL API\", \"Ролевой контроль доступа\", \"Проектирование и интеграция БД\", \"Админ-панель\"], \"callToAction\": {\"to\": \"\u002Fcontact?intent=web-development\", \"label\": \"Начать\"}},{\"title\": \"Платформа на headless CMS\", \"subtitle\": \"Контент в руках редакторов, в любом объёме\", \"price\": \"web-development\u002Fheadless-cms\", \"terms\": \"2-4 месяца\", \"lines\": [\"Бэкенд на Strapi или Nuxt Content\", \"Кастомная редакторская админка\", \"Поддержка многоязычного контента\", \"Индексируемые страницы с серверным рендерингом\", \"Управление медиа и ассетами\", \"Процесс превью и публикации\", \"Архитектура API-first\"], \"callToAction\": {\"to\": \"\u002Fcontact?intent=web-development\", \"label\": \"Начать\"}},{\"title\": \"SaaS \u002F E-commerce\", \"subtitle\": \"Сложный, масштабируемый веб-продукт\", \"price\": \"web-development\u002Fsaas\", \"terms\": \"4+ месяца\", \"lines\": [\"Все платформы и интеграции\", \"Платежи и подписки\", \"Мультитенантная архитектура\", \"Продвинутая безопасность и комплаенс\", \"Масштабируемая инфраструктура бэкенда\", \"Мониторинг и наблюдаемость\", \"Выделенная поддержка\"], \"callToAction\": {\"to\": \"\u002Fcontact?intent=web-development\", \"label\": \"Начать\"}}]",[534,669,672],{":leading-icon":670,":title":671},"lucide:dollar-sign","Доступна индивидуальная оценка",[174,673,674],{},"Каждый проект уникален. Эти диапазоны приблизительны и основаны на типовом объёме. Мы подготовим детальную оценку, когда разберёмся в ваших требованиях, интеграциях и сроках. Свяжитесь с нами для бесплатной консультации и точной оценки.",[236,676,364],{"id":363},[174,678,679],{},"Распространённые вопросы о наших услугах веб-разработки",[369,681,683],{":items":682},"[{\"title\":\"Почему вы строите на Nuxt, а не на WordPress или конструкторе сайтов?\",\"text\":\"Nuxt даёт серверный рендеринг — это значит, что поисковики и превью ссылок видят полностью собранный HTML в первом ответе, а не пустую оболочку. Вы получаете скорость и индексируемость статического сайта с мощью настоящего приложения, полный контроль версий над кодом — и никакой раздутости от плагинов и поверхности атаки, свойственных типичной установке WordPress. Для контентных сайтов мы соединяем Nuxt с headless CMS, чтобы у редакторов всё равно была удобная админка.\"},{\"title\":\"Действительно ли серверный рендеринг улучшает SEO?\",\"text\":\"Да, существенно. При SSR контент страницы, мета-теги, данные Open Graph и структурированные данные присутствуют в HTML, который отдаёт сервер, поэтому краулеры читают их без выполнения JavaScript. Single-page приложения, которые рендерятся целиком в браузере, индексируются медленнее, а некоторые краулеры и превью ссылок в соцсетях могут вовсе их пропустить. SSR — самое значимое решение на уровне фреймворка, которое можно принять ради органического поиска.\"},{\"title\":\"Можете ли вы сделать моё веб-приложение на Flutter для веба?\",\"text\":\"Можем, и для подходящего проекта это отличный вариант. Flutter web хорош для продуктов, которые ведут себя как приложение, и внутренних инструментов за логином, особенно когда у вас уже есть мобильное приложение на Flutter и вы хотите общую кодовую базу. Он плохо подходит для всего, что должно ранжироваться в Google, потому что рендерит в canvas, который краулеры читают с трудом, и отгружает тяжёлый стартовый бандл. Для публичных, контентных или e-commerce сайтов мы рекомендуем Nuxt с серверным рендерингом.\"},{\"title\":\"Как вы обеспечиваете безопасность аутентификации и данных?\",\"text\":\"Мы реализуем реальную серверную авторизацию, а не просто экран логина. Сессии используют httpOnly, secure, SameSite cookie, чтобы токены нельзя было украсть клиентскими скриптами, и мы поддерживаем потоки OAuth и JWT с ролевым контролем доступа. Согласие на cookie обрабатывается по GDPR. Если у вас есть готовое приложение, наш аудит AI-кода отдельно проверяет аутентификацию, работу с сессиями и утечки данных.\"},{\"title\":\"Что выбрать — Nuxt Content или Strapi?\",\"text\":\"Зависит от того, кто редактирует контент. Nuxt Content идеален, когда контентом управляют разработчики или технические авторы в Markdown под контролем версий, например блог или документация, без базы данных. Strapi — правильный выбор, когда нетехническим редакторам нужна удобная админка для управления товарами, объявлениями или кампаниями. Оба рендерятся на сервере через фронтенд на Nuxt, так что в любом случае сайт остаётся быстрым и индексируемым. Мы поможем выбрать под вашу команду.\"},{\"title\":\"Сколько стоит проект веб-разработки?\",\"slot\":\"cost\",\"text\":\"Быстрый маркетинговый или контентный сайт обычно стоит от 400 000 до 960 000 рублей, веб-приложение с авторизацией от 1 200 000 до 3 200 000, платформа на headless CMS от 1 600 000 до 4 000 000, а сложный SaaS или e-commerce продукт свыше 4 000 000. Итоговая сумма зависит от числа функций, интеграций и объёма дизайна. Мы даём фиксированную оценку после бесплатной консультации.\"}]",[684,685,686],"template",{"v-slot:cost_body":387},[174,687,688,689,692,693,695,696,699,700,702],{},"Быстрый маркетинговый или контентный сайт обычно стоит ",[350,690],{"format":352,"service":691},"web-development\u002Flanding",", веб-приложение с авторизацией ",[350,694],{"format":352,"service":353},", платформа на headless CMS ",[350,697],{"format":352,"service":698},"web-development\u002Fheadless-cms",", а сложный SaaS или e-commerce продукт — ",[350,701],{"format":352,"service":357},". Итоговая сумма зависит от числа функций, интеграций и объёма дизайна. Мы даём фиксированную оценку после бесплатной консультации.",[174,704,705],{},"::",{"title":387,"searchDepth":388,"depth":388,"links":707},[708,709,715,716,717,718],{"id":448,"depth":388,"text":449},{"id":478,"depth":388,"text":479,"children":710},[711,712,713,714],{"id":485,"depth":391,"text":486},{"id":492,"depth":391,"text":493},{"id":499,"depth":391,"text":500},{"id":513,"depth":391,"text":514},{"id":548,"depth":388,"text":549},{"id":599,"depth":388,"text":600},{"id":659,"depth":388,"text":660},{"id":363,"depth":388,"text":364},"Быстрые, готовые к SEO веб-приложения на Nuxt, SSR и Tailwind",{"heading":721,"text":722,"buttons":723},"Готовы сделать веб-приложение, которое ранжируется и быстро работает?","Расскажите о задаче — соберём быстрое веб-приложение, удобное пользователям и понятное поисковикам.",[724,727],{"to":725,"label":726,"leadingIcon":415,"color":416,"variant":417},"\u002Fcontact","Начать проект",{"to":728,"label":729,"color":420,"variant":421},"\u002Fportfolio","Наши работы",[731,733],{"to":725,"label":732,"leadingIcon":415,"color":420,"variant":421},"Бесплатная консультация",{"to":734,"label":735,"color":416,"variant":417},"#стоимость-веб-разработки","Посмотреть цены",{"url":737,"alt":443,"text":738},"\u002Fservices\u002Fweb-development.webp","Собрано на том же стеке, что и этот сайт",{},"Веб-разработка на Nuxt, SSR и Tailwind: быстрые, готовые к SEO, мобильные веб-приложения с аутентификацией, headless CMS и Strapi. Бесплатная консультация.","Веб-разработка — Nuxt, SSR и SEO","Веб-приложения на Nuxt и SSR, которые быстро грузятся и хорошо индексируются: авторизация, headless CMS и mobile-first вёрстка, не воюющая с браузером.",null,{"title":443,"description":719},"services\u002Fweb-development","sc_PnwHiO-YqVwRhGTp1eA5fuAk0LTgq1mdlIiW3J8A",[],[749,764,776,791,804,819,835,848,861,878,891,902,912,923,935,946,955,969,982,989,1003,1018,1031,1044,1057,1068,1079,1090,1103,1113,1126,1137,1151,1162,1176,1185,1196,1209,1222,1235,1248,1260,1272,1284,1296,1308,1319,1333,1344,1356,1367,1380,1392],{"slug":750,"term":751,"definition":752,"category":753,"aliases":754,"links":756,"related":760,"readMore":-1,"target":762,"hasArticle":763},"aosp","AOSP","Android Open Source Project — Android без надстройки Google, который может форкнуть кто угодно. На его форках работают кассовые терминалы, киоски и автомобильные системы, а работа на этом уровне открывает части ОС, которых прикладной разработчик не видит.","platform",[755],"Android Open Source Project",[757],{"kind":758,"url":759},"website","https:\u002F\u002Fsource.android.com\u002F",[761],"host-card-emulation","\u002Fglossary#aosp",false,{"slug":765,"term":766,"definition":767,"category":753,"aliases":768,"links":769,"related":773,"readMore":-1,"target":775,"hasArticle":763},"app-clips","App Clips","Функция Apple, позволяющая запустить небольшую часть iOS-приложения — до 15 МБ — не устанавливая его целиком. Вызывается по QR-коду, NFC-метке или ссылке: для случаев, когда первое действие пользователя не должно требовать похода в App Store.",[],[770],{"kind":771,"url":772},"documentation","https:\u002F\u002Fdeveloper.apple.com\u002Fapp-clips\u002F",[624,774],"install-referrer","\u002Fglossary#app-clips",{"slug":777,"term":778,"definition":779,"category":753,"aliases":780,"links":781,"related":787,"readMore":-1,"target":790,"hasArticle":763},"bigquery","BigQuery","Аналитическое хранилище Google Cloud. Вы запускаете SQL по миллиардам строк, и они сканируются за секунды, а данные при этом лежат отдельно от машин, выполняющих запросы. Именно это снимает отчётность и исследование данных с базы, обслуживающей живой трафик.",[],[782,784],{"kind":758,"url":783},"https:\u002F\u002Fcloud.google.com\u002Fbigquery",{"kind":785,"url":786},"wikipedia","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FBigQuery",[788,789],"object-storage","elasticsearch","\u002Fglossary#bigquery",{"slug":258,"term":792,"definition":793,"category":794,"aliases":795,"links":799,"related":802,"readMore":-1,"target":803,"hasArticle":763},"CI\u002FCD","Автоматизация, которая собирает, тестирует и выкладывает каждое изменение без ручного запуска команд. В мобильной разработке это то, что превращает релиз в нажатие кнопки вместо полудня ожидания, пока освободится нужный человек.","practice",[796,797,798],"CI","непрерывная интеграция","непрерывная поставка",[800],{"kind":785,"url":801},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCI\u002FCD",[],"\u002Fglossary#ci-cd",{"slug":805,"term":806,"definition":807,"category":808,"aliases":809,"links":812,"related":815,"readMore":-1,"target":818,"hasArticle":763},"crud","CRUD","Create, read, update, delete — четыре операции, стоящие почти за каждой формой и админкой. Собирательное название для рутинной половины приложения, которая управляет данными, в отличие от частей с реальной предметной логикой.","architecture",[810,811],"Create, Read, Update, Delete","создание, чтение, обновление, удаление",[813],{"kind":785,"url":814},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCreate,_read,_update_and_delete",[816,817],"rest","graphql","\u002Fglossary#crud",{"slug":820,"term":821,"definition":822,"category":794,"aliases":823,"links":827,"related":832,"readMore":-1,"target":834,"hasArticle":763},"dev-container","Dev Container","Среда разработки, описанная один раз в devcontainer.json — ОС, инструменты и версии рантаймов, которые нужны проекту, — и открываемая одинаково внутри контейнера в редакторе любого участника, вместо инструкции по установке, которую каждый понимает по-своему.",[824,825,826],"devcontainer.json","Dev Containers","VS Code Dev Containers",[828,830],{"kind":758,"url":829},"https:\u002F\u002Fcontainers.dev\u002F",{"kind":771,"url":831},"https:\u002F\u002Fcode.visualstudio.com\u002Fdocs\u002Fdevcontainers\u002Fcontainers",[833],"container-registry","\u002Fglossary#dev-container",{"slug":789,"term":836,"definition":837,"category":753,"aliases":838,"links":841,"related":846,"readMore":-1,"target":847,"hasArticle":763},"Elasticsearch","Поисковый и аналитический движок, который индексирует записи, чтобы их можно было интерактивно фильтровать и искать, а не сканировать. К нему обращаются, когда вопрос звучит как «покажи вот эти сессии с шестью фильтрами», а не «просуммируй колонку».",[839,840],"Elastic","ELK",[842,844],{"kind":758,"url":843},"https:\u002F\u002Fwww.elastic.co\u002Felasticsearch",{"kind":785,"url":845},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FElasticsearch",[777],"\u002Fglossary#elasticsearch",{"slug":849,"term":850,"definition":851,"category":808,"aliases":852,"links":855,"related":856,"readMore":-1,"target":860,"hasArticle":763},"fan-out","Fan-out","Чтение источника один раз и доставка каждого обновления всем подписанным на него клиентам. Наивная версия пишет подписчикам в цикле и встаёт, как только один из сокетов начинает тормозить; рабочая — держит отдельный буфер на каждого клиента и отключает тех, кто не успевает.",[853,854],"веерная рассылка","фан-аут",[],[857,858,859],"websocket","pub-sub","server-sent-events","\u002Fglossary#fan-out",{"slug":862,"term":863,"definition":864,"category":794,"aliases":865,"links":868,"related":873,"readMore":-1,"target":877,"hasArticle":763},"gdpr","GDPR","Регламент ЕС о персональных данных людей в ЕС: законное основание для сбора, настоящее согласие на трекинг, право увидеть и удалить свои данные. Он следует за вашими пользователями, а не за вашими серверами: где зарегистрирована компания, значения не имеет.",[866,867],"Общий регламент по защите данных","General Data Protection Regulation",[869,871],{"kind":758,"url":870},"https:\u002F\u002Fgdpr.eu\u002F",{"kind":785,"url":872},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGeneral_Data_Protection_Regulation",[874,875,876],"pci-dss","soc-2","hipaa","\u002Fglossary#gdpr",{"slug":879,"term":880,"definition":881,"category":794,"aliases":882,"links":886,"related":889,"readMore":-1,"target":890,"hasArticle":763},"golden-test","Golden-тест","Тест, который отрисовывает виджет и сравнивает результат попиксельно с эталонным изображением. Во Flutter это самый дешёвый способ узнать, не сломал ли редизайн пустое состояние на 320pt, в тёмной теме, при 200% масштабе текста.",[883,884,885],"golden test","золотой тест","скриншотный тест",[887],{"kind":771,"url":888},"https:\u002F\u002Fapi.flutter.dev\u002Fflutter\u002Fflutter_test\u002FmatchesGoldenFile.html",[258],"\u002Fglossary#golden-test",{"slug":817,"term":892,"definition":893,"category":808,"aliases":894,"links":895,"related":900,"readMore":-1,"target":901,"hasArticle":763},"GraphQL","Язык запросов к API, где клиент сам перечисляет нужные поля и получает один ответ ровно такой формы. Он снимает избыточную выдачу, к которой дрейфуют REST-эндпоинты, и добавляет собственный режим отказа: неограниченный запрос, обходящий всю модель данных.",[],[896,898],{"kind":758,"url":897},"https:\u002F\u002Fgraphql.org\u002F",{"kind":785,"url":899},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGraphQL",[816],"\u002Fglossary#graphql",{"slug":876,"term":903,"definition":904,"category":794,"aliases":905,"links":907,"related":910,"readMore":-1,"target":911,"hasArticle":763},"HIPAA","Закон США о защищённой медицинской информации: как её можно хранить, передавать, логировать и раскрывать. Как и PCI-DSS, это архитектурное ограничение, которое выбирают в начале, а не документ, который дописывают перед запуском.",[906],"Health Insurance Portability and Accountability Act",[908],{"kind":785,"url":909},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHealth_Insurance_Portability_and_Accountability_Act",[874,862,875],"\u002Fglossary#hipaa",{"slug":525,"term":913,"definition":914,"category":808,"aliases":915,"links":918,"related":921,"readMore":-1,"target":922,"hasArticle":763},"Headless CMS","Система управления контентом с админкой и API, но без собственного фронтенда. Редакторы публикуют в одном месте, а сайт или приложение отрисовывает контент само — слой представления принадлежит вам, а не вендору CMS.",[916,917],"безголовая CMS","контентное API",[919],{"kind":785,"url":920},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHeadless_content_management_system",[462,816],"\u002Fglossary#headless-cms",{"slug":761,"term":924,"definition":925,"category":753,"aliases":926,"links":930,"related":933,"readMore":-1,"target":934,"hasArticle":763},"Host Card Emulation","Режим, в котором Android-телефон программно эмулирует бесконтактную карту по NFC, без аппаратного защищённого элемента. Так платит приложение-кошелёк на терминале: телефон говорит с ним по тому же протоколу EMV Contactless, что и пластиковая карта.",[927,928,929],"HCE","EMV Contactless","бесконтактные платежи",[931],{"kind":771,"url":932},"https:\u002F\u002Fdeveloper.android.com\u002Fdevelop\u002Fconnectivity\u002Fnfc\u002Fhce",[874,750],"\u002Fglossary#host-card-emulation",{"slug":936,"term":937,"definition":938,"category":753,"aliases":939,"links":940,"related":943,"readMore":-1,"target":945,"hasArticle":763},"impeller","Impeller","Движок рендеринга, на котором Flutter работает сегодня: по умолчанию на iOS с 2023 года и на Android с 2024-го. Он компилирует шейдеры заранее, а не во время первой анимации, что убрало главную видимую проблему Flutter в проде — джанк на компиляции шейдеров.",[],[941],{"kind":771,"url":942},"https:\u002F\u002Fdocs.flutter.dev\u002Fperf\u002Fimpeller",[944],"skia","\u002Fglossary#impeller",{"slug":774,"term":947,"definition":948,"category":753,"aliases":949,"links":950,"related":953,"readMore":-1,"target":954,"hasArticle":763},"Install Referrer","API Google Play, который передаёт только что установленному Android-приложению параметры кампании из ссылки, приведшей к установке. Android-половина отложенного диплинкинга и надёжный способ понять, откуда пришёл пользователь.",[],[951],{"kind":771,"url":952},"https:\u002F\u002Fdeveloper.android.com\u002Fgoogle\u002Fplay\u002Finstallreferrer",[624,765],"\u002Fglossary#install-referrer",{"slug":956,"term":957,"definition":958,"category":959,"aliases":960,"links":962,"related":967,"readMore":-1,"target":968,"hasArticle":763},"jwt","JWT","Подписанный токен, несущий свои данные внутри: сервер понимает, кому принадлежит запрос, не обращаясь к хранилищу сессий. Стандарт мобильной аутентификации. Подпись доказывает, что токен не меняли, но не скрывает его содержимое.","protocol",[961],"JSON Web Token",[963,965],{"kind":758,"url":964},"https:\u002F\u002Fjwt.io\u002F",{"kind":785,"url":966},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FJSON_Web_Token",[874],"\u002Fglossary#jwt",{"slug":970,"term":971,"definition":972,"category":794,"aliases":973,"links":977,"related":980,"readMore":-1,"target":981,"hasArticle":763},"kyc","KYC","Know Your Customer — проверки личности, которые регулируемый финансовый продукт проводит, прежде чем разрешить переводить деньги: съёмка документов, liveness, санкционный и антиотмывочный скрининг. На онбординг это влияет сильнее любого дизайн-решения.",[974,975,976],"Know Your Customer","AML","KYC\u002FAML",[978],{"kind":785,"url":979},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FKnow_your_customer",[874,862],"\u002Fglossary#kyc",{"slug":76,"term":74,"definition":983,"category":753,"aliases":984,"links":986,"related":987,"readMore":988,"target":988,"hasArticle":763},"Переиспользование бизнес-логики на Kotlin между Android, iOS и сервером, при этом интерфейс на каждой платформе остаётся нативным. Альтернатива Flutter, когда UI обязан быть нативным, а правила за ним — нет.",[985],"KMP",[],[],"\u002Ftechnologies\u002Fkmp",{"slug":990,"term":991,"definition":992,"category":993,"aliases":994,"links":997,"related":1000,"readMore":-1,"target":1002,"hasArticle":763},"mvp","MVP","Минимальная версия продукта, которую можно показать реальным пользователям и которая при этом отвечает на вопрос, ради которого его делали. Решение об объёме, а не о качестве: MVP всё равно обязан работать.","business",[995,996],"минимально жизнеспособный продукт","minimum viable product",[998],{"kind":785,"url":999},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMinimum_viable_product",[1001],"white-label","\u002Fglossary#mvp",{"slug":1004,"term":1005,"definition":1006,"category":959,"aliases":1007,"links":1011,"related":1016,"readMore":-1,"target":1017,"hasArticle":763},"oauth","OAuth","Стандарт, на котором держатся «Вход через Apple», Google и остальные: пользователь авторизует ваше приложение у провайдера, которому уже доверяет, а приложение получает токен вместо пароля. Никто не заводит новый пароль, и вы его не храните.",[1008,1009,1010],"OAuth 2.0","вход через соцсети","Sign in with Apple",[1012,1014],{"kind":758,"url":1013},"https:\u002F\u002Foauth.net\u002F2\u002F",{"kind":785,"url":1015},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOAuth",[956],"\u002Fglossary#oauth",{"slug":874,"term":1019,"definition":1020,"category":794,"aliases":1021,"links":1024,"related":1029,"readMore":-1,"target":1030,"hasArticle":763},"PCI-DSS","Стандарт безопасности карточной индустрии, обязательный для всех, кто хранит, обрабатывает или передаёт данные карт. Большинство приложений намеренно остаются вне зоны его действия, отдавая ввод карты сертифицированному платёжному провайдеру.",[1022,1023],"PCI DSS","Payment Card Industry Data Security Standard",[1025,1027],{"kind":758,"url":1026},"https:\u002F\u002Fwww.pcisecuritystandards.org\u002F",{"kind":785,"url":1028},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPayment_Card_Industry_Data_Security_Standard",[956],"\u002Fglossary#pci-dss",{"slug":1032,"term":1033,"definition":1034,"category":993,"aliases":1035,"links":1038,"related":1041,"readMore":-1,"target":1043,"hasArticle":763},"product-market-fit","Product-market fit","Момент, когда продукт доказуемо нашёл своих людей: они им пользуются, возвращаются и платят. До него разработка отвечает на вопрос, после — на спрос.",[1036,1037],"PMF","соответствие продукта рынку",[1039],{"kind":785,"url":1040},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FProduct-market_fit",[990,1042],"time-to-market","\u002Fglossary#product-market-fit",{"slug":1045,"term":1046,"definition":1047,"category":794,"aliases":1048,"links":1051,"related":1054,"readMore":-1,"target":1056,"hasArticle":763},"prompt-injection","Prompt injection","Атака, при которой текст от пользователя языковая модель читает как инструкции, а не как данные, и уходит в обход собственных правил. Родственник SQL-инъекции в эпоху LLM: возникает везде, где пользовательский ввод склеивается в промпт.",[1049,1050],"инъекция промпта","инъекция в промпт",[1052],{"kind":785,"url":1053},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPrompt_injection",[1055],"rate-limiting","\u002Fglossary#prompt-injection",{"slug":858,"term":1058,"definition":1059,"category":808,"aliases":1060,"links":1063,"related":1066,"readMore":-1,"target":1067,"hasArticle":763},"Pub\u002FSub","Шаблон обмена сообщениями: производитель публикует событие, а любое число потребителей независимо читает его через стоящий между ними брокер. Производитель никогда их не ждёт — так путь запроса остаётся быстрым, а более медленная работа выполняется в фоне.",[1061,1062],"публикация\u002Fподписка","Google Cloud Pub\u002FSub",[1064],{"kind":785,"url":1065},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPublish%E2%80%93subscribe_pattern",[],"\u002Fglossary#pub-sub",{"slug":816,"term":1069,"definition":1070,"category":808,"aliases":1071,"links":1074,"related":1077,"readMore":-1,"target":1078,"hasArticle":763},"REST","Общепринятый стиль HTTP-API: URL называет ресурс, а HTTP-метод говорит, что с ним сделать. Способ по умолчанию, которым приложение общается с бэкендом, и то, что ожидает найти большинство сторонних интеграций.",[1072,1073],"REST API","Representational State Transfer",[1075],{"kind":785,"url":1076},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FREST",[857,859],"\u002Fglossary#rest",{"slug":875,"term":1080,"definition":1081,"category":794,"aliases":1082,"links":1085,"related":1088,"readMore":-1,"target":1089,"hasArticle":763},"SOC 2","Отчёт внешнего аудитора о том, как компания обращается с данными клиентов — безопасность, доступность, конфиденциальность, — а не сертификат, который можно купить. Корпоративные заказчики его требуют, а архитектуру он ограничивает задолго до самого аудита.",[1083,1084],"SOC2","System and Organization Controls",[1086],{"kind":785,"url":1087},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSystem_and_Organization_Controls",[874,862,876],"\u002Fglossary#soc-2",{"slug":1091,"term":1092,"definition":1093,"category":993,"aliases":1094,"links":1097,"related":1100,"readMore":-1,"target":1102,"hasArticle":763},"saas","SaaS","Софт, который продают как постоянную подписку на размещённый у поставщика продукт, а не как разовую лицензию для установки у себя. Поставщик держит серверы, непрерывно выкатывает обновления и берёт плату за пользователя или за объём.",[1095,1096],"Software as a Service","ПО как услуга",[1098],{"kind":785,"url":1099},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSoftware_as_a_service",[1101,1001],"multi-tenancy","\u002Fglossary#saas",{"slug":859,"term":1104,"definition":1105,"category":959,"aliases":1106,"links":1108,"related":1111,"readMore":-1,"target":1112,"hasArticle":763},"Server-Sent Events","Односторонний поток от сервера к клиенту поверх обычного HTTP-соединения. Проще, чем WebSocket, и достаточен там, где только серверу есть что сказать: прогресс операции, ответ AI, приходящий токен за токеном.",[1107],"SSE",[1109],{"kind":785,"url":1110},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FServer-sent_events",[857,816],"\u002Fglossary#server-sent-events",{"slug":944,"term":1114,"definition":1115,"category":753,"aliases":1116,"links":1119,"related":1124,"readMore":-1,"target":1125,"hasArticle":763},"Skia","Открытая 2D-графическая библиотека Google, которая рисует Chrome, Android и — до появления Impeller — каждый кадр Flutter. Она умеет выводить не только на экран, но и в PDF: именно это делает «печать в PDF» в Chrome.",[1117,1118],"Skia Graphics Engine","skia-safe",[1120,1122],{"kind":758,"url":1121},"https:\u002F\u002Fskia.org\u002F",{"kind":785,"url":1123},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSkia_Graphics_Engine",[936],"\u002Fglossary#skia",{"slug":1127,"term":1128,"definition":1129,"category":993,"aliases":1130,"links":1133,"related":1134,"readMore":-1,"target":1136,"hasArticle":763},"staff-augmentation","Staff augmentation","Модель найма, при которой инженеры внешнего партнёра входят в вашу команду и работают под вашим управлением — в вашем репозитории, ваших спринтах, вашем процессе, — а не сдают отдельный проект. Вы покупаете ресурс; код и контекст остаются у вас.",[1131,333,1132],"аутстаффинг","выделенные разработчики",[],[1135,1042],"total-cost-of-ownership","\u002Fglossary#staff-augmentation",{"slug":1138,"term":1139,"definition":1140,"category":959,"aliases":1141,"links":1145,"related":1148,"readMore":-1,"target":1150,"hasArticle":763},"tls","TLS","Слой шифрования под HTTPS. Он подтверждает, что сервер именно тот, о ком говорит его сертификат, согласует свежий ключ на сессию и шифрует всё дальнейшее — сеть между вами видит шифртекст и не может незаметно его изменить.",[1142,1143,1144],"SSL","HTTPS","Transport Layer Security",[1146],{"kind":785,"url":1147},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTransport_Layer_Security",[1149,956],"end-to-end-encryption","\u002Fglossary#tls",{"slug":1042,"term":1152,"definition":1153,"category":993,"aliases":1154,"links":1157,"related":1160,"readMore":-1,"target":1161,"hasArticle":763},"Time to market","Время от решения строить продукт до момента, когда им пользуются настоящие люди. Большинство споров о стеке и объёме работ — на самом деле споры об этом числе: каждая сэкономленная неделя — это неделя выручки, обратной связи и позиции на рынке.",[1155,1156],"TTM","время выхода на рынок",[1158],{"kind":785,"url":1159},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTime_to_market",[990,1135],"\u002Fglossary#time-to-market",{"slug":1163,"term":1164,"definition":1165,"category":959,"aliases":1166,"links":1168,"related":1173,"readMore":-1,"target":1175,"hasArticle":763},"webrtc","WebRTC","Браузерный и мобильный стандарт для передачи аудио, видео и данных напрямую между двумя устройствами; серверы участвуют только в том, чтобы их познакомить. На нём строят видеозвонок внутри приложения, когда не берут готовый SDK.",[1167],"Web Real-Time Communication",[1169,1171],{"kind":758,"url":1170},"https:\u002F\u002Fwebrtc.org\u002F",{"kind":785,"url":1172},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWebRTC",[1174,857],"xmpp","\u002Fglossary#webrtc",{"slug":857,"term":1177,"definition":1178,"category":959,"aliases":1179,"links":1180,"related":1183,"readMore":-1,"target":1184,"hasArticle":763},"WebSocket","Протокол, который держит одно соединение между клиентом и сервером открытым, чтобы любая сторона могла отправить данные в любой момент, а не клиент спрашивал снова и снова. На нём работают живые котировки, чаты и статусы присутствия.",[],[1181],{"kind":785,"url":1182},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWebSocket",[859,816],"\u002Fglossary#websocket",{"slug":1001,"term":1186,"definition":1187,"category":993,"aliases":1188,"links":1191,"related":1194,"readMore":1195,"target":1195,"hasArticle":432},"White-label","Один продукт, выпускаемый под многими брендами. White-label платформа собирает каждому клиенту готовое к публикации приложение со своим названием, оформлением и контентом из общей кодовой базы, а не форкает проект под заказчика.",[1189,1190],"белый лейбл","мультитенантное приложение",[1192],{"kind":785,"url":1193},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWhite-label_product",[990],"\u002Fglossary\u002Fwhite-label",{"slug":1174,"term":1197,"definition":1198,"category":959,"aliases":1199,"links":1202,"related":1207,"readMore":-1,"target":1208,"hasArticle":763},"XMPP","Открытый федеративный протокол обмена сообщениями и давняя альтернатива тому, чтобы писать чат-бэкенд самому или арендовать чужой. Он покрывает статусы присутствия, индикаторы набора и передачу файлов, а зрелые клиентские библиотеки есть под любую платформу.",[1200,1201],"Jabber","Extensible Messaging and Presence Protocol",[1203,1205],{"kind":758,"url":1204},"https:\u002F\u002Fxmpp.org\u002F",{"kind":785,"url":1206},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FXMPP",[1163,857],"\u002Fglossary#xmpp",{"slug":1210,"term":1211,"definition":1212,"category":993,"aliases":1213,"links":1217,"related":1220,"readMore":-1,"target":1221,"hasArticle":763},"in-app-purchase","Встроенные покупки","Продажа цифровых товаров и подписок через биллинг Apple и Google, который оба стора требуют для цифрового контента и с которого берут комиссию. Сложность никогда не в самой покупке, а в её восстановлении на новом устройстве и в честном учёте прав доступа.",[1214,1215,1216],"in-app purchase","IAP","внутренние покупки",[1218],{"kind":771,"url":1219},"https:\u002F\u002Fdeveloper.apple.com\u002Fin-app-purchase\u002F",[1032],"\u002Fglossary#in-app-purchase",{"slug":624,"term":1223,"definition":1224,"category":753,"aliases":1225,"links":1230,"related":1233,"readMore":1234,"target":1234,"hasArticle":432},"Диплинкинг","Ссылка, которая открывает конкретный экран внутри установленного приложения, а не его главную или веб-страницу. Отложенный диплинкинг переживает установку: нажатие, прошедшее через магазин приложений, всё равно приводит на нужный экран.",[1226,1227,1228,1229],"deep linking","отложенный диплинкинг","Universal Links","Android App Links",[1231],{"kind":785,"url":1232},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMobile_deep_linking",[765,774],"\u002Fglossary\u002Fdeep-linking",{"slug":1236,"term":1237,"definition":1238,"category":808,"aliases":1239,"links":1243,"related":1246,"readMore":-1,"target":1247,"hasArticle":763},"multi-arch-image","Мультиархитектурный образ","Один тег образа, который разрешается в разные бинарники для каждой архитектуры процессора — обычно это пара linux\u002Famd64 и linux\u002Farm64, — так что один и тот же docker pull работает без изменений и на серверах Intel\u002FAMD, и на ноутбуках с Apple Silicon.",[1240,1241,1242],"мультиарх-сборка","multi-arch build","linux\u002Famd64 + linux\u002Farm64",[1244],{"kind":771,"url":1245},"https:\u002F\u002Fdocs.docker.com\u002Fbuild\u002Fbuilding\u002Fmulti-platform\u002F",[833],"\u002Fglossary#multi-arch-image",{"slug":1101,"term":1249,"definition":1250,"category":808,"aliases":1251,"links":1254,"related":1257,"readMore":-1,"target":1259,"hasArticle":763},"Мультитенантность","Один развёрнутый бэкенд обслуживает много клиентов, и каждый видит только свои данные, конфигурацию и включённые функции, потому что контекст тенанта определяется для каждого запроса. Именно это делает линейку брендированных приложений одним продуктом, а не набором форков.",[1101,1252,1253],"мультиарендность","тенант",[1255],{"kind":785,"url":1256},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMultitenancy",[1001,1258],"feature-flags","\u002Fglossary#multi-tenancy",{"slug":788,"term":1261,"definition":1262,"category":808,"aliases":1263,"links":1267,"related":1270,"readMore":-1,"target":1271,"hasArticle":763},"Объектное хранилище","Хранилище, которое держит файл целиком под ключом, а не в дереве файловой системы, — Amazon S3 и множество сервисов, совместимых с его API. Дешёвое, практически безграничное, привычное место для сырых событий, бэкапов и медиа: пишется один раз, читается редко, хранится вечно.",[1264,1265,1266],"S3","S3-совместимое хранилище","блоб-хранилище",[1268],{"kind":785,"url":1269},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FObject_storage",[777],"\u002Fglossary#object-storage",{"slug":1055,"term":1273,"definition":1274,"category":794,"aliases":1275,"links":1279,"related":1282,"readMore":-1,"target":1283,"hasArticle":763},"Ограничение частоты запросов","Предел на число запросов от одного клиента за заданный интервал. Именно он не даёт одному увлечённому пользователю, скраперу или боту потратить месячный бюджет платного API за вечер, и стоять он должен на вашей стороне интеграции.",[1276,1277,1278],"rate limiting","рейт-лимит","троттлинг",[1280],{"kind":785,"url":1281},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRate_limiting",[1045],"\u002Fglossary#rate-limiting",{"slug":1285,"term":1286,"definition":1287,"category":753,"aliases":1288,"links":1291,"related":1294,"readMore":-1,"target":1295,"hasArticle":763},"platform-channels","Платформенные каналы","Мост, через который Flutter-приложение вызывает нативный код iOS и Android — Keychain и Keystore, биометрию, платёжные шторки, любой SDK без Dart-пакета. Работа рутинная, но настоящая, и первое место, где споткнётся инженер, не выходивший за пределы Dart.",[1289,1290],"platform channels","method channel",[1292],{"kind":771,"url":1293},"https:\u002F\u002Fdocs.flutter.dev\u002Fplatform-integration\u002Fplatform-channels",[76],"\u002Fglossary#platform-channels",{"slug":1297,"term":1298,"definition":1299,"category":959,"aliases":1300,"links":1303,"related":1306,"readMore":-1,"target":1307,"hasArticle":763},"post-quantum-cryptography","Постквантовая криптография","Алгоритмы шифрования, рассчитанные на устойчивость к будущему квантовому компьютеру; стандарты уже финализированы NIST. Мигрировать нужно до появления железа: трафик, записанный сегодня, расшифруют, когда такая машина появится.",[1301,1302],"PQC","постквантовое шифрование",[1304],{"kind":785,"url":1305},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPost-quantum_cryptography",[1138,1149],"\u002Fglossary#post-quantum-cryptography",{"slug":1309,"term":1310,"definition":1311,"category":794,"aliases":1312,"links":1316,"related":1317,"readMore":-1,"target":1318,"hasArticle":763},"staged-rollout","Поэтапная раскатка","Релиз сначала на небольшой процент пользователей и расширение только тогда, когда доля сессий без падений держится. Плохая сборка, пойманная на десяти процентах, — испорченный вечер; она же на ста процентах — испорченная неделя.",[1313,1314,1315],"staged rollout","phased release","канареечный релиз",[],[1258,258],"\u002Fglossary#staged-rollout",{"slug":833,"term":1320,"definition":1321,"category":808,"aliases":1322,"links":1328,"related":1331,"readMore":-1,"target":1332,"hasArticle":763},"Реестр контейнеров","Хранилище образов контейнеров, адресуемых по имени и тегу, — Docker Hub, GitHub Container Registry или собственный реестр облачного провайдера. Публикация сборки в реестр превращает «у меня работает» в образ, который любой может скачать и запустить без изменений.",[1323,1324,1325,1326,1327],"реестр образов","Docker registry","GHCR","ghcr.io","container registry",[1329],{"kind":771,"url":1330},"https:\u002F\u002Fdocs.github.com\u002Fen\u002Fpackages\u002Fworking-with-a-github-packages-registry\u002Fworking-with-the-container-registry",[820,1236],"\u002Fglossary#container-registry",{"slug":462,"term":1334,"definition":1335,"category":808,"aliases":1336,"links":1339,"related":1342,"readMore":-1,"target":1343,"hasArticle":763},"Серверный рендеринг","Сборка страницы в готовый HTML на сервере, чтобы первый же ответ содержал контент, заголовки, метатеги и структурированные данные. Краулеры, превью ссылок и медленные устройства читают это, не выполняя JavaScript.",[1337,1338],"SSR","server-side rendering",[1340],{"kind":785,"url":1341},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FServer-side_scripting",[525],"\u002Fglossary#server-side-rendering",{"slug":1149,"term":1345,"definition":1346,"category":808,"aliases":1347,"links":1351,"related":1354,"readMore":-1,"target":1355,"hasArticle":763},"Сквозное шифрование","Шифрование, которое накладывается на устройстве отправителя и снимается только на устройстве получателя, так что сервис, передающий сообщение, не может его прочитать — ни по решению суда, ни после взлома. Оно защищает содержимое, но никогда — метаданные.",[1348,1349,1350],"E2EE","end-to-end encryption","оконечное шифрование",[1352],{"kind":785,"url":1353},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FEnd-to-end_encryption",[1138,956],"\u002Fglossary#end-to-end-encryption",{"slug":1135,"term":1357,"definition":1358,"category":993,"aliases":1359,"links":1362,"related":1365,"readMore":-1,"target":1366,"hasArticle":763},"Совокупная стоимость владения","Во что продукт обходится за всю жизнь, а не только на этапе разработки: поддержка, обновления, ежегодные миграции на новые ОС и правила сторов, вторая команда, чтобы две кодовые базы не расходились. Обычно больше сметы на разработку и почти никогда в неё не входит.",[1360,1361],"TCO","total cost of ownership",[1363],{"kind":785,"url":1364},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTotal_cost_of_ownership",[1042],"\u002Fglossary#total-cost-of-ownership",{"slug":1368,"term":1369,"definition":1370,"category":808,"aliases":1371,"links":1375,"related":1378,"readMore":-1,"target":1379,"hasArticle":763},"state-management","Управление состоянием","То, как приложение решает, где живёт значение, кому позволено его менять и какие части экрана перерисовываются, когда оно меняется. Во Flutter выбор между Riverpod, BLoC и Provider — одно из первых архитектурных решений и одно из самых трудных для пересмотра.",[1372,1373,1374],"state management","BLoC","Riverpod",[1376],{"kind":771,"url":1377},"https:\u002F\u002Fdocs.flutter.dev\u002Fdata-and-backend\u002Fstate-mgmt\u002Foptions",[879],"\u002Fglossary#state-management",{"slug":1258,"term":1381,"definition":1382,"category":794,"aliases":1383,"links":1387,"related":1390,"readMore":-1,"target":1391,"hasArticle":763},"Фиче-флаги","Переключатели, которые включают и выключают функциональность из конфигурации, а не из релиза. Один бинарник ведёт себя по-разному для разных брендов, рынков и пользователей, а рискованную фичу можно погасить, не отправляя новую сборку на ревью.",[1384,1385,1386],"feature flags","фиче-флаги","feature toggle",[1388],{"kind":785,"url":1389},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FFeature_toggle",[1309,1001,1101],"\u002Fglossary#feature-flags",{"slug":1393,"term":1394,"definition":1395,"category":808,"aliases":1396,"links":1400,"related":1403,"readMore":-1,"target":1404,"hasArticle":763},"floating-point","Числа с плавающей точкой","Двоичный формат IEEE 754, стоящий за double и float. Он не хранит 0.1 точно, поэтому 0.1 + 0.2 даёт 0.30000000000000004 — незаметно в графике и фатально в деньгах, которым место в целых минорных единицах или в decimal-типе.",[1397,1398,1399],"IEEE 754","double","плавающая запятая",[1401],{"kind":785,"url":1402},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FIEEE_754",[],"\u002Fglossary#floating-point"]