МожливостіСутності
Документація
    Ring Platform

    Децентралізоване самобудівне майбутнє

    Увійти
    Сутності
    Можливості
    Магазин
    Документація
    Концепції
    RING ЕкономікаSonoratek LLCГлобальний впливAI зустрічає Web3
    Розпочати
    Швидкий стартКалькуляторДорожня карта
    Конфіденційність|Контакти
    v1.104.17|Sonoratek LLC

    Documentation

    Концепції, цінність і типові сценарії

    Ласкаво просимо до Ring
    Швидкий довідник
    Початок роботи
    Передумови
    Встановлення
    Валідація першого успіху
    Наступні кроки
    Функції
    Магазин
    Склад і залишки
    Керування вендорами
    Комісії та розрахунки
    SubscriptionConductor
    PaymentConductor
    Ring Oracle
    Інтеграція платежів
    Публічні пули та DAO-банки
    Інтеграція WayForPay
    Web3 Гаманець
    WalletConductor
    Партнерська та реферальна підтримка
    Реферальні коди (Refcodes)
    NFT Exhibition Marketplace
    Solana NFT Gates
    Система Стейкінга Токенів
    Лабораторія проєкту власника (Owner Project Lab)
    Сутності
    Можливості
    Повідомлення
    Завдання Ring
    WebRTC-дзвінки та STUNner TURN
    Ігри з друзями
    Модуль Новин - Цифровий Газетний Досвід
    Блоги учасників
    Сторінки публічного профілю
    Віджети профілю облікового запису
    Ring File Cabinet
    Система Резервування Імен Користувачів
    Науковий редактор
    Notifications
    Push-сповіщення через FCM (Ring)
    Email AI-CRM
    Ring Mailer і RingdomX Mail
    Протокол Tunnel
    VideoConductor
    MediaConductor
    Generative Gallery
    Authentication
    Безпека та відповідність
    Консоль адміністратора
    Адмінська Wiki
    Керування через Telegram
    Система локалей
    Мобільний Досвід
    Паттерни Оптимізації Продуктивності
    Приклади
    Швидкий старт
    Базове налаштування
    Білий лейбл
    Користувацьке брендування
    Інтеграція Web3
    Реальні приклади
    Розширені функції
    Кастомізація
    Швидкий старт — ваш перший клон Ring
    Повний посібник налаштування
    Вертикальні пресети (SSOT)
    Ringization playbook
    Брендування
    Теми
    Функції
    Локалізація
    Налаштування токеноміки
    Інтеграція платіжних шлюзів
    Еталонні деплої Ring
    Конфігурація
    Публічні змінні середовища
    Секрети Order Lab
    Project ID WalletConnect (Reown Cloud)
    Підтримувані сервіси
    Вікі NODUS (знання проєкту)
    Плейбук конфігурації
    Web3
    Token launch jurisdictions
    Гаманець
    Поради з безпеки гаманця
    Інтеграції
    Ethereum гаманці (Wagmi v3)
    RingFileBase (API об’єктного сховища)
    Ring CDN (edge RingFileBase)
    Розгортання
    Self-hosted розгортання
    Vercel
    Docker
    Конфігурація Середовища
    Моніторинг та Аналітика
    Оптимізація продуктивності
    Резервне копіювання і відновлення
    Архітектура
    Data Model
    Security
    Real Time
    Синхронізація discovery після мутацій
    Архітектура PaymentConductor
    Архітектура WalletConductor
    Бекенд Сервіси
    Інтеграція Firebase
    Розробка
    Ring MCP Server

    Швидкий вхід (CTO · аудитори · агенти)

    Вітаємо — місія та аудиторії
    Швидкий довідник
    Початок роботи
    Архітектура та Auth.js
    Режими бекенду та БД (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Деплой (Docker · k8s)
    Безпека та відповідність
    ringdom.org — база LegioX
    Код — ліцензія MIT (GitHub)

    Documentation

    Концепції, цінність і типові сценарії

    Ласкаво просимо до Ring
    Швидкий довідник
    Початок роботи
    Передумови
    Встановлення
    Валідація першого успіху
    Наступні кроки
    Функції
    Магазин
    Склад і залишки
    Керування вендорами
    Комісії та розрахунки
    SubscriptionConductor
    PaymentConductor
    Ring Oracle
    Інтеграція платежів
    Публічні пули та DAO-банки
    Інтеграція WayForPay
    Web3 Гаманець
    WalletConductor
    Партнерська та реферальна підтримка
    Реферальні коди (Refcodes)
    NFT Exhibition Marketplace
    Solana NFT Gates
    Система Стейкінга Токенів
    Лабораторія проєкту власника (Owner Project Lab)
    Сутності
    Можливості
    Повідомлення
    Завдання Ring
    WebRTC-дзвінки та STUNner TURN
    Ігри з друзями
    Модуль Новин - Цифровий Газетний Досвід
    Блоги учасників
    Сторінки публічного профілю
    Віджети профілю облікового запису
    Ring File Cabinet
    Система Резервування Імен Користувачів
    Науковий редактор
    Notifications
    Push-сповіщення через FCM (Ring)
    Email AI-CRM
    Ring Mailer і RingdomX Mail
    Протокол Tunnel
    VideoConductor
    MediaConductor
    Generative Gallery
    Authentication
    Безпека та відповідність
    Консоль адміністратора
    Адмінська Wiki
    Керування через Telegram
    Система локалей
    Мобільний Досвід
    Паттерни Оптимізації Продуктивності
    Приклади
    Швидкий старт
    Базове налаштування
    Білий лейбл
    Користувацьке брендування
    Інтеграція Web3
    Реальні приклади
    Розширені функції
    Кастомізація
    Швидкий старт — ваш перший клон Ring
    Повний посібник налаштування
    Вертикальні пресети (SSOT)
    Ringization playbook
    Брендування
    Теми
    Функції
    Локалізація
    Налаштування токеноміки
    Інтеграція платіжних шлюзів
    Еталонні деплої Ring
    Конфігурація
    Публічні змінні середовища
    Секрети Order Lab
    Project ID WalletConnect (Reown Cloud)
    Підтримувані сервіси
    Вікі NODUS (знання проєкту)
    Плейбук конфігурації
    Web3
    Token launch jurisdictions
    Гаманець
    Поради з безпеки гаманця
    Інтеграції
    Ethereum гаманці (Wagmi v3)
    RingFileBase (API об’єктного сховища)
    Ring CDN (edge RingFileBase)
    Розгортання
    Self-hosted розгортання
    Vercel
    Docker
    Конфігурація Середовища
    Моніторинг та Аналітика
    Оптимізація продуктивності
    Резервне копіювання і відновлення
    Архітектура
    Data Model
    Security
    Real Time
    Синхронізація discovery після мутацій
    Архітектура PaymentConductor
    Архітектура WalletConductor
    Бекенд Сервіси
    Інтеграція Firebase
    Розробка
    Ring MCP Server

    Швидкий вхід (CTO · аудитори · агенти)

    Вітаємо — місія та аудиторії
    Швидкий довідник
    Початок роботи
    Архітектура та Auth.js
    Режими бекенду та БД (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Деплой (Docker · k8s)
    Безпека та відповідність
    ringdom.org — база LegioX
    Код — ліцензія MIT (GitHub)

    Documentation

    Концепції, цінність і типові сценарії

    Ласкаво просимо до Ring
    Швидкий довідник
    Початок роботи
    Передумови
    Встановлення
    Валідація першого успіху
    Наступні кроки
    Функції
    Магазин
    Склад і залишки
    Керування вендорами
    Комісії та розрахунки
    SubscriptionConductor
    PaymentConductor
    Ring Oracle
    Інтеграція платежів
    Публічні пули та DAO-банки
    Інтеграція WayForPay
    Web3 Гаманець
    WalletConductor
    Партнерська та реферальна підтримка
    Реферальні коди (Refcodes)
    NFT Exhibition Marketplace
    Solana NFT Gates
    Система Стейкінга Токенів
    Лабораторія проєкту власника (Owner Project Lab)
    Сутності
    Можливості
    Повідомлення
    Завдання Ring
    WebRTC-дзвінки та STUNner TURN
    Ігри з друзями
    Модуль Новин - Цифровий Газетний Досвід
    Блоги учасників
    Сторінки публічного профілю
    Віджети профілю облікового запису
    Ring File Cabinet
    Система Резервування Імен Користувачів
    Науковий редактор
    Notifications
    Push-сповіщення через FCM (Ring)
    Email AI-CRM
    Ring Mailer і RingdomX Mail
    Протокол Tunnel
    VideoConductor
    MediaConductor
    Generative Gallery
    Authentication
    Безпека та відповідність
    Консоль адміністратора
    Адмінська Wiki
    Керування через Telegram
    Система локалей
    Мобільний Досвід
    Паттерни Оптимізації Продуктивності
    Приклади
    Швидкий старт
    Базове налаштування
    Білий лейбл
    Користувацьке брендування
    Інтеграція Web3
    Реальні приклади
    Розширені функції
    Кастомізація
    Швидкий старт — ваш перший клон Ring
    Повний посібник налаштування
    Вертикальні пресети (SSOT)
    Ringization playbook
    Брендування
    Теми
    Функції
    Локалізація
    Налаштування токеноміки
    Інтеграція платіжних шлюзів
    Еталонні деплої Ring
    Конфігурація
    Публічні змінні середовища
    Секрети Order Lab
    Project ID WalletConnect (Reown Cloud)
    Підтримувані сервіси
    Вікі NODUS (знання проєкту)
    Плейбук конфігурації
    Web3
    Token launch jurisdictions
    Гаманець
    Поради з безпеки гаманця
    Інтеграції
    Ethereum гаманці (Wagmi v3)
    RingFileBase (API об’єктного сховища)
    Ring CDN (edge RingFileBase)
    Розгортання
    Self-hosted розгортання
    Vercel
    Docker
    Конфігурація Середовища
    Моніторинг та Аналітика
    Оптимізація продуктивності
    Резервне копіювання і відновлення
    Архітектура
    Data Model
    Security
    Real Time
    Синхронізація discovery після мутацій
    Архітектура PaymentConductor
    Архітектура WalletConductor
    Бекенд Сервіси
    Інтеграція Firebase
    Розробка
    Ring MCP Server

    Швидкий вхід (CTO · аудитори · агенти)

    Вітаємо — місія та аудиторії
    Швидкий довідник
    Початок роботи
    Архітектура та Auth.js
    Режими бекенду та БД (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Деплой (Docker · k8s)
    Безпека та відповідність
    ringdom.org — база LegioX
    Код — ліцензія MIT (GitHub)
    Ring Logo

    Loading documentation...

    Preparing Ring content

    Ring Logo

    Loading documentation...

    Preparing Ring content

    Ring Logo

    Loading documentation...

    Preparing Ring content

    Оптимізація продуктивності

    Фільтруйте за Засновник / Розробник у боковому меню документації. Ця сторінка замінює старий вигаданий контент (наприклад, $2.8M revenue, вигадані приклади dashboard, фейкові SLA Lighthouse). Вказані нижче патерни підтверджені у next.config.mjs, lib/cached-data.ts, components/providers/web-vitals-provider.tsx, features/analytics/lib/analytics-db.ts, а також актуальними висновками з деплою в Docker.

    Ring Platform фокусується на швидкому першому рендері (React 19 Server Components за замовчуванням), завжди актуальних списках на маркетплейсі (теги кешу + синхронізація мутацій) та вимірюваному UX (інжест Core Web Vitals). Продуктивність — це питання деплою: тайм-аути білду, SSR-підводні камені та інвалідація кешу важливі не менше, ніж фронт-ендова "поліровка".

    Перевірений стек продуктивності

    РівеньМеханізмДе реалізовано
    ФреймворкNext.js 16 App Router, cacheComponents: truenext.config.mjs
    Кешування списківunstable_cache + revalidateTaglib/cached-data.ts
    Дедуплікація запитівReact.cache() на серверних читанняхlib/services/firebase-service-manager.ts, actions
    read-after-write30с процесний кеш сутностіDatabaseService EntityCache
    Важкий клієнтський UIdynamic(..., { ssr: false })components/docs/mdx-heavy-components.tsx
    Код у документаціїСерверний Shiki (highlightCodeToHtml)components/docs/code.tsx
    Зображенняnext/image WebP/AVIFnext.config.mjs → images.formats
    UX-метрикиuseReportWebVitals → POST /api/analytics/web-vitalscomponents/providers/web-vitals-provider.tsx, features/analytics/lib/analytics-db.ts
    Ресурсні підказкиprefetchDNS / preinit скриптиcontexts/app-context.tsx

    Чому продуктивність важлива для вашого клону

    Повільні сторінки опортюніті та стору безпосередньо б'ють по конверсіях: користувачі залишають кошик, продавці бачать порожні дашборди, AI-меджер надсилає сповіщення “зі запізненням”, навіть коли дані актуальні.

    Що власники можуть оптимізувати без коду

    Оцінити спочатку

    В адмінці → Аналітика показує медіани Web Vitals і клієнтські помилки — зафіксуйте базову лінію до ребрендингу або додавання важких hero‑зображень.

    Дисципліна роботи з зображеннями

    Зображення товарів та сутностей — тільки Blob/CDN URL через next/image. Перегруз PNG-графіки hero найчастіше псують LCP у нових клонах.

    Актуальність списків

    Після публікації оголошень кеші повинні інвалідовуватись — якщо списки застарілі, налагодьте синхронізацію перед масштабуванням серверів.

    Кешування та актуальність списків

    Цикл життя кешу сторінки списку

    Кеш списків, розділений по ролям

    Цей самий патерн використовується для сутностей (getCachedEntitiesForRole / invalidateEntitiesCache) та агрегату адмін-статистики новин (invalidateNewsStatsCache).

    Сервіси мутацій використовують syncOpportunityDiscovery / syncEntityDiscovery — див. Discovery mutation sync. Ніколи не кешуйте шлях запису; завжди інвалідовуйте кеш після CRUD.

    Серверний dedup читання (React.cache)

    Обгорніть дорогі серверні фетчі у cache() з react, щоб паралельні Server Components ділили один виклик до БД на запит (getCachedDocument в lib/services/firebase-service-manager.ts).

    read-after-write: 30 секунд

    DatabaseService підтримує нетривалий кеш (EntityCache з TTL 30с): створені дані будуть одразу читатись у межах одного процесу — не замінник revalidateTag.

    Продакшн-патерни React 19

    PatternДе у проєкті

    Дотична документація

    Related documentation

    Monitoring & Analytics

    Наступний крок: health checks, Web Vitals API і аналітика для адмінів.

    Docker

    За тим же флоу: інциденти мермейд SSR та health-проби.

    Discovery Mutation Sync

    Детальніше: інвалідація кешу після CRUD по сутностях або опортюніті.

    Performance

    До матеріалів: патерни cache(), SSG і edge-примітки для розробників.

    Оптимізація продуктивності

    Фільтруйте за Засновник / Розробник у боковому меню документації. Ця сторінка замінює старий вигаданий контент (наприклад, $2.8M revenue, вигадані приклади dashboard, фейкові SLA Lighthouse). Вказані нижче патерни підтверджені у next.config.mjs, lib/cached-data.ts, components/providers/web-vitals-provider.tsx, features/analytics/lib/analytics-db.ts, а також актуальними висновками з деплою в Docker.

    Ring Platform фокусується на швидкому першому рендері (React 19 Server Components за замовчуванням), завжди актуальних списках на маркетплейсі (теги кешу + синхронізація мутацій) та вимірюваному UX (інжест Core Web Vitals). Продуктивність — це питання деплою: тайм-аути білду, SSR-підводні камені та інвалідація кешу важливі не менше, ніж фронт-ендова "поліровка".

    Перевірений стек продуктивності

    РівеньМеханізмДе реалізовано
    ФреймворкNext.js 16 App Router, cacheComponents: truenext.config.mjs
    Кешування списківunstable_cache + revalidateTaglib/cached-data.ts
    Дедуплікація запитівReact.cache() на серверних читанняхlib/services/firebase-service-manager.ts, actions
    read-after-write30с процесний кеш сутностіDatabaseService EntityCache
    Важкий клієнтський UIdynamic(..., { ssr: false })components/docs/mdx-heavy-components.tsx
    Код у документаціїСерверний Shiki (highlightCodeToHtml)components/docs/code.tsx
    Зображенняnext/image WebP/AVIFnext.config.mjs → images.formats
    UX-метрикиuseReportWebVitals → POST /api/analytics/web-vitalscomponents/providers/web-vitals-provider.tsx, features/analytics/lib/analytics-db.ts
    Ресурсні підказкиprefetchDNS / preinit скриптиcontexts/app-context.tsx

    Чому продуктивність важлива для вашого клону

    Повільні сторінки опортюніті та стору безпосередньо б'ють по конверсіях: користувачі залишають кошик, продавці бачать порожні дашборди, AI-меджер надсилає сповіщення “зі запізненням”, навіть коли дані актуальні.

    Що власники можуть оптимізувати без коду

    Оцінити спочатку

    В адмінці → Аналітика показує медіани Web Vitals і клієнтські помилки — зафіксуйте базову лінію до ребрендингу або додавання важких hero‑зображень.

    Дисципліна роботи з зображеннями

    Зображення товарів та сутностей — тільки Blob/CDN URL через next/image. Перегруз PNG-графіки hero найчастіше псують LCP у нових клонах.

    Актуальність списків

    Після публікації оголошень кеші повинні інвалідовуватись — якщо списки застарілі, налагодьте синхронізацію перед масштабуванням серверів.

    Кешування та актуальність списків

    Цикл життя кешу сторінки списку

    Кеш списків, розділений по ролям

    Цей самий патерн використовується для сутностей (getCachedEntitiesForRole / invalidateEntitiesCache) та агрегату адмін-статистики новин (invalidateNewsStatsCache).

    Сервіси мутацій використовують syncOpportunityDiscovery / syncEntityDiscovery — див. Discovery mutation sync. Ніколи не кешуйте шлях запису; завжди інвалідовуйте кеш після CRUD.

    Серверний dedup читання (React.cache)

    Обгорніть дорогі серверні фетчі у cache() з react, щоб паралельні Server Components ділили один виклик до БД на запит (getCachedDocument в lib/services/firebase-service-manager.ts).

    read-after-write: 30 секунд

    DatabaseService підтримує нетривалий кеш (EntityCache з TTL 30с): створені дані будуть одразу читатись у межах одного процесу — не замінник revalidateTag.

    Продакшн-патерни React 19

    PatternДе у проєкті

    Дотична документація

    Related documentation

    Monitoring & Analytics

    Наступний крок: health checks, Web Vitals API і аналітика для адмінів.

    Docker

    За тим же флоу: інциденти мермейд SSR та health-проби.

    Discovery Mutation Sync

    Детальніше: інвалідація кешу після CRUD по сутностях або опортюніті.

    Performance

    До матеріалів: патерни cache(), SSG і edge-примітки для розробників.

    Оптимізація продуктивності

    Фільтруйте за Засновник / Розробник у боковому меню документації. Ця сторінка замінює старий вигаданий контент (наприклад, $2.8M revenue, вигадані приклади dashboard, фейкові SLA Lighthouse). Вказані нижче патерни підтверджені у next.config.mjs, lib/cached-data.ts, components/providers/web-vitals-provider.tsx, features/analytics/lib/analytics-db.ts, а також актуальними висновками з деплою в Docker.

    Ring Platform фокусується на швидкому першому рендері (React 19 Server Components за замовчуванням), завжди актуальних списках на маркетплейсі (теги кешу + синхронізація мутацій) та вимірюваному UX (інжест Core Web Vitals). Продуктивність — це питання деплою: тайм-аути білду, SSR-підводні камені та інвалідація кешу важливі не менше, ніж фронт-ендова "поліровка".

    Перевірений стек продуктивності

    РівеньМеханізмДе реалізовано
    ФреймворкNext.js 16 App Router, cacheComponents: truenext.config.mjs
    Кешування списківunstable_cache + revalidateTaglib/cached-data.ts
    Дедуплікація запитівReact.cache() на серверних читанняхlib/services/firebase-service-manager.ts, actions
    read-after-write30с процесний кеш сутностіDatabaseService EntityCache
    Важкий клієнтський UIdynamic(..., { ssr: false })components/docs/mdx-heavy-components.tsx
    Код у документаціїСерверний Shiki (highlightCodeToHtml)components/docs/code.tsx
    Зображенняnext/image WebP/AVIFnext.config.mjs → images.formats
    UX-метрикиuseReportWebVitals → POST /api/analytics/web-vitalscomponents/providers/web-vitals-provider.tsx, features/analytics/lib/analytics-db.ts
    Ресурсні підказкиprefetchDNS / preinit скриптиcontexts/app-context.tsx

    Чому продуктивність важлива для вашого клону

    Повільні сторінки опортюніті та стору безпосередньо б'ють по конверсіях: користувачі залишають кошик, продавці бачать порожні дашборди, AI-меджер надсилає сповіщення “зі запізненням”, навіть коли дані актуальні.

    Що власники можуть оптимізувати без коду

    Оцінити спочатку

    В адмінці → Аналітика показує медіани Web Vitals і клієнтські помилки — зафіксуйте базову лінію до ребрендингу або додавання важких hero‑зображень.

    Дисципліна роботи з зображеннями

    Зображення товарів та сутностей — тільки Blob/CDN URL через next/image. Перегруз PNG-графіки hero найчастіше псують LCP у нових клонах.

    Актуальність списків

    Після публікації оголошень кеші повинні інвалідовуватись — якщо списки застарілі, налагодьте синхронізацію перед масштабуванням серверів.

    Кешування та актуальність списків

    Цикл життя кешу сторінки списку

    Кеш списків, розділений по ролям

    Цей самий патерн використовується для сутностей (getCachedEntitiesForRole / invalidateEntitiesCache) та агрегату адмін-статистики новин (invalidateNewsStatsCache).

    Сервіси мутацій використовують syncOpportunityDiscovery / syncEntityDiscovery — див. Discovery mutation sync. Ніколи не кешуйте шлях запису; завжди інвалідовуйте кеш після CRUD.

    Серверний dedup читання (React.cache)

    Обгорніть дорогі серверні фетчі у cache() з react, щоб паралельні Server Components ділили один виклик до БД на запит (getCachedDocument в lib/services/firebase-service-manager.ts).

    read-after-write: 30 секунд

    DatabaseService підтримує нетривалий кеш (EntityCache з TTL 30с): створені дані будуть одразу читатись у межах одного процесу — не замінник revalidateTag.

    Продакшн-патерни React 19

    PatternДе у проєкті

    Дотична документація

    Related documentation

    Monitoring & Analytics

    Наступний крок: health checks, Web Vitals API і аналітика для адмінів.

    Docker

    За тим же флоу: інциденти мермейд SSR та health-проби.

    Discovery Mutation Sync

    Детальніше: інвалідація кешу після CRUD по сутностях або опортюніті.

    Performance

    До матеріалів: патерни cache(), SSG і edge-примітки для розробників.

    Локалізаційний обсяг

    Менше активних мов (NEXT_PUBLIC_SUPPORTED_LOCALES) зменшує обсяг білду та кількість static param при деплої.

    Базові порогові значення Web Vitals (Google, згідно коду)

    МетрикаДобре (≤)Погано (>)
    LCP2.5s4s
    INP200ms500ms
    CLS0.10.25
    TTFB800ms1.8s
    FCP1.8s3s
    FID100ms300ms

    Пороги використовуються у ratingForMetric із features/analytics/lib/analytics-db.ts. Клієнт надсилає рейтинг кожної метрики з next/web-vitals (буферизує і POSTить всі разом на /api/analytics/web-vitals).

    Ставте продуктивність як критерій релізу для нових запусків: пройдіться Lighthouse по /, /opportunities і /store одразу після деплою — тиждень потому звірте з аналітикою в Адмінці.

    useActionState
    features/reviews/components/review-form.tsx
    useOptimistichooks/use-realtime.ts, hooks/use-realtime-opportunities.ts
    Server Actions + revalidatePathapp/_actions/*.ts

    Використовуйте Server Components для контейнерів списків і сутностей; 'use client' залишайте тільки для форм, тунеля, гаманця, та візуалізацій.

    Підводні камені білду та деплою

    1. 1

      Не SSR-іть важкі візуалізації на сервері

      Документаційні і маркетингові графіки підтягуються через dynamic(..., { ssr: false }) у mdx-heavy-components.tsx. Верхньорівневі Mermaid або Shiki сервером викликали 30 секунд завантаження та 503 у production — див. Docker deployment.

    2. 2

      <Code> у документації — асинхронний серверний Shiki

      components/docs/code.tsx використовує highlightCodeToHtml на кожному блоці — не додавайте на ту ж сторінку клієнтські хайлайтери.

    3. 3

      Таймаут білду

      staticPageGenerationTimeout: 180 у next.config.mjs — великі дерева документації чи багато мов вимагають акуратної інкрементальної генерації: зменшіть охоплення у scanDocsStaticParams, якщо білди не встигають в CI.

    4. 4

      Standalone-білд та тюнінг трейсингу

      next.config.mjs задає output: 'standalone' із outputFileTracingRoot, serverExternalPackages (Firebase, Auth.js, Solana, nodemailer) і outputFileTracingIncludes (i18n, локалі, доки, ring-config, server.ts): контейнерні іміджі містять лише потрібні серверні бандли.

    Оптимізація зображень

    У next.config.mjs: WebP/AVIF (images.formats) та remote patterns для Google avatars, Google Fonts, Vercel Blob і cdn.ring-platform.org; специфічні клієнтські патерни — через collectCloneImageRemotePatterns. Додавайте нові CDN хости до images.remotePatterns при підключенні нового клону.

    Вимірювання регресій

    • Збір: WebVitalsProvider (components/providers/web-vitals-provider.tsx), вставлений у app-client-shell.tsx
    • Збереження: міграція 017_ring_analytics_schema.sql
    • Запит: аналітика в адмінці або GET /api/analytics/web-vitals?scope=platform (admin)
    • Вимкнути записи: ANALYTICS_DISABLE_STORAGE=true для навантажувальних тестів

    Повний огляд інструментів: Моніторинг і аналітика.

    Ґрунтовний гайд для розробників

    Реалізаційні патерни (Firebase cache(), статична генерація, edge-прийоми) — у Розробка: продуктивність та Фічі: продуктивність. Перед копіюванням зразків із cache()/Firebase завжди звіряйте приклади з тими, що перевірені на postgres‑primary-клонах.

    Локалізаційний обсяг

    Менше активних мов (NEXT_PUBLIC_SUPPORTED_LOCALES) зменшує обсяг білду та кількість static param при деплої.

    Базові порогові значення Web Vitals (Google, згідно коду)

    МетрикаДобре (≤)Погано (>)
    LCP2.5s4s
    INP200ms500ms
    CLS0.10.25
    TTFB800ms1.8s
    FCP1.8s3s
    FID100ms300ms

    Пороги використовуються у ratingForMetric із features/analytics/lib/analytics-db.ts. Клієнт надсилає рейтинг кожної метрики з next/web-vitals (буферизує і POSTить всі разом на /api/analytics/web-vitals).

    Ставте продуктивність як критерій релізу для нових запусків: пройдіться Lighthouse по /, /opportunities і /store одразу після деплою — тиждень потому звірте з аналітикою в Адмінці.

    useActionState
    features/reviews/components/review-form.tsx
    useOptimistichooks/use-realtime.ts, hooks/use-realtime-opportunities.ts
    Server Actions + revalidatePathapp/_actions/*.ts

    Використовуйте Server Components для контейнерів списків і сутностей; 'use client' залишайте тільки для форм, тунеля, гаманця, та візуалізацій.

    Підводні камені білду та деплою

    1. 1

      Не SSR-іть важкі візуалізації на сервері

      Документаційні і маркетингові графіки підтягуються через dynamic(..., { ssr: false }) у mdx-heavy-components.tsx. Верхньорівневі Mermaid або Shiki сервером викликали 30 секунд завантаження та 503 у production — див. Docker deployment.

    2. 2

      <Code> у документації — асинхронний серверний Shiki

      components/docs/code.tsx використовує highlightCodeToHtml на кожному блоці — не додавайте на ту ж сторінку клієнтські хайлайтери.

    3. 3

      Таймаут білду

      staticPageGenerationTimeout: 180 у next.config.mjs — великі дерева документації чи багато мов вимагають акуратної інкрементальної генерації: зменшіть охоплення у scanDocsStaticParams, якщо білди не встигають в CI.

    4. 4

      Standalone-білд та тюнінг трейсингу

      next.config.mjs задає output: 'standalone' із outputFileTracingRoot, serverExternalPackages (Firebase, Auth.js, Solana, nodemailer) і outputFileTracingIncludes (i18n, локалі, доки, ring-config, server.ts): контейнерні іміджі містять лише потрібні серверні бандли.

    Оптимізація зображень

    У next.config.mjs: WebP/AVIF (images.formats) та remote patterns для Google avatars, Google Fonts, Vercel Blob і cdn.ring-platform.org; специфічні клієнтські патерни — через collectCloneImageRemotePatterns. Додавайте нові CDN хости до images.remotePatterns при підключенні нового клону.

    Вимірювання регресій

    • Збір: WebVitalsProvider (components/providers/web-vitals-provider.tsx), вставлений у app-client-shell.tsx
    • Збереження: міграція 017_ring_analytics_schema.sql
    • Запит: аналітика в адмінці або GET /api/analytics/web-vitals?scope=platform (admin)
    • Вимкнути записи: ANALYTICS_DISABLE_STORAGE=true для навантажувальних тестів

    Повний огляд інструментів: Моніторинг і аналітика.

    Ґрунтовний гайд для розробників

    Реалізаційні патерни (Firebase cache(), статична генерація, edge-прийоми) — у Розробка: продуктивність та Фічі: продуктивність. Перед копіюванням зразків із cache()/Firebase завжди звіряйте приклади з тими, що перевірені на postgres‑primary-клонах.

    Локалізаційний обсяг

    Менше активних мов (NEXT_PUBLIC_SUPPORTED_LOCALES) зменшує обсяг білду та кількість static param при деплої.

    Базові порогові значення Web Vitals (Google, згідно коду)

    МетрикаДобре (≤)Погано (>)
    LCP2.5s4s
    INP200ms500ms
    CLS0.10.25
    TTFB800ms1.8s
    FCP1.8s3s
    FID100ms300ms

    Пороги використовуються у ratingForMetric із features/analytics/lib/analytics-db.ts. Клієнт надсилає рейтинг кожної метрики з next/web-vitals (буферизує і POSTить всі разом на /api/analytics/web-vitals).

    Ставте продуктивність як критерій релізу для нових запусків: пройдіться Lighthouse по /, /opportunities і /store одразу після деплою — тиждень потому звірте з аналітикою в Адмінці.

    useActionState
    features/reviews/components/review-form.tsx
    useOptimistichooks/use-realtime.ts, hooks/use-realtime-opportunities.ts
    Server Actions + revalidatePathapp/_actions/*.ts

    Використовуйте Server Components для контейнерів списків і сутностей; 'use client' залишайте тільки для форм, тунеля, гаманця, та візуалізацій.

    Підводні камені білду та деплою

    1. 1

      Не SSR-іть важкі візуалізації на сервері

      Документаційні і маркетингові графіки підтягуються через dynamic(..., { ssr: false }) у mdx-heavy-components.tsx. Верхньорівневі Mermaid або Shiki сервером викликали 30 секунд завантаження та 503 у production — див. Docker deployment.

    2. 2

      <Code> у документації — асинхронний серверний Shiki

      components/docs/code.tsx використовує highlightCodeToHtml на кожному блоці — не додавайте на ту ж сторінку клієнтські хайлайтери.

    3. 3

      Таймаут білду

      staticPageGenerationTimeout: 180 у next.config.mjs — великі дерева документації чи багато мов вимагають акуратної інкрементальної генерації: зменшіть охоплення у scanDocsStaticParams, якщо білди не встигають в CI.

    4. 4

      Standalone-білд та тюнінг трейсингу

      next.config.mjs задає output: 'standalone' із outputFileTracingRoot, serverExternalPackages (Firebase, Auth.js, Solana, nodemailer) і outputFileTracingIncludes (i18n, локалі, доки, ring-config, server.ts): контейнерні іміджі містять лише потрібні серверні бандли.

    Оптимізація зображень

    У next.config.mjs: WebP/AVIF (images.formats) та remote patterns для Google avatars, Google Fonts, Vercel Blob і cdn.ring-platform.org; специфічні клієнтські патерни — через collectCloneImageRemotePatterns. Додавайте нові CDN хости до images.remotePatterns при підключенні нового клону.

    Вимірювання регресій

    • Збір: WebVitalsProvider (components/providers/web-vitals-provider.tsx), вставлений у app-client-shell.tsx
    • Збереження: міграція 017_ring_analytics_schema.sql
    • Запит: аналітика в адмінці або GET /api/analytics/web-vitals?scope=platform (admin)
    • Вимкнути записи: ANALYTICS_DISABLE_STORAGE=true для навантажувальних тестів

    Повний огляд інструментів: Моніторинг і аналітика.

    Ґрунтовний гайд для розробників

    Реалізаційні патерни (Firebase cache(), статична генерація, edge-прийоми) — у Розробка: продуктивність та Фічі: продуктивність. Перед копіюванням зразків із cache()/Firebase завжди звіряйте приклади з тими, що перевірені на postgres‑primary-клонах.

    1. Документація
    2. /Розгортання
    3. /Оптимізація продуктивності

    Оновлено 22 серп. 2026 р.4 хв прослуховування

    1. Документація
    2. /Розгортання
    3. /Оптимізація продуктивності

    Оновлено 22 серп. 2026 р.4 хв прослуховування

    1. Документація
    2. /Розгортання
    3. /Оптимізація продуктивності

    Оновлено 22 серп. 2026 р.4 хв прослуховування