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

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

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

    Documentation

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

    Ласкаво просимо до Ring
    Швидкий довідник
    Початок роботи
    Передумови
    Встановлення
    Валідація першого успіху
    Наступні кроки
    Функції
    Магазин
    Склад і залишки
    Керування вендорами
    Комісії та розрахунки
    SubscriptionConductor
    PaymentConductor
    Ring Oracle
    Інтеграція платежів
    Публічні пули та DAO-банки
    Інтеграція WayForPay
    Web3 Гаманець
    WalletConductor
    Кредитні винагороди
    Партнерська та реферальна підтримка
    Реферальні коди (Refcodes)
    NFT Exhibition Marketplace
    Solana NFT Gates
    Система Стейкінга Токенів
    Лабораторія проєкту власника (Owner Project Lab)
    Сутності
    Можливості
    AI Matcher
    Повідомлення
    Завдання 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)
    Сутності
    Можливості
    AI Matcher
    Повідомлення
    Завдання 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)
    Сутності
    Можливості
    AI Matcher
    Повідомлення
    Завдання 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

    Синхронізація discovery після мутацій

    Фільтруйте цю сторінку у бічній панелі документації за Founder / Developer. Засновники дізнаються, чому списки залишаються актуальними; розробники — про модулі, події та точки розширення.

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

    Модель актуальності у три кроки

    КрокЩо бачать користувачіЩо відбувається всередині
    1. Скидання кешуСторінки списків перестають показувати застарілі карткиrevalidateTag очищає кеші списків, розподілені за ролями
    2. Оновлення сторінкиНа наступній навігації сторінки деталей і хаби показують нові даніrevalidatePath інвалідовує SSR App Router
    3. Realtime-сигналВідкриті вкладки оновлюються без ручного перезавантаженняTunnel публікує події opportunity:* / entity:*. /opportunities підписується безшумно (useRealtimeOpportunities); старої панелі «Live Updates Active / via websocket» у списку більше немає. На сторінці деталей (opportunity-details.tsx) ця смуга все ще відображається.

    У клонах із PostgreSQL як основною БД рядок у базі даних є пошуковим індексом. Окремої таблиці Elasticsearch для перебудови немає — discovery-запити читають JSONB безпосередньо (модель даних).

    Чому це важливо для засновників

    Каталог (сутності) і маркетплейс потреб (можливості) вашого клона — основний цикл, навколо якого монетизується більшість кілець. Застарілі списки швидше підривають довіру, ніж відсутня функція.

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

    Дошка вакансій

    Учасник публікує контракт — схвалені оголошення з’являються на /opportunities, а підписники отримують сповіщення Tunnel.

    Каталог постачальників

    Верифікована сутність оновлює свою вітрину — сторінки профілів і публічний каталог оновлюються без втручання оператора.

    Подальша дія AI-матчера

    Нові можливості запускають матчер-пайплайни; актуальні теги кешу гарантують, що картки збігів посилаються на поточні поля бюджету й дедлайну.

    Архітектура

    Пайплайн синхронізації після мутації

    Спільний помічник Tunnel

    lib/discovery/sync-discovery.ts — лише realtime-розповсюдження (кеш і шляхи знаходяться в доменних обгортках):

    КаналПодії Tunnel
    opportunitiesopportunity:created, opportunity:updated, opportunity:deleted
    entitiesentity:created, entity:updated, entity:deleted

    Доменні обгортки

    РесурсМодульВикликається з
    Opportunities

    Пов’язана документація

    Related documentation

    Tunnel Protocol

    Передумова: SSOT підписки на канал і відмінність між publishToChannel та publishToUserTunnel.

    Real Time

    Глибше занурення: брокер TunnelHub і матриця публікації/підписки функцій.

    Data Model

    Залежність: колекції JSONB, синхронізовані цим пайплайном.

    Opportunities

    Той самий процес: стрічка перегляду гідратується зі спискових API та безшумних вставок Tunnel.

    1. Документація
    2. /Архітектура
    3. /Синхронізація discovery після мутацій

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

    Синхронізація discovery після мутацій

    Фільтруйте цю сторінку у бічній панелі документації за Founder / Developer. Засновники дізнаються, чому списки залишаються актуальними; розробники — про модулі, події та точки розширення.

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

    Модель актуальності у три кроки

    КрокЩо бачать користувачіЩо відбувається всередині
    1. Скидання кешуСторінки списків перестають показувати застарілі карткиrevalidateTag очищає кеші списків, розподілені за ролями
    2. Оновлення сторінкиНа наступній навігації сторінки деталей і хаби показують нові даніrevalidatePath інвалідовує SSR App Router
    3. Realtime-сигналВідкриті вкладки оновлюються без ручного перезавантаженняTunnel публікує події opportunity:* / entity:*. /opportunities підписується безшумно (useRealtimeOpportunities); старої панелі «Live Updates Active / via websocket» у списку більше немає. На сторінці деталей (opportunity-details.tsx) ця смуга все ще відображається.

    У клонах із PostgreSQL як основною БД рядок у базі даних є пошуковим індексом. Окремої таблиці Elasticsearch для перебудови немає — discovery-запити читають JSONB безпосередньо (модель даних).

    Чому це важливо для засновників

    Каталог (сутності) і маркетплейс потреб (можливості) вашого клона — основний цикл, навколо якого монетизується більшість кілець. Застарілі списки швидше підривають довіру, ніж відсутня функція.

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

    Дошка вакансій

    Учасник публікує контракт — схвалені оголошення з’являються на /opportunities, а підписники отримують сповіщення Tunnel.

    Каталог постачальників

    Верифікована сутність оновлює свою вітрину — сторінки профілів і публічний каталог оновлюються без втручання оператора.

    Подальша дія AI-матчера

    Нові можливості запускають матчер-пайплайни; актуальні теги кешу гарантують, що картки збігів посилаються на поточні поля бюджету й дедлайну.

    Архітектура

    Пайплайн синхронізації після мутації

    Спільний помічник Tunnel

    lib/discovery/sync-discovery.ts — лише realtime-розповсюдження (кеш і шляхи знаходяться в доменних обгортках):

    КаналПодії Tunnel
    opportunitiesopportunity:created, opportunity:updated, opportunity:deleted
    entitiesentity:created, entity:updated, entity:deleted

    Доменні обгортки

    РесурсМодульВикликається з
    Opportunities

    Пов’язана документація

    Related documentation

    Tunnel Protocol

    Передумова: SSOT підписки на канал і відмінність між publishToChannel та publishToUserTunnel.

    Real Time

    Глибше занурення: брокер TunnelHub і матриця публікації/підписки функцій.

    Data Model

    Залежність: колекції JSONB, синхронізовані цим пайплайном.

    Opportunities

    Той самий процес: стрічка перегляду гідратується зі спискових API та безшумних вставок Tunnel.

    1. Документація
    2. /Архітектура
    3. /Синхронізація discovery після мутацій

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

    Синхронізація discovery після мутацій

    Фільтруйте цю сторінку у бічній панелі документації за Founder / Developer. Засновники дізнаються, чому списки залишаються актуальними; розробники — про модулі, події та точки розширення.

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

    Модель актуальності у три кроки

    КрокЩо бачать користувачіЩо відбувається всередині
    1. Скидання кешуСторінки списків перестають показувати застарілі карткиrevalidateTag очищає кеші списків, розподілені за ролями
    2. Оновлення сторінкиНа наступній навігації сторінки деталей і хаби показують нові даніrevalidatePath інвалідовує SSR App Router
    3. Realtime-сигналВідкриті вкладки оновлюються без ручного перезавантаженняTunnel публікує події opportunity:* / entity:*. /opportunities підписується безшумно (useRealtimeOpportunities); старої панелі «Live Updates Active / via websocket» у списку більше немає. На сторінці деталей (opportunity-details.tsx) ця смуга все ще відображається.

    У клонах із PostgreSQL як основною БД рядок у базі даних є пошуковим індексом. Окремої таблиці Elasticsearch для перебудови немає — discovery-запити читають JSONB безпосередньо (модель даних).

    Чому це важливо для засновників

    Каталог (сутності) і маркетплейс потреб (можливості) вашого клона — основний цикл, навколо якого монетизується більшість кілець. Застарілі списки швидше підривають довіру, ніж відсутня функція.

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

    Дошка вакансій

    Учасник публікує контракт — схвалені оголошення з’являються на /opportunities, а підписники отримують сповіщення Tunnel.

    Каталог постачальників

    Верифікована сутність оновлює свою вітрину — сторінки профілів і публічний каталог оновлюються без втручання оператора.

    Подальша дія AI-матчера

    Нові можливості запускають матчер-пайплайни; актуальні теги кешу гарантують, що картки збігів посилаються на поточні поля бюджету й дедлайну.

    Архітектура

    Пайплайн синхронізації після мутації

    Спільний помічник Tunnel

    lib/discovery/sync-discovery.ts — лише realtime-розповсюдження (кеш і шляхи знаходяться в доменних обгортках):

    КаналПодії Tunnel
    opportunitiesopportunity:created, opportunity:updated, opportunity:deleted
    entitiesentity:created, entity:updated, entity:deleted

    Доменні обгортки

    РесурсМодульВикликається з
    Opportunities

    Пов’язана документація

    Related documentation

    Tunnel Protocol

    Передумова: SSOT підписки на канал і відмінність між publishToChannel та publishToUserTunnel.

    Real Time

    Глибше занурення: брокер TunnelHub і матриця публікації/підписки функцій.

    Data Model

    Залежність: колекції JSONB, синхронізовані цим пайплайном.

    Opportunities

    Той самий процес: стрічка перегляду гідратується зі спискових API та безшумних вставок Tunnel.

    1. Документація
    2. /Архітектура
    3. /Синхронізація discovery після мутацій

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

    Процес модерації

    Процеси схвалення/відхилення адміністратора викликають ту саму синхронізацію — зміни статусу поводяться як оновлення для підписників каналу.

    Очікування від оператора

    • Для стандартного CRUD не потрібна ручна CLI-переіндексація — якщо списки виглядають застарілими, спочатку перевірте транспорт Tunnel і DB_BACKEND_MODE.
    • Конфіденційні рівні використовують спільні теги кешу списків; повторна валідація шляхів мінімізована для вузьких аудиторій (див. таблицю для розробників нижче).
    • Карти / графові подання (Ringdom Maps) наразі є окремим сховищем — CRUD сутностей автоматично не оновлює вузли карт.
    features/opportunities/lib/opportunity-mutation-sync.ts
    create-opportunity, update-opportunity, delete-opportunity, auto-approval-service
    Entitiesfeatures/entities/lib/entity-mutation-sync.tscreate-entity, update-entity, delete-entity, хуки модерації та KYC
    1. 1

      Після будь-якої мутації можливості

    2. 2

      Після будь-якої мутації сутності

    3. 3

      Підписка на клієнті

      Підключайте слухачі топіків через useTunnelChannel — production-хуки розбирають payload syncDiscovery за допомогою lib/discovery/parse-discovery-tunnel-message.ts ({ id, event } і message.event, наприклад entity:created).

      КаналХукПідключення до UI
      opportunitieshooks/use-realtime-opportunities.tsBrowse: opportunities.tsx (безшумна підписка). Деталі: opportunity-details.tsx (панель live-оновлень усе ще відображається). Сніпети створення містять creator { id, name, avatar }, тому картки, додані realtime, не показують «Private User».
      entitieshooks/use-realtime-entities.tsfeatures/entities/components/entities.tsx — видалення локально вирізає елемент; створення/оновлення робить м’яке перезавантаження cursor feed

      Див. Realtime-транспорт і протокол Tunnel.

    Шляхи, що повторно валідовуються

    Можливості

    • /[locale]/opportunities
    • /[locale]/opportunities/[id]
    • /[locale]/opportunities/my
    • /opportunities (під час створення / зміни статусу)

    Сутності

    • /[locale]/entities
    • /[locale]/entities/[id]
    • /[locale]/entities/my
    • /entities (під час створення / зміни статусу)

    Шляхи, навмисно виключені

    ШляхПричина
    /[locale]/entities/addОдноразова форма; після створення виконується перенаправлення
    /[locale]/entities/status/...Платіжні callback-и — не стосуються CRUD discovery
    /[locale]/confidential/entitiesІнвалідації тегів достатньо; це уникає зайвого оновлення шляхів
    Вузли Ringdom MapsОкреме графове сховище — не підключене до кешів списків сутностей

    Відображення рядків

    Читання перетворюють рядки DatabaseService через:

    • features/opportunities/lib/opportunity-db-mapper.ts
    • features/entities/lib/entity-db-mapper.ts

    Застарілі конвертери Firestore у lib/converters/*-converter.ts застосовуються лише коли DB_BACKEND_MODE=firebase-full.

    Opportunities API

    Той самий процес: REST-поверхня та хуки після мутацій для можливостей.

    Entities

    Той самий процес: REST-поверхня та хуки після мутацій для сутностей.

    Процес модерації

    Процеси схвалення/відхилення адміністратора викликають ту саму синхронізацію — зміни статусу поводяться як оновлення для підписників каналу.

    Очікування від оператора

    • Для стандартного CRUD не потрібна ручна CLI-переіндексація — якщо списки виглядають застарілими, спочатку перевірте транспорт Tunnel і DB_BACKEND_MODE.
    • Конфіденційні рівні використовують спільні теги кешу списків; повторна валідація шляхів мінімізована для вузьких аудиторій (див. таблицю для розробників нижче).
    • Карти / графові подання (Ringdom Maps) наразі є окремим сховищем — CRUD сутностей автоматично не оновлює вузли карт.
    features/opportunities/lib/opportunity-mutation-sync.ts
    create-opportunity, update-opportunity, delete-opportunity, auto-approval-service
    Entitiesfeatures/entities/lib/entity-mutation-sync.tscreate-entity, update-entity, delete-entity, хуки модерації та KYC
    1. 1

      Після будь-якої мутації можливості

    2. 2

      Після будь-якої мутації сутності

    3. 3

      Підписка на клієнті

      Підключайте слухачі топіків через useTunnelChannel — production-хуки розбирають payload syncDiscovery за допомогою lib/discovery/parse-discovery-tunnel-message.ts ({ id, event } і message.event, наприклад entity:created).

      КаналХукПідключення до UI
      opportunitieshooks/use-realtime-opportunities.tsBrowse: opportunities.tsx (безшумна підписка). Деталі: opportunity-details.tsx (панель live-оновлень усе ще відображається). Сніпети створення містять creator { id, name, avatar }, тому картки, додані realtime, не показують «Private User».
      entitieshooks/use-realtime-entities.tsfeatures/entities/components/entities.tsx — видалення локально вирізає елемент; створення/оновлення робить м’яке перезавантаження cursor feed

      Див. Realtime-транспорт і протокол Tunnel.

    Шляхи, що повторно валідовуються

    Можливості

    • /[locale]/opportunities
    • /[locale]/opportunities/[id]
    • /[locale]/opportunities/my
    • /opportunities (під час створення / зміни статусу)

    Сутності

    • /[locale]/entities
    • /[locale]/entities/[id]
    • /[locale]/entities/my
    • /entities (під час створення / зміни статусу)

    Шляхи, навмисно виключені

    ШляхПричина
    /[locale]/entities/addОдноразова форма; після створення виконується перенаправлення
    /[locale]/entities/status/...Платіжні callback-и — не стосуються CRUD discovery
    /[locale]/confidential/entitiesІнвалідації тегів достатньо; це уникає зайвого оновлення шляхів
    Вузли Ringdom MapsОкреме графове сховище — не підключене до кешів списків сутностей

    Відображення рядків

    Читання перетворюють рядки DatabaseService через:

    • features/opportunities/lib/opportunity-db-mapper.ts
    • features/entities/lib/entity-db-mapper.ts

    Застарілі конвертери Firestore у lib/converters/*-converter.ts застосовуються лише коли DB_BACKEND_MODE=firebase-full.

    Opportunities API

    Той самий процес: REST-поверхня та хуки після мутацій для можливостей.

    Entities

    Той самий процес: REST-поверхня та хуки після мутацій для сутностей.

    Процес модерації

    Процеси схвалення/відхилення адміністратора викликають ту саму синхронізацію — зміни статусу поводяться як оновлення для підписників каналу.

    Очікування від оператора

    • Для стандартного CRUD не потрібна ручна CLI-переіндексація — якщо списки виглядають застарілими, спочатку перевірте транспорт Tunnel і DB_BACKEND_MODE.
    • Конфіденційні рівні використовують спільні теги кешу списків; повторна валідація шляхів мінімізована для вузьких аудиторій (див. таблицю для розробників нижче).
    • Карти / графові подання (Ringdom Maps) наразі є окремим сховищем — CRUD сутностей автоматично не оновлює вузли карт.
    features/opportunities/lib/opportunity-mutation-sync.ts
    create-opportunity, update-opportunity, delete-opportunity, auto-approval-service
    Entitiesfeatures/entities/lib/entity-mutation-sync.tscreate-entity, update-entity, delete-entity, хуки модерації та KYC
    1. 1

      Після будь-якої мутації можливості

    2. 2

      Після будь-якої мутації сутності

    3. 3

      Підписка на клієнті

      Підключайте слухачі топіків через useTunnelChannel — production-хуки розбирають payload syncDiscovery за допомогою lib/discovery/parse-discovery-tunnel-message.ts ({ id, event } і message.event, наприклад entity:created).

      КаналХукПідключення до UI
      opportunitieshooks/use-realtime-opportunities.tsBrowse: opportunities.tsx (безшумна підписка). Деталі: opportunity-details.tsx (панель live-оновлень усе ще відображається). Сніпети створення містять creator { id, name, avatar }, тому картки, додані realtime, не показують «Private User».
      entitieshooks/use-realtime-entities.tsfeatures/entities/components/entities.tsx — видалення локально вирізає елемент; створення/оновлення робить м’яке перезавантаження cursor feed

      Див. Realtime-транспорт і протокол Tunnel.

    Шляхи, що повторно валідовуються

    Можливості

    • /[locale]/opportunities
    • /[locale]/opportunities/[id]
    • /[locale]/opportunities/my
    • /opportunities (під час створення / зміни статусу)

    Сутності

    • /[locale]/entities
    • /[locale]/entities/[id]
    • /[locale]/entities/my
    • /entities (під час створення / зміни статусу)

    Шляхи, навмисно виключені

    ШляхПричина
    /[locale]/entities/addОдноразова форма; після створення виконується перенаправлення
    /[locale]/entities/status/...Платіжні callback-и — не стосуються CRUD discovery
    /[locale]/confidential/entitiesІнвалідації тегів достатньо; це уникає зайвого оновлення шляхів
    Вузли Ringdom MapsОкреме графове сховище — не підключене до кешів списків сутностей

    Відображення рядків

    Читання перетворюють рядки DatabaseService через:

    • features/opportunities/lib/opportunity-db-mapper.ts
    • features/entities/lib/entity-db-mapper.ts

    Застарілі конвертери Firestore у lib/converters/*-converter.ts застосовуються лише коли DB_BACKEND_MODE=firebase-full.

    Opportunities API

    Той самий процес: REST-поверхня та хуки після мутацій для можливостей.

    Entities

    Той самий процес: REST-поверхня та хуки після мутацій для сутностей.