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