МожливостіСутності
Документація
    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

    Моніторинг та аналітика

    Відфільтруйте по Засновник/Розробник у боковому меню документації. Джерела моніторингу — app/api/health, app/api/analytics/*, lib/logger.ts, public/scripts/analytics.js + RingAnalyticsBeacon, і аналітичний UI адміністратора. Окремої сторінки features/analytics немає — ця стаття дає огляд аналітики по всій платформі Ring.

    Ring Platform збирає першу сторону телеметрії у таблиці PostgreSQL JSONB, має health endpoint для контейнерів, та структуровані серверні логи. Зовнішній APM (Sentry, Vercel Analytics) інтегрується через змінні середовища, але не обов’язковий для основної роботи.

    Шари моніторингу (реалізовано фактично)

    РівеньМеханізмОсновний сигнал
    LivenessGET /api/health (+ HEAD)Процес живий, попередження щодо оточення, пам’ять
    UX продуктивністьWebVitalsProvider → POST /api/analytics/web-vitalsLCP, CLS, INP, TTFB, FCP
    Події продуктуanalytics.js + RingAnalyticsBeacon → POST /api/analytics/appСесії, завантаження сторінок, кастомні події (analytics_events)
    Персональні сторінкиrecordPersonalPageView → personal_page_viewУнікальні відвідування 24г/7д за ролями на /{username}
    Клієнтські помилкиPOST /api/analytics/errorsStack trace, компонента, рівень серйозності
    Панель адміністратора/admin/analyticsgetPlatformAnalytics() включно з personalPages
    Realtime підключення/api/tunnel/ping, /api/tunnel/heartbeatЗатримка тунелю / здоров'я сесії
    Серверні логиlib/logger.tsJSON-рядки у stdout (LOG_LEVEL)
    Опціональна інфраструктураDocker-профіль monitoringPrometheus + Grafana (локальний dev)

    Чому операторам важливо моніторити

    Ring-клон поєднує авторизацію, ринкові дані, платежі і сповіщення в реальному часі. Баг часто проявляється як “сайт відкривається, але замовлення не синхронізуються”, а не як червона помилка. Унікальні відвідування персональної сторінки дозволяють зрозуміти, чи отримують власники довіру — при цьому власник сам не накручує собі лічильник.

    На що дивитися, не читаючи код

    Health endpoint

    Використовуйте GET /api/health у балансувальнику навантаження чи онлайн-чекері — якщо 503, це деградація (часто бракує AUTH_SECRET).

    Адмін-аналітика

    Admin → Analytics: кількість користувачів, медіани Web Vitals, останні клієнтські помилки і personalPages (топові профілі, розподіл по ролях).

    Публічні профілі

    Архітектура

    Приймання першої сторони аналітики

    Health check — app/api/health/route.ts

    Повертає JSON: status (healthy | degraded | unhealthy), аптайм, пам’ять, статус services.database (postgresql чи firebase), Docker-блок якщо є. Якщо бракує AUTH_SECRET → degraded + HTTP 503.

    Клієнтський маяк (перевірено)

    КомпонентШлях
    Скриптpublic/scripts/analytics.js — батчить у POST /api/analytics/app через sendBeacon/fetch; window.ringAnalytics
    App Router gluecomponents/providers/ring-analytics-beacon.tsx — підключає скрипт; викликає pageView при зміні pathname/searchParams (недостатньо просто “hard load”)
    Mountcomponents/providers/app-client-shell.tsx

    Легасі-скрипт public/scripts/app-analytics.js є в репозиторії, але використовується як SSOT — не документуйте його як живий.

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

    Related documentation

    Public Profile Pages

    Той самий workflow: персональна статистика переглядів і пропуск власника.

    Backup & Recovery

    Наступний крок: відновлення після інцидентів, що помітно через моніторинг.

    Performance Optimization

    Див. також: налаштування Web Vitals та performance-операції.

    Environment Configuration

    Залежить від: CRON_SECRET, LOG_LEVEL, ANALYTICS_DISABLE_STORAGE, опційний Sentry.

    Моніторинг та аналітика

    Відфільтруйте по Засновник/Розробник у боковому меню документації. Джерела моніторингу — app/api/health, app/api/analytics/*, lib/logger.ts, public/scripts/analytics.js + RingAnalyticsBeacon, і аналітичний UI адміністратора. Окремої сторінки features/analytics немає — ця стаття дає огляд аналітики по всій платформі Ring.

    Ring Platform збирає першу сторону телеметрії у таблиці PostgreSQL JSONB, має health endpoint для контейнерів, та структуровані серверні логи. Зовнішній APM (Sentry, Vercel Analytics) інтегрується через змінні середовища, але не обов’язковий для основної роботи.

    Шари моніторингу (реалізовано фактично)

    РівеньМеханізмОсновний сигнал
    LivenessGET /api/health (+ HEAD)Процес живий, попередження щодо оточення, пам’ять
    UX продуктивністьWebVitalsProvider → POST /api/analytics/web-vitalsLCP, CLS, INP, TTFB, FCP
    Події продуктуanalytics.js + RingAnalyticsBeacon → POST /api/analytics/appСесії, завантаження сторінок, кастомні події (analytics_events)
    Персональні сторінкиrecordPersonalPageView → personal_page_viewУнікальні відвідування 24г/7д за ролями на /{username}
    Клієнтські помилкиPOST /api/analytics/errorsStack trace, компонента, рівень серйозності
    Панель адміністратора/admin/analyticsgetPlatformAnalytics() включно з personalPages
    Realtime підключення/api/tunnel/ping, /api/tunnel/heartbeatЗатримка тунелю / здоров'я сесії
    Серверні логиlib/logger.tsJSON-рядки у stdout (LOG_LEVEL)
    Опціональна інфраструктураDocker-профіль monitoringPrometheus + Grafana (локальний dev)

    Чому операторам важливо моніторити

    Ring-клон поєднує авторизацію, ринкові дані, платежі і сповіщення в реальному часі. Баг часто проявляється як “сайт відкривається, але замовлення не синхронізуються”, а не як червона помилка. Унікальні відвідування персональної сторінки дозволяють зрозуміти, чи отримують власники довіру — при цьому власник сам не накручує собі лічильник.

    На що дивитися, не читаючи код

    Health endpoint

    Використовуйте GET /api/health у балансувальнику навантаження чи онлайн-чекері — якщо 503, це деградація (часто бракує AUTH_SECRET).

    Адмін-аналітика

    Admin → Analytics: кількість користувачів, медіани Web Vitals, останні клієнтські помилки і personalPages (топові профілі, розподіл по ролях).

    Публічні профілі

    Архітектура

    Приймання першої сторони аналітики

    Health check — app/api/health/route.ts

    Повертає JSON: status (healthy | degraded | unhealthy), аптайм, пам’ять, статус services.database (postgresql чи firebase), Docker-блок якщо є. Якщо бракує AUTH_SECRET → degraded + HTTP 503.

    Клієнтський маяк (перевірено)

    КомпонентШлях
    Скриптpublic/scripts/analytics.js — батчить у POST /api/analytics/app через sendBeacon/fetch; window.ringAnalytics
    App Router gluecomponents/providers/ring-analytics-beacon.tsx — підключає скрипт; викликає pageView при зміні pathname/searchParams (недостатньо просто “hard load”)
    Mountcomponents/providers/app-client-shell.tsx

    Легасі-скрипт public/scripts/app-analytics.js є в репозиторії, але використовується як SSOT — не документуйте його як живий.

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

    Related documentation

    Public Profile Pages

    Той самий workflow: персональна статистика переглядів і пропуск власника.

    Backup & Recovery

    Наступний крок: відновлення після інцидентів, що помітно через моніторинг.

    Performance Optimization

    Див. також: налаштування Web Vitals та performance-операції.

    Environment Configuration

    Залежить від: CRON_SECRET, LOG_LEVEL, ANALYTICS_DISABLE_STORAGE, опційний Sentry.

    Моніторинг та аналітика

    Відфільтруйте по Засновник/Розробник у боковому меню документації. Джерела моніторингу — app/api/health, app/api/analytics/*, lib/logger.ts, public/scripts/analytics.js + RingAnalyticsBeacon, і аналітичний UI адміністратора. Окремої сторінки features/analytics немає — ця стаття дає огляд аналітики по всій платформі Ring.

    Ring Platform збирає першу сторону телеметрії у таблиці PostgreSQL JSONB, має health endpoint для контейнерів, та структуровані серверні логи. Зовнішній APM (Sentry, Vercel Analytics) інтегрується через змінні середовища, але не обов’язковий для основної роботи.

    Шари моніторингу (реалізовано фактично)

    РівеньМеханізмОсновний сигнал
    LivenessGET /api/health (+ HEAD)Процес живий, попередження щодо оточення, пам’ять
    UX продуктивністьWebVitalsProvider → POST /api/analytics/web-vitalsLCP, CLS, INP, TTFB, FCP
    Події продуктуanalytics.js + RingAnalyticsBeacon → POST /api/analytics/appСесії, завантаження сторінок, кастомні події (analytics_events)
    Персональні сторінкиrecordPersonalPageView → personal_page_viewУнікальні відвідування 24г/7д за ролями на /{username}
    Клієнтські помилкиPOST /api/analytics/errorsStack trace, компонента, рівень серйозності
    Панель адміністратора/admin/analyticsgetPlatformAnalytics() включно з personalPages
    Realtime підключення/api/tunnel/ping, /api/tunnel/heartbeatЗатримка тунелю / здоров'я сесії
    Серверні логиlib/logger.tsJSON-рядки у stdout (LOG_LEVEL)
    Опціональна інфраструктураDocker-профіль monitoringPrometheus + Grafana (локальний dev)

    Чому операторам важливо моніторити

    Ring-клон поєднує авторизацію, ринкові дані, платежі і сповіщення в реальному часі. Баг часто проявляється як “сайт відкривається, але замовлення не синхронізуються”, а не як червона помилка. Унікальні відвідування персональної сторінки дозволяють зрозуміти, чи отримують власники довіру — при цьому власник сам не накручує собі лічильник.

    На що дивитися, не читаючи код

    Health endpoint

    Використовуйте GET /api/health у балансувальнику навантаження чи онлайн-чекері — якщо 503, це деградація (часто бракує AUTH_SECRET).

    Адмін-аналітика

    Admin → Analytics: кількість користувачів, медіани Web Vitals, останні клієнтські помилки і personalPages (топові профілі, розподіл по ролях).

    Публічні профілі

    Архітектура

    Приймання першої сторони аналітики

    Health check — app/api/health/route.ts

    Повертає JSON: status (healthy | degraded | unhealthy), аптайм, пам’ять, статус services.database (postgresql чи firebase), Docker-блок якщо є. Якщо бракує AUTH_SECRET → degraded + HTTP 503.

    Клієнтський маяк (перевірено)

    КомпонентШлях
    Скриптpublic/scripts/analytics.js — батчить у POST /api/analytics/app через sendBeacon/fetch; window.ringAnalytics
    App Router gluecomponents/providers/ring-analytics-beacon.tsx — підключає скрипт; викликає pageView при зміні pathname/searchParams (недостатньо просто “hard load”)
    Mountcomponents/providers/app-client-shell.tsx

    Легасі-скрипт public/scripts/app-analytics.js є в репозиторії, але використовується як SSOT — не документуйте його як живий.

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

    Related documentation

    Public Profile Pages

    Той самий workflow: персональна статистика переглядів і пропуск власника.

    Backup & Recovery

    Наступний крок: відновлення після інцидентів, що помітно через моніторинг.

    Performance Optimization

    Див. також: налаштування Web Vitals та performance-операції.

    Environment Configuration

    Залежить від: CRON_SECRET, LOG_LEVEL, ANALYTICS_DISABLE_STORAGE, опційний Sentry.

    Власники бачать у віджеті на персональній сторінці унікальні відвідування за 24г/7д.

    Кореляція зі збереженням резервних копій

    Моніторинг покаже коли щось зламалось; резервні — що можна відновити.

    Типові сценарії тривог

    • Health → degraded — після деплою втрачені важливі змінні; перевірте секрети до postgres.
    • Web Vitals з “poor” ростуть — проблема з CDN, вагою зображень чи SSR; шукайте реліз-тег (BUILD_DATE / GIT_COMMIT у health JSON якщо вказано).
    • Стрибок у analytics_errors — зламався клієнтський бандл або сторонній скрипт; можна подивитись у адмін-панелі.
    • Багато роз'єднань тунелю — дивіться Realtime transport; часто це edge/WSS або проксі, не база.

    Визначте, кому приходять тривоги (оператор чи розробник) і що в клоні вважається “падінням”. Ring OSS не має готової інтеграції з PagerDuty; ви самі підключаєте health чек до свого провайдера.

    НЕ

    Поверхня API для аналітики

    МаршрутМетодАвторизаціяТаблиця/Дані
    /api/analytics/web-vitalsPOSTОпціональна сесіяweb_vitals
    /api/analytics/web-vitalsGETАдмінЗапит web_vitals або сумарно ?scope=platform
    /api/analytics/appPOSTОпціональна сесіяanalytics_events
    /api/analytics/errorsPOSTОпціональна сесіяanalytics_errors
    /api/analytics/errorsGETАдмінСписок помилок
    /api/analytics/devicePOSTПотрібна сесіяuser_device_telemetry
    /api/analytics/platform-statsGETАдмінЛічильники: users, entities, opportunities
    /api/analytics/navigationPOSTОпціональна сесіяЗаглушка — { ok: true }, без збереження

    Реалізація: features/analytics/lib/analytics-db.ts (insertAnalyticsEventBatch, insertWebVitalsRecord, insertAnalyticsErrors). Клієнтські Web Vitals: components/providers/web-vitals-provider.tsx — useReportWebVitals з next/web-vitals буферизує CLS, FCP, LCP, TTFB, INP в один POST із debounce (~1.5с, INP замість FID).

    Події персональної сторінки

    КомпонентШлях
    Тип подіїpersonal_page_view
    Записувачfeatures/analytics/lib/personal-page-analytics.ts → recordPersonalPageView
    Сайт викликуapp/[locale]/[username]/page.tsx — пропускає власника
    Віджет власникаgetPersonalPageViewStats (features/auth/services/personal-page-stats.ts)
    АдмінgetPersonalPagePlatformStats → PlatformAnalyticsSummary.personalPages
    Ангажуванняpersonal_page_view агрегується з page_view / app_load / docs_page_view у адмін-UI

    Алгоритм унікальних візитів: Public Profile Pages.

    Таблиці бази даних

    Прописані у data/schema.sql та міграції 017_ring_analytics_schema.sql:

    • analytics_events — батчі клієнтської телеметрії та серверні personal_page_view
    • web_vitals — пакети Core Web Vitals
    • analytics_errors — клієнтський лог помилок

    Вимкнення збереження (конфіденційність/навантаження)

    При цьому інгест-роути приймають дані, але ігнорують DatabaseService (isAnalyticsStorageDisabled()). Особисті візити також no-op.

    Структуроване логування

    Середовище: LOG_LEVEL (debug | info | warn | error; типово info у проді, warn у dev), LOG_SILENT=true для тиші. Вивід — JSON-рядки у stdout; у dev не пише очікувані помилки JWT/SSE.

    Опціональний зовнішній APM

    Закоментовано в env.local.template / docker.env.template:

    • SENTRY_DSN — інтеграція з Sentry Next.js (не увімкнено за умовчанням)
    • NEXT_PUBLIC_ANALYTICS_ID, VERCEL_ANALYTICS_ID — тільки для Vercel-хостингу

    Realtime-проби

    МаршрутПризначення
    POST /api/tunnel/pingАутентифікований pong + timestamp
    POST /api/tunnel/heartbeatkeep-alive з'єднання

    Див. Tunnel protocol.

    Моніторинг cron/потоків

    Маршрути cron (/api/cron/*) не працюють без CRON_SECRET. Наприклад: GET /api/cron/email-analytics запускає pipeline email-analytics.

    Опціональні Docker Prometheus + Grafana

    Сервіси: ring-prometheus (:9090), ring-grafana (:3001). Налаштування: docker/prometheus/prometheus.yml.

    Зауваження щодо Prometheus

    Стандартний Prometheus-джоб у конфігу дивиться на /api/metrics, але такий маршрут не реалізовано — фактично скрапить /api/health як JSON (не у форматі Prometheus). Використовуйте цей профіль як стартовий шаблон.

    Точка входу для admin UI

    Серверна сторінка: app/[locale]/admin/analytics/page.tsx — потребує isPlatformAdmin, вантажить getPlatformAnalytics('7d'), включаючи personalPages.

    Real Time

    Деталі: tunnel-протоколи і heartbeat поведінка.

    Admin console

    Наступний крок: точка входу в адмін-консоль /admin/analytics.

    Власники бачать у віджеті на персональній сторінці унікальні відвідування за 24г/7д.

    Кореляція зі збереженням резервних копій

    Моніторинг покаже коли щось зламалось; резервні — що можна відновити.

    Типові сценарії тривог

    • Health → degraded — після деплою втрачені важливі змінні; перевірте секрети до postgres.
    • Web Vitals з “poor” ростуть — проблема з CDN, вагою зображень чи SSR; шукайте реліз-тег (BUILD_DATE / GIT_COMMIT у health JSON якщо вказано).
    • Стрибок у analytics_errors — зламався клієнтський бандл або сторонній скрипт; можна подивитись у адмін-панелі.
    • Багато роз'єднань тунелю — дивіться Realtime transport; часто це edge/WSS або проксі, не база.

    Визначте, кому приходять тривоги (оператор чи розробник) і що в клоні вважається “падінням”. Ring OSS не має готової інтеграції з PagerDuty; ви самі підключаєте health чек до свого провайдера.

    НЕ

    Поверхня API для аналітики

    МаршрутМетодАвторизаціяТаблиця/Дані
    /api/analytics/web-vitalsPOSTОпціональна сесіяweb_vitals
    /api/analytics/web-vitalsGETАдмінЗапит web_vitals або сумарно ?scope=platform
    /api/analytics/appPOSTОпціональна сесіяanalytics_events
    /api/analytics/errorsPOSTОпціональна сесіяanalytics_errors
    /api/analytics/errorsGETАдмінСписок помилок
    /api/analytics/devicePOSTПотрібна сесіяuser_device_telemetry
    /api/analytics/platform-statsGETАдмінЛічильники: users, entities, opportunities
    /api/analytics/navigationPOSTОпціональна сесіяЗаглушка — { ok: true }, без збереження

    Реалізація: features/analytics/lib/analytics-db.ts (insertAnalyticsEventBatch, insertWebVitalsRecord, insertAnalyticsErrors). Клієнтські Web Vitals: components/providers/web-vitals-provider.tsx — useReportWebVitals з next/web-vitals буферизує CLS, FCP, LCP, TTFB, INP в один POST із debounce (~1.5с, INP замість FID).

    Події персональної сторінки

    КомпонентШлях
    Тип подіїpersonal_page_view
    Записувачfeatures/analytics/lib/personal-page-analytics.ts → recordPersonalPageView
    Сайт викликуapp/[locale]/[username]/page.tsx — пропускає власника
    Віджет власникаgetPersonalPageViewStats (features/auth/services/personal-page-stats.ts)
    АдмінgetPersonalPagePlatformStats → PlatformAnalyticsSummary.personalPages
    Ангажуванняpersonal_page_view агрегується з page_view / app_load / docs_page_view у адмін-UI

    Алгоритм унікальних візитів: Public Profile Pages.

    Таблиці бази даних

    Прописані у data/schema.sql та міграції 017_ring_analytics_schema.sql:

    • analytics_events — батчі клієнтської телеметрії та серверні personal_page_view
    • web_vitals — пакети Core Web Vitals
    • analytics_errors — клієнтський лог помилок

    Вимкнення збереження (конфіденційність/навантаження)

    При цьому інгест-роути приймають дані, але ігнорують DatabaseService (isAnalyticsStorageDisabled()). Особисті візити також no-op.

    Структуроване логування

    Середовище: LOG_LEVEL (debug | info | warn | error; типово info у проді, warn у dev), LOG_SILENT=true для тиші. Вивід — JSON-рядки у stdout; у dev не пише очікувані помилки JWT/SSE.

    Опціональний зовнішній APM

    Закоментовано в env.local.template / docker.env.template:

    • SENTRY_DSN — інтеграція з Sentry Next.js (не увімкнено за умовчанням)
    • NEXT_PUBLIC_ANALYTICS_ID, VERCEL_ANALYTICS_ID — тільки для Vercel-хостингу

    Realtime-проби

    МаршрутПризначення
    POST /api/tunnel/pingАутентифікований pong + timestamp
    POST /api/tunnel/heartbeatkeep-alive з'єднання

    Див. Tunnel protocol.

    Моніторинг cron/потоків

    Маршрути cron (/api/cron/*) не працюють без CRON_SECRET. Наприклад: GET /api/cron/email-analytics запускає pipeline email-analytics.

    Опціональні Docker Prometheus + Grafana

    Сервіси: ring-prometheus (:9090), ring-grafana (:3001). Налаштування: docker/prometheus/prometheus.yml.

    Зауваження щодо Prometheus

    Стандартний Prometheus-джоб у конфігу дивиться на /api/metrics, але такий маршрут не реалізовано — фактично скрапить /api/health як JSON (не у форматі Prometheus). Використовуйте цей профіль як стартовий шаблон.

    Точка входу для admin UI

    Серверна сторінка: app/[locale]/admin/analytics/page.tsx — потребує isPlatformAdmin, вантажить getPlatformAnalytics('7d'), включаючи personalPages.

    Real Time

    Деталі: tunnel-протоколи і heartbeat поведінка.

    Admin console

    Наступний крок: точка входу в адмін-консоль /admin/analytics.

    Власники бачать у віджеті на персональній сторінці унікальні відвідування за 24г/7д.

    Кореляція зі збереженням резервних копій

    Моніторинг покаже коли щось зламалось; резервні — що можна відновити.

    Типові сценарії тривог

    • Health → degraded — після деплою втрачені важливі змінні; перевірте секрети до postgres.
    • Web Vitals з “poor” ростуть — проблема з CDN, вагою зображень чи SSR; шукайте реліз-тег (BUILD_DATE / GIT_COMMIT у health JSON якщо вказано).
    • Стрибок у analytics_errors — зламався клієнтський бандл або сторонній скрипт; можна подивитись у адмін-панелі.
    • Багато роз'єднань тунелю — дивіться Realtime transport; часто це edge/WSS або проксі, не база.

    Визначте, кому приходять тривоги (оператор чи розробник) і що в клоні вважається “падінням”. Ring OSS не має готової інтеграції з PagerDuty; ви самі підключаєте health чек до свого провайдера.

    НЕ

    Поверхня API для аналітики

    МаршрутМетодАвторизаціяТаблиця/Дані
    /api/analytics/web-vitalsPOSTОпціональна сесіяweb_vitals
    /api/analytics/web-vitalsGETАдмінЗапит web_vitals або сумарно ?scope=platform
    /api/analytics/appPOSTОпціональна сесіяanalytics_events
    /api/analytics/errorsPOSTОпціональна сесіяanalytics_errors
    /api/analytics/errorsGETАдмінСписок помилок
    /api/analytics/devicePOSTПотрібна сесіяuser_device_telemetry
    /api/analytics/platform-statsGETАдмінЛічильники: users, entities, opportunities
    /api/analytics/navigationPOSTОпціональна сесіяЗаглушка — { ok: true }, без збереження

    Реалізація: features/analytics/lib/analytics-db.ts (insertAnalyticsEventBatch, insertWebVitalsRecord, insertAnalyticsErrors). Клієнтські Web Vitals: components/providers/web-vitals-provider.tsx — useReportWebVitals з next/web-vitals буферизує CLS, FCP, LCP, TTFB, INP в один POST із debounce (~1.5с, INP замість FID).

    Події персональної сторінки

    КомпонентШлях
    Тип подіїpersonal_page_view
    Записувачfeatures/analytics/lib/personal-page-analytics.ts → recordPersonalPageView
    Сайт викликуapp/[locale]/[username]/page.tsx — пропускає власника
    Віджет власникаgetPersonalPageViewStats (features/auth/services/personal-page-stats.ts)
    АдмінgetPersonalPagePlatformStats → PlatformAnalyticsSummary.personalPages
    Ангажуванняpersonal_page_view агрегується з page_view / app_load / docs_page_view у адмін-UI

    Алгоритм унікальних візитів: Public Profile Pages.

    Таблиці бази даних

    Прописані у data/schema.sql та міграції 017_ring_analytics_schema.sql:

    • analytics_events — батчі клієнтської телеметрії та серверні personal_page_view
    • web_vitals — пакети Core Web Vitals
    • analytics_errors — клієнтський лог помилок

    Вимкнення збереження (конфіденційність/навантаження)

    При цьому інгест-роути приймають дані, але ігнорують DatabaseService (isAnalyticsStorageDisabled()). Особисті візити також no-op.

    Структуроване логування

    Середовище: LOG_LEVEL (debug | info | warn | error; типово info у проді, warn у dev), LOG_SILENT=true для тиші. Вивід — JSON-рядки у stdout; у dev не пише очікувані помилки JWT/SSE.

    Опціональний зовнішній APM

    Закоментовано в env.local.template / docker.env.template:

    • SENTRY_DSN — інтеграція з Sentry Next.js (не увімкнено за умовчанням)
    • NEXT_PUBLIC_ANALYTICS_ID, VERCEL_ANALYTICS_ID — тільки для Vercel-хостингу

    Realtime-проби

    МаршрутПризначення
    POST /api/tunnel/pingАутентифікований pong + timestamp
    POST /api/tunnel/heartbeatkeep-alive з'єднання

    Див. Tunnel protocol.

    Моніторинг cron/потоків

    Маршрути cron (/api/cron/*) не працюють без CRON_SECRET. Наприклад: GET /api/cron/email-analytics запускає pipeline email-analytics.

    Опціональні Docker Prometheus + Grafana

    Сервіси: ring-prometheus (:9090), ring-grafana (:3001). Налаштування: docker/prometheus/prometheus.yml.

    Зауваження щодо Prometheus

    Стандартний Prometheus-джоб у конфігу дивиться на /api/metrics, але такий маршрут не реалізовано — фактично скрапить /api/health як JSON (не у форматі Prometheus). Використовуйте цей профіль як стартовий шаблон.

    Точка входу для admin UI

    Серверна сторінка: app/[locale]/admin/analytics/page.tsx — потребує isPlatformAdmin, вантажить getPlatformAnalytics('7d'), включаючи personalPages.

    Real Time

    Деталі: tunnel-протоколи і heartbeat поведінка.

    Admin console

    Наступний крок: точка входу в адмін-консоль /admin/analytics.

    1. Документація
    2. /Розгортання
    3. /Моніторинг та Аналітика

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

    1. Документація
    2. /Розгортання
    3. /Моніторинг та Аналітика

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

    1. Документація
    2. /Розгортання
    3. /Моніторинг та Аналітика

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