Концепції, цінність і типові сценарії
Концепції, цінність і типові сценарії
Preparing Ring content
Preparing Ring content
Preparing Ring content
White-label-клони Ring використовують одну кодову базу платформи: ring-platform.org. Вертикалі обираються назвою пресету в ring-config.json. Типізовані каталоги розташовані в features/*/presets/<preset>.ts (а головна сторінка — у components/pages/home-presets/<preset>.tsx).
|| Джерело | Що там розташовано | Коли має перевагу |
||--------|------------------|--------------|
|| Платформа (ring-platform.org) | Спільні ніші (platform, agricultural, …) | База кожної збірки |
|| Директорія проєкту клону (наприклад, ring-greenfood-live) | Брендинг, ring-config.json, custom <preset>.ts + накладення реєстру | Перезаписує при конфлікті після копіювання платформи |
Використовуйте ringdom-clone-build (ringdom-mcp):
ring-platform.org → тимчасова директорія збірки (пропускаються node_modules / .next / .git)
ringdom-clone-build({ project_name: "ring-greenfood-live", dry_run?: true })
→ .ringdom-build/<project>/<timestamp>Не очікуйте, що одного тонкого накладення достатньо для застосунку, який можна запустити — спочатку виконайте об’єднання.
|| Рівень | Що | Де |
||------|------|--------|
|| 1 — дані | Списки категорій, токени бейджів, мітки | Відображення ring-config.json + locales/ |
|| 2 — типізована логіка | Каталоги сутностей, zod/forms, UI полів ніші | features/*/presets/<preset>.ts (платформа та/або накладення клону) |
GreenFood встановлює entities / productFields / productBadges у значення "agricultural", а home.preset — у "mvm-landing".
Усі використовують налаштований рядок *.preset. Якщо сингулярний ключ не встановлено, entities і productBadges повертаються до productFields.preset, а потім до "platform" — без жорстко заданої логіки if/else для ніші.
getEntitiesPreset() → реєстр features/entities/presetsgetHomePreset() → реєстр components/pages/home-presetsgetProductFieldsPreset() / getProductFieldsPresets()getProductBadgesPreset() / getProductBadgesPresets()Правило: назви пресетів з’являються в ring-config і карті реєстру. Споживачі викликають getEntityTypes() / getEntityTypeList() — ніколи не імпортують agricultural.ts безпосередньо.
Власна ніша в клоні: додайте features/entities/presets/<name>.ts у проєкт клону, накладіть index.ts, щоб зареєструвати її, встановіть entities.preset у цю назву, а потім виконайте ringdom-clone-build.
Дисципліна бандла: синхронні каталоги — це легкі списки UI. Важкі каталоги полів ERP розташовані в модулях *-erp.ts, які завантажуються лише асинхронно через loadErpEntityTypes().
presets/<name>.ts): id, emoji, англійські резервні назви/описиlocales/*/modules/entities.json → types.<id> + types.<id>Desccomponents/entities/entity-type-icons.tsx TYPE_VISUALS mapuseEntityTypeLabel() / useEntityTypeDescription() — спочатку i18n, потім резервний текст каталогуfeatures/entities/presets/<name>.ts (+ необов’язковий <name>-erp.ts)ENTITIES_PRESET_REGISTRY (+ ERP_CATALOG_REGISTRY, якщо потрібно)components/pages/home-presets/<name>.tsxproductFieldsPresets / productBadgesPresetslocales/*/modules/entities.jsonring-config.template.jsonЦільовий список: platform, agricultural, потім tourism, sport, business, pet, auto, connect, technopark, manufacturing.
.reggie-propagate-exclude.json захищає шляхи лише накладення від перезапису Reggie:
ring-config.jsonpublic/logo*.svg, favicon.ico, public/branding/locales/{en,uk,ru}/config.json, vendor.jsonfeatures/*/presets/<clone-only>.ts (+ накладення реєстру), якщо їх ще не передано в upstreamlib/overlay/registry.ts (карти). Не виключайте lib/overlay/types.ts або lib/overlay/runtime.ts — це SSOT платформи.|| Шлях | Власник | Роль |
||------|------|------|
|| lib/overlay/types.ts | Платформа | Контракти |
|| lib/overlay/runtime.ts | Платформа | loadOverlayMessages / resolveOverlayHomeRail |
|| lib/overlay/registry.ts | Порожні карти платформи; карти накладає клон | Завантажувачі доменних функцій |
Споживачі імпортують із @/lib/overlay/runtime. Клони ніколи не дублюють завантажувачі в registry.ts.
Чекліст оператора (calculator / Order Lab): Ringization playbook.
Джерелом поширення залишається ring-platform.org → клони для спільного коду. Власні пресети клону залишаються в директорії клону й мають перевагу під час ringdom-clone-build.
if (productPreset === 'agricultural') в аксесорахcustom-types.ts / overrides.ts без модуля іменованого пресетуswitch (vertical) у коді функцій — використовуйте реєстрWhite-label-клони Ring використовують одну кодову базу платформи: ring-platform.org. Вертикалі обираються назвою пресету в ring-config.json. Типізовані каталоги розташовані в features/*/presets/<preset>.ts (а головна сторінка — у components/pages/home-presets/<preset>.tsx).
|| Джерело | Що там розташовано | Коли має перевагу |
||--------|------------------|--------------|
|| Платформа (ring-platform.org) | Спільні ніші (platform, agricultural, …) | База кожної збірки |
|| Директорія проєкту клону (наприклад, ring-greenfood-live) | Брендинг, ring-config.json, custom <preset>.ts + накладення реєстру | Перезаписує при конфлікті після копіювання платформи |
Використовуйте ringdom-clone-build (ringdom-mcp):
ring-platform.org → тимчасова директорія збірки (пропускаються node_modules / .next / .git)
ringdom-clone-build({ project_name: "ring-greenfood-live", dry_run?: true })
→ .ringdom-build/<project>/<timestamp>Не очікуйте, що одного тонкого накладення достатньо для застосунку, який можна запустити — спочатку виконайте об’єднання.
|| Рівень | Що | Де |
||------|------|--------|
|| 1 — дані | Списки категорій, токени бейджів, мітки | Відображення ring-config.json + locales/ |
|| 2 — типізована логіка | Каталоги сутностей, zod/forms, UI полів ніші | features/*/presets/<preset>.ts (платформа та/або накладення клону) |
GreenFood встановлює entities / productFields / productBadges у значення "agricultural", а home.preset — у "mvm-landing".
Усі використовують налаштований рядок *.preset. Якщо сингулярний ключ не встановлено, entities і productBadges повертаються до productFields.preset, а потім до "platform" — без жорстко заданої логіки if/else для ніші.
getEntitiesPreset() → реєстр features/entities/presetsgetHomePreset() → реєстр components/pages/home-presetsgetProductFieldsPreset() / getProductFieldsPresets()getProductBadgesPreset() / getProductBadgesPresets()Правило: назви пресетів з’являються в ring-config і карті реєстру. Споживачі викликають getEntityTypes() / getEntityTypeList() — ніколи не імпортують agricultural.ts безпосередньо.
Власна ніша в клоні: додайте features/entities/presets/<name>.ts у проєкт клону, накладіть index.ts, щоб зареєструвати її, встановіть entities.preset у цю назву, а потім виконайте ringdom-clone-build.
Дисципліна бандла: синхронні каталоги — це легкі списки UI. Важкі каталоги полів ERP розташовані в модулях *-erp.ts, які завантажуються лише асинхронно через loadErpEntityTypes().
presets/<name>.ts): id, emoji, англійські резервні назви/описиlocales/*/modules/entities.json → types.<id> + types.<id>Desccomponents/entities/entity-type-icons.tsx TYPE_VISUALS mapuseEntityTypeLabel() / useEntityTypeDescription() — спочатку i18n, потім резервний текст каталогуfeatures/entities/presets/<name>.ts (+ необов’язковий <name>-erp.ts)ENTITIES_PRESET_REGISTRY (+ ERP_CATALOG_REGISTRY, якщо потрібно)components/pages/home-presets/<name>.tsxproductFieldsPresets / productBadgesPresetslocales/*/modules/entities.jsonring-config.template.jsonЦільовий список: platform, agricultural, потім tourism, sport, business, pet, auto, connect, technopark, manufacturing.
.reggie-propagate-exclude.json захищає шляхи лише накладення від перезапису Reggie:
ring-config.jsonpublic/logo*.svg, favicon.ico, public/branding/locales/{en,uk,ru}/config.json, vendor.jsonfeatures/*/presets/<clone-only>.ts (+ накладення реєстру), якщо їх ще не передано в upstreamlib/overlay/registry.ts (карти). Не виключайте lib/overlay/types.ts або lib/overlay/runtime.ts — це SSOT платформи.|| Шлях | Власник | Роль |
||------|------|------|
|| lib/overlay/types.ts | Платформа | Контракти |
|| lib/overlay/runtime.ts | Платформа | loadOverlayMessages / resolveOverlayHomeRail |
|| lib/overlay/registry.ts | Порожні карти платформи; карти накладає клон | Завантажувачі доменних функцій |
Споживачі імпортують із @/lib/overlay/runtime. Клони ніколи не дублюють завантажувачі в registry.ts.
Чекліст оператора (calculator / Order Lab): Ringization playbook.
Джерелом поширення залишається ring-platform.org → клони для спільного коду. Власні пресети клону залишаються в директорії клону й мають перевагу під час ringdom-clone-build.
if (productPreset === 'agricultural') в аксесорахcustom-types.ts / overrides.ts без модуля іменованого пресетуswitch (vertical) у коді функцій — використовуйте реєстрWhite-label-клони Ring використовують одну кодову базу платформи: ring-platform.org. Вертикалі обираються назвою пресету в ring-config.json. Типізовані каталоги розташовані в features/*/presets/<preset>.ts (а головна сторінка — у components/pages/home-presets/<preset>.tsx).
|| Джерело | Що там розташовано | Коли має перевагу |
||--------|------------------|--------------|
|| Платформа (ring-platform.org) | Спільні ніші (platform, agricultural, …) | База кожної збірки |
|| Директорія проєкту клону (наприклад, ring-greenfood-live) | Брендинг, ring-config.json, custom <preset>.ts + накладення реєстру | Перезаписує при конфлікті після копіювання платформи |
Використовуйте ringdom-clone-build (ringdom-mcp):
ring-platform.org → тимчасова директорія збірки (пропускаються node_modules / .next / .git)
ringdom-clone-build({ project_name: "ring-greenfood-live", dry_run?: true })
→ .ringdom-build/<project>/<timestamp>Не очікуйте, що одного тонкого накладення достатньо для застосунку, який можна запустити — спочатку виконайте об’єднання.
|| Рівень | Що | Де |
||------|------|--------|
|| 1 — дані | Списки категорій, токени бейджів, мітки | Відображення ring-config.json + locales/ |
|| 2 — типізована логіка | Каталоги сутностей, zod/forms, UI полів ніші | features/*/presets/<preset>.ts (платформа та/або накладення клону) |
GreenFood встановлює entities / productFields / productBadges у значення "agricultural", а home.preset — у "mvm-landing".
Усі використовують налаштований рядок *.preset. Якщо сингулярний ключ не встановлено, entities і productBadges повертаються до productFields.preset, а потім до "platform" — без жорстко заданої логіки if/else для ніші.
getEntitiesPreset() → реєстр features/entities/presetsgetHomePreset() → реєстр components/pages/home-presetsgetProductFieldsPreset() / getProductFieldsPresets()getProductBadgesPreset() / getProductBadgesPresets()Правило: назви пресетів з’являються в ring-config і карті реєстру. Споживачі викликають getEntityTypes() / getEntityTypeList() — ніколи не імпортують agricultural.ts безпосередньо.
Власна ніша в клоні: додайте features/entities/presets/<name>.ts у проєкт клону, накладіть index.ts, щоб зареєструвати її, встановіть entities.preset у цю назву, а потім виконайте ringdom-clone-build.
Дисципліна бандла: синхронні каталоги — це легкі списки UI. Важкі каталоги полів ERP розташовані в модулях *-erp.ts, які завантажуються лише асинхронно через loadErpEntityTypes().
presets/<name>.ts): id, emoji, англійські резервні назви/описиlocales/*/modules/entities.json → types.<id> + types.<id>Desccomponents/entities/entity-type-icons.tsx TYPE_VISUALS mapuseEntityTypeLabel() / useEntityTypeDescription() — спочатку i18n, потім резервний текст каталогуfeatures/entities/presets/<name>.ts (+ необов’язковий <name>-erp.ts)ENTITIES_PRESET_REGISTRY (+ ERP_CATALOG_REGISTRY, якщо потрібно)components/pages/home-presets/<name>.tsxproductFieldsPresets / productBadgesPresetslocales/*/modules/entities.jsonring-config.template.jsonЦільовий список: platform, agricultural, потім tourism, sport, business, pet, auto, connect, technopark, manufacturing.
.reggie-propagate-exclude.json захищає шляхи лише накладення від перезапису Reggie:
ring-config.jsonpublic/logo*.svg, favicon.ico, public/branding/locales/{en,uk,ru}/config.json, vendor.jsonfeatures/*/presets/<clone-only>.ts (+ накладення реєстру), якщо їх ще не передано в upstreamlib/overlay/registry.ts (карти). Не виключайте lib/overlay/types.ts або lib/overlay/runtime.ts — це SSOT платформи.|| Шлях | Власник | Роль |
||------|------|------|
|| lib/overlay/types.ts | Платформа | Контракти |
|| lib/overlay/runtime.ts | Платформа | loadOverlayMessages / resolveOverlayHomeRail |
|| lib/overlay/registry.ts | Порожні карти платформи; карти накладає клон | Завантажувачі доменних функцій |
Споживачі імпортують із @/lib/overlay/runtime. Клони ніколи не дублюють завантажувачі в registry.ts.
Чекліст оператора (calculator / Order Lab): Ringization playbook.
Джерелом поширення залишається ring-platform.org → клони для спільного коду. Власні пресети клону залишаються в директорії клону й мають перевагу під час ringdom-clone-build.
if (productPreset === 'agricultural') в аксесорахcustom-types.ts / overrides.ts без модуля іменованого пресетуswitch (vertical) у коді функцій — використовуйте реєстр
{
"entities": { "preset": "platform" },
"home": { "preset": "platform" },
"productFields": { "preset": "platform" },
"productBadges": { "preset": "platform" },
"productFieldsPresets": {
"platform": { "storeCategories": ["commerce", "education", "…"] },
"agricultural": { "storeCategories": ["organic-produce", "honey-sweets", "…"] }
},
"productBadgesPresets": {
"platform": { "productBadges": ["new", "featured", "popular"] },
"agricultural": { "productBadges": ["organic", "local", "regenerative"] }
}
}
features/entities/presets/
types.ts # EntityTypeCatalog contract
platform.ts # export const entityTypes (26 industries)
agricultural.ts # healthy-living UI catalog (lightweight)
agricultural-erp.ts # heavy ERP field catalogs — async-only via loadErpEntityTypes()
index.ts # ENTITIES_PRESET_REGISTRY + getEntityTypes()
components/pages/
home.tsx # platform default landing
home-presets/mvm-landing.tsx # multi-vendor-marketplace e-commerce landing
home-content-resolver.tsx # HOME_PRESET_REGISTRY + getHomePreset()
ensure ring-config: entities/productFields/productBadges = agricultural, home = mvm-landing
keep branding + locale deltas in ring-greenfood-live
ringdom-clone-build({ project_name: "ring-greenfood-live" })
build/deploy from .ringdom-build/ring-greenfood-live/<stamp>
{
"entities": { "preset": "platform" },
"home": { "preset": "platform" },
"productFields": { "preset": "platform" },
"productBadges": { "preset": "platform" },
"productFieldsPresets": {
"platform": { "storeCategories": ["commerce", "education", "…"] },
"agricultural": { "storeCategories": ["organic-produce", "honey-sweets", "…"] }
},
"productBadgesPresets": {
"platform": { "productBadges": ["new", "featured", "popular"] },
"agricultural": { "productBadges": ["organic", "local", "regenerative"] }
}
}
features/entities/presets/
types.ts # EntityTypeCatalog contract
platform.ts # export const entityTypes (26 industries)
agricultural.ts # healthy-living UI catalog (lightweight)
agricultural-erp.ts # heavy ERP field catalogs — async-only via loadErpEntityTypes()
index.ts # ENTITIES_PRESET_REGISTRY + getEntityTypes()
components/pages/
home.tsx # platform default landing
home-presets/mvm-landing.tsx # multi-vendor-marketplace e-commerce landing
home-content-resolver.tsx # HOME_PRESET_REGISTRY + getHomePreset()
ensure ring-config: entities/productFields/productBadges = agricultural, home = mvm-landing
keep branding + locale deltas in ring-greenfood-live
ringdom-clone-build({ project_name: "ring-greenfood-live" })
build/deploy from .ringdom-build/ring-greenfood-live/<stamp>
{
"entities": { "preset": "platform" },
"home": { "preset": "platform" },
"productFields": { "preset": "platform" },
"productBadges": { "preset": "platform" },
"productFieldsPresets": {
"platform": { "storeCategories": ["commerce", "education", "…"] },
"agricultural": { "storeCategories": ["organic-produce", "honey-sweets", "…"] }
},
"productBadgesPresets": {
"platform": { "productBadges": ["new", "featured", "popular"] },
"agricultural": { "productBadges": ["organic", "local", "regenerative"] }
}
}
features/entities/presets/
types.ts # EntityTypeCatalog contract
platform.ts # export const entityTypes (26 industries)
agricultural.ts # healthy-living UI catalog (lightweight)
agricultural-erp.ts # heavy ERP field catalogs — async-only via loadErpEntityTypes()
index.ts # ENTITIES_PRESET_REGISTRY + getEntityTypes()
components/pages/
home.tsx # platform default landing
home-presets/mvm-landing.tsx # multi-vendor-marketplace e-commerce landing
home-content-resolver.tsx # HOME_PRESET_REGISTRY + getHomePreset()
ensure ring-config: entities/productFields/productBadges = agricultural, home = mvm-landing
keep branding + locale deltas in ring-greenfood-live
ringdom-clone-build({ project_name: "ring-greenfood-live" })
build/deploy from .ringdom-build/ring-greenfood-live/<stamp>