Концепції, цінність і типові сценарії
Концепції, цінність і типові сценарії
Preparing Ring content
Preparing Ring content
Preparing Ring content
Фільтруйте цю сторінку у бічній панелі документації за 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.
Верифікована сутність оновлює свою вітрину — сторінки профілів і публічний каталог оновлюються без втручання оператора.
Нові можливості запускають матчер-пайплайни; актуальні теги кешу гарантують, що картки збігів посилаються на поточні поля бюджету й дедлайну.
Передумова: SSOT підписки на канал і відмінність між publishToChannel та publishToUserTunnel.
Глибше занурення: брокер TunnelHub і матриця публікації/підписки функцій.
Залежність: колекції JSONB, синхронізовані цим пайплайном.
Той самий процес: стрічка перегляду гідратується зі спискових API та безшумних вставок Tunnel.
Фільтруйте цю сторінку у бічній панелі документації за 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.
Верифікована сутність оновлює свою вітрину — сторінки профілів і публічний каталог оновлюються без втручання оператора.
Нові можливості запускають матчер-пайплайни; актуальні теги кешу гарантують, що картки збігів посилаються на поточні поля бюджету й дедлайну.
Передумова: SSOT підписки на канал і відмінність між publishToChannel та publishToUserTunnel.
Глибше занурення: брокер TunnelHub і матриця публікації/підписки функцій.
Залежність: колекції JSONB, синхронізовані цим пайплайном.
Той самий процес: стрічка перегляду гідратується зі спискових API та безшумних вставок Tunnel.
Фільтруйте цю сторінку у бічній панелі документації за 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.
Верифікована сутність оновлює свою вітрину — сторінки профілів і публічний каталог оновлюються без втручання оператора.
Нові можливості запускають матчер-пайплайни; актуальні теги кешу гарантують, що картки збігів посилаються на поточні поля бюджету й дедлайну.
Передумова: SSOT підписки на канал і відмінність між publishToChannel та publishToUserTunnel.
Глибше занурення: брокер TunnelHub і матриця публікації/підписки функцій.
Залежність: колекції JSONB, синхронізовані цим пайплайном.
Той самий процес: стрічка перегляду гідратується зі спискових API та безшумних вставок Tunnel.
DB_BACKEND_MODE.features/opportunities/lib/opportunity-mutation-sync.ts |
create-opportunity, update-opportunity, delete-opportunity, auto-approval-service |
| Entities | features/entities/lib/entity-mutation-sync.ts | create-entity, update-entity, delete-entity, хуки модерації та KYC |
Підключайте слухачі топіків через useTunnelChannel — production-хуки розбирають payload syncDiscovery за допомогою lib/discovery/parse-discovery-tunnel-message.ts ({ id, event } і message.event, наприклад entity:created).
| Канал | Хук | Підключення до UI |
|---|---|---|
opportunities | hooks/use-realtime-opportunities.ts | Browse: opportunities.tsx (безшумна підписка). Деталі: opportunity-details.tsx (панель live-оновлень усе ще відображається). Сніпети створення містять creator { id, name, avatar }, тому картки, додані realtime, не показують «Private User». |
entities | hooks/use-realtime-entities.ts | features/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.tsfeatures/entities/lib/entity-db-mapper.tsЗастарілі конвертери Firestore у lib/converters/*-converter.ts застосовуються лише коли DB_BACKEND_MODE=firebase-full.
Той самий процес: REST-поверхня та хуки після мутацій для можливостей.
DB_BACKEND_MODE.features/opportunities/lib/opportunity-mutation-sync.ts |
create-opportunity, update-opportunity, delete-opportunity, auto-approval-service |
| Entities | features/entities/lib/entity-mutation-sync.ts | create-entity, update-entity, delete-entity, хуки модерації та KYC |
Підключайте слухачі топіків через useTunnelChannel — production-хуки розбирають payload syncDiscovery за допомогою lib/discovery/parse-discovery-tunnel-message.ts ({ id, event } і message.event, наприклад entity:created).
| Канал | Хук | Підключення до UI |
|---|---|---|
opportunities | hooks/use-realtime-opportunities.ts | Browse: opportunities.tsx (безшумна підписка). Деталі: opportunity-details.tsx (панель live-оновлень усе ще відображається). Сніпети створення містять creator { id, name, avatar }, тому картки, додані realtime, не показують «Private User». |
entities | hooks/use-realtime-entities.ts | features/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.tsfeatures/entities/lib/entity-db-mapper.tsЗастарілі конвертери Firestore у lib/converters/*-converter.ts застосовуються лише коли DB_BACKEND_MODE=firebase-full.
Той самий процес: REST-поверхня та хуки після мутацій для можливостей.
DB_BACKEND_MODE.features/opportunities/lib/opportunity-mutation-sync.ts |
create-opportunity, update-opportunity, delete-opportunity, auto-approval-service |
| Entities | features/entities/lib/entity-mutation-sync.ts | create-entity, update-entity, delete-entity, хуки модерації та KYC |
Підключайте слухачі топіків через useTunnelChannel — production-хуки розбирають payload syncDiscovery за допомогою lib/discovery/parse-discovery-tunnel-message.ts ({ id, event } і message.event, наприклад entity:created).
| Канал | Хук | Підключення до UI |
|---|---|---|
opportunities | hooks/use-realtime-opportunities.ts | Browse: opportunities.tsx (безшумна підписка). Деталі: opportunity-details.tsx (панель live-оновлень усе ще відображається). Сніпети створення містять creator { id, name, avatar }, тому картки, додані realtime, не показують «Private User». |
entities | hooks/use-realtime-entities.ts | features/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.tsfeatures/entities/lib/entity-db-mapper.tsЗастарілі конвертери Firestore у lib/converters/*-converter.ts застосовуються лише коли DB_BACKEND_MODE=firebase-full.
Той самий процес: REST-поверхня та хуки після мутацій для можливостей.