Ring Platform Logo

    Завантаження документації...

    Підготовка контенту платформи Ring

    Documentation

    Приветствие — миссия и аудитории

    Добро пожаловать в Ring Platform

    Хаб библиотеки

    Документация платформы Ring

    Начало работы

    Индекс
    Предварительные требования
    Установка
    Миграции базы данных
    Первый успех
    Устранение неполадок
    Next Steps

    Архитектура

    Обзор архитектуры
    Режимы бэкенда и базы данных
    Data Model
    Архитектура Аутентификации
    Архитектура Email AI-CRM
    Архитектура PaymentConductor
    Архитектура News Kingdom
    Proxy и интернационализация
    Real Time
    Security

    Функции

    Index
    Authentication
    Email AI-CRM
    Entities
    Opportunities
    Messaging
    Notifications
    Push-уведомления через FCM (Ring)
    Web3 Кошелек
    Store
    Интеграция платежей
    PaymentConductor
    Интеграция WayForPay

    API-интерфейс

    Index
    Аутентификация
    Email AI-CRM API
    Сущности
    Opportunities
    Messaging
    Notifications
    Wallet
    Store

    CLI

    Ring CLI (только enterprise)

    Кастомизация

    Index
    Branding
    Features
    Localization
    Themes
    Components

    Развёртывание

    Index
    Self-hosted развёртывание
    Vercel
    Docker
    Environment
    Monitoring
    Оптимизация производительности
    Backup

    Разработка

    Index
    Local Setup
    Code Structure
    Community tooling
    Ring MCP Server
    OSS vs enterprise
    Best Practices
    Workflow

    Примеры

    Index
    Quick Start
    Authentication
    Email AI-CRM — туториал
    Api Integration
    Интеграция Web3
    White Label
    Реальные Проекты

    Интеграции

    Ethereum-кошельки (Wagmi v3)

    Быстрый вход (CTO · аудиторы · агенты)

    Хаб библиотеки
    Приветствие — миссия и аудитории
    Начало работы
    Архитектура и Auth.js
    Режимы бэкенда и БД (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP
    Деплой (Docker · k8s)
    Безопасность и комплаенс
    Ring Platform Logo

    Завантаження документації...

    Підготовка контенту платформи Ring

    Documentation

    Приветствие — миссия и аудитории

    Добро пожаловать в Ring Platform

    Хаб библиотеки

    Документация платформы Ring

    Начало работы

    Индекс
    Предварительные требования
    Установка
    Миграции базы данных
    Первый успех
    Устранение неполадок
    Next Steps

    Архитектура

    Обзор архитектуры
    Режимы бэкенда и базы данных
    Data Model
    Архитектура Аутентификации
    Архитектура Email AI-CRM
    Архитектура PaymentConductor
    Архитектура News Kingdom
    Proxy и интернационализация

    Функции

    Index
    Authentication
    Email AI-CRM
    Entities
    Opportunities
    Messaging
    Notifications
    Push-уведомления через FCM (Ring)

    API-интерфейс

    Index
    Аутентификация
    Email AI-CRM API
    Сущности
    Opportunities
    Messaging
    Notifications
    Wallet
    Store

    CLI

    Ring CLI (только enterprise)

    Кастомизация

    Index
    Branding
    Features
    Localization
    Themes
    Components

    Развёртывание

    Index
    Self-hosted развёртывание
    Vercel
    Docker
    Environment
    Monitoring
    Оптимизация производительности
    Backup

    Разработка

    Index
    Local Setup
    Code Structure
    Community tooling
    Ring MCP Server
    OSS vs enterprise
    Best Practices
    Workflow

    Примеры

    Index
    Quick Start
    Authentication
    Email AI-CRM — туториал
    Api Integration
    Интеграция Web3
    White Label
    Реальные Проекты

    Интеграции

    Ethereum-кошельки (Wagmi v3)

    Быстрый вход (CTO · аудиторы · агенты)

    Хаб библиотеки
    Приветствие — миссия и аудитории
    Начало работы
    Архитектура и Auth.js
    Режимы бэкенда и БД (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP
    Деплой (Docker · k8s)
    Безопасность и комплаенс
    Ring Platform Logo

    Завантаження документації...

    Підготовка контенту платформи Ring

    Documentation

    Приветствие — миссия и аудитории

    Добро пожаловать в Ring Platform

    Хаб библиотеки

    Документация платформы Ring

    Начало работы

    Индекс
    Предварительные требования
    Установка
    Миграции базы данных
    Первый успех
    Устранение неполадок
    Next Steps

    Архитектура

    Обзор архитектуры
    Режимы бэкенда и базы данных
    Data Model
    Архитектура Аутентификации
    Архитектура Email AI-CRM
    Архитектура PaymentConductor
    Архитектура News Kingdom
    Proxy и интернационализация

    Функции

    Index
    Authentication
    Email AI-CRM
    Entities
    Opportunities
    Messaging
    Notifications
    Push-уведомления через FCM (Ring)

    API-интерфейс

    Index
    Аутентификация
    Email AI-CRM API
    Сущности
    Opportunities
    Messaging
    Notifications
    Wallet
    Store

    CLI

    Ring CLI (только enterprise)

    Кастомизация

    Index
    Branding
    Features
    Localization
    Themes
    Components

    Развёртывание

    Index
    Self-hosted развёртывание
    Vercel
    Docker
    Environment
    Monitoring
    Оптимизация производительности
    Backup

    Разработка

    Index
    Local Setup
    Code Structure
    Community tooling
    Ring MCP Server
    OSS vs enterprise
    Best Practices
    Workflow

    Примеры

    Index
    Quick Start
    Authentication
    Email AI-CRM — туториал
    Api Integration
    Интеграция Web3
    White Label
    Реальные Проекты

    Интеграции

    Ethereum-кошельки (Wagmi v3)

    Быстрый вход (CTO · аудиторы · агенты)

    Хаб библиотеки
    Приветствие — миссия и аудитории
    Начало работы
    Архитектура и Auth.js
    Режимы бэкенда и БД (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP
    Деплой (Docker · k8s)
    Безопасность и комплаенс
    Модуль Новостей - Цифровой Газетный Опыт
    Блоги участников
    Научный редактор
    Система локалей
    Безопасность и соответствие
    NFT Маркетплейс
    Система Стейкинга Токенов
    Паттерны Оптимизации Производительности
    Мобильный Опыт
    Администрирование
    Code Style
    Performance
    Testing
    Deployment
    Debugging
    Contributing
    Api Examples
    ringdom.org — база LegioX
    Исходники — лицензия MIT (GitHub)
    Real Time
    Security
    Web3 Кошелек
    Store
    Интеграция платежей
    PaymentConductor
    Интеграция WayForPay
    Модуль Новостей - Цифровой Газетный Опыт
    Блоги участников
    Научный редактор
    Система локалей
    Безопасность и соответствие
    NFT Маркетплейс
    Система Стейкинга Токенов
    Паттерны Оптимизации Производительности
    Мобильный Опыт
    Администрирование
    Code Style
    Performance
    Testing
    Deployment
    Debugging
    Contributing
    Api Examples
    ringdom.org — база LegioX
    Исходники — лицензия MIT (GitHub)
    Real Time
    Security
    Web3 Кошелек
    Store
    Интеграция платежей
    PaymentConductor
    Интеграция WayForPay
    Модуль Новостей - Цифровой Газетный Опыт
    Блоги участников
    Научный редактор
    Система локалей
    Безопасность и соответствие
    NFT Маркетплейс
    Система Стейкинга Токенов
    Паттерны Оптимизации Производительности
    Мобильный Опыт
    Администрирование
    Code Style
    Performance
    Testing
    Deployment
    Debugging
    Contributing
    Api Examples
    ringdom.org — база LegioX
    Исходники — лицензия MIT (GitHub)

    Режимы бэкенда и базы данных

    Ring Platform — это единая кодовая база приложения с обязательным переключателем в рантайме: DB_BACKEND_MODE. Значение определяет, какие адаптеры БД регистрируются, используется ли Firestore для данных приложения и как подключены push-уведомления.

    Эта страница — канонический справочник для операторов и сопровождения клонов. Реализация: lib/database/backend-mode-config.ts, lib/database/DatabaseService.ts, lib/database/BackendSelector.ts.

    DB_BACKEND_MODE (обязательно)

    РежимОсновная БД приложенияFirebase Admin для БД / Firestore?Push (FCM / Apple)
    k8s-postgres-fcmPostgreSQL (ваш кластер — например k3s + CloudNativePG / PostGIS)Нет — shouldUseFirebaseForDatabase() = false; вне firebase-full getAdminDb() возвращает mock FirestoreFCM (и Apple по настройке) через Firebase Admin messaging и web-конфиг; Firestore не является источником истины
    firebase-fullFirestore / пути на Firebase

    Режимы бэкенда и базы данных

    Ring Platform — это единая кодовая база приложения с обязательным переключателем в рантайме: DB_BACKEND_MODE. Значение определяет, какие адаптеры БД регистрируются, используется ли Firestore для данных приложения и как подключены push-уведомления.

    Эта страница — канонический справочник для операторов и сопровождения клонов. Реализация: lib/database/backend-mode-config.ts, lib/database/DatabaseService.ts, lib/database/BackendSelector.ts.

    DB_BACKEND_MODE (обязательно)

    РежимОсновная БД приложенияFirebase Admin для БД / Firestore?Push (FCM / Apple)
    k8s-postgres-fcmPostgreSQL (ваш кластер — например k3s + CloudNativePG / PostGIS)Нет — shouldUseFirebaseForDatabase() = false; вне firebase-full getAdminDb() возвращает mock FirestoreFCM (и Apple по настройке) через Firebase Admin messaging и web-конфиг; Firestore не является источником истины
    firebase-fullFirestore / пути на Firebase

    Режимы бэкенда и базы данных

    Ring Platform — это единая кодовая база приложения с обязательным переключателем в рантайме: DB_BACKEND_MODE. Значение определяет, какие адаптеры БД регистрируются, используется ли Firestore для данных приложения и как подключены push-уведомления.

    Эта страница — канонический справочник для операторов и сопровождения клонов. Реализация: lib/database/backend-mode-config.ts, lib/database/DatabaseService.ts, lib/database/BackendSelector.ts.

    DB_BACKEND_MODE (обязательно)

    РежимОсновная БД приложенияFirebase Admin для БД / Firestore?Push (FCM / Apple)
    k8s-postgres-fcmPostgreSQL (ваш кластер — например k3s + CloudNativePG / PostGIS)Нет — shouldUseFirebaseForDatabase() = false; вне firebase-full getAdminDb() возвращает mock FirestoreFCM (и Apple по настройке) через Firebase Admin messaging и web-конфиг; Firestore не является источником истины
    firebase-fullFirestore / пути на Firebase
    Да
    FCM как часть полного стека Firebase
    supabase-fcmPostgreSQL на Supabase (подключение через env)Нет (тот же подход к Firestore, что и в k8s-режиме)FCM + Apple по настройке

    Имена в документации: продакшен на собственном Postgres часто описывают как «self-hosted PostgreSQL + FCM» или «режим с приоритетом Postgres». Строка enum остаётся k8s-postgres-fcm — переименование сломает все деплои, хранилища секретов и клоны без согласованной миграции.

    Firebase в k8s-postgres-fcm и supabase-fcm

    Да
    FCM как часть полного стека Firebase
    supabase-fcmPostgreSQL на Supabase (подключение через env)Нет (тот же подход к Firestore, что и в k8s-режиме)FCM + Apple по настройке

    Имена в документации: продакшен на собственном Postgres часто описывают как «self-hosted PostgreSQL + FCM» или «режим с приоритетом Postgres». Строка enum остаётся k8s-postgres-fcm — переименование сломает все деплои, хранилища секретов и клоны без согласованной миграции.

    Firebase в k8s-postgres-fcm и supabase-fcm

    Да
    FCM как часть полного стека Firebase
    supabase-fcmPostgreSQL на Supabase (подключение через env)Нет (тот же подход к Firestore, что и в k8s-режиме)FCM + Apple по настройке

    Имена в документации: продакшен на собственном Postgres часто описывают как «self-hosted PostgreSQL + FCM» или «режим с приоритетом Postgres». Строка enum остаётся k8s-postgres-fcm — переименование сломает все деплои, хранилища секретов и клоны без согласованной миграции.

    Firebase в k8s-postgres-fcm и supabase-fcm

    • Данные приложения (коллекции через DatabaseService / BackendSelector) идут в PostgreSQL через PostgreSQLAdapter.
    • lib/firebase-admin.server.ts явно не поднимает настоящий Firestore, когда shouldUseFirebaseForDatabase() = false (см. комментарии у getAdminDb() / getAdminAuth()).
    • FCM по-прежнему использует учётные данные проекта Firebase, если включено (shouldInitializeFirebaseFCM(), NEXT_PUBLIC_FIREBASE_*, переменные service account). Это доставка push, а не основное транзакционное хранилище.
    • Данные приложения (коллекции через DatabaseService / BackendSelector) идут в PostgreSQL через PostgreSQLAdapter.
    • lib/firebase-admin.server.ts явно не поднимает настоящий Firestore, когда shouldUseFirebaseForDatabase() = false (см. комментарии у getAdminDb() / getAdminAuth()).
    • FCM по-прежнему использует учётные данные проекта Firebase, если включено (shouldInitializeFirebaseFCM(), NEXT_PUBLIC_FIREBASE_*, переменные service account). Это доставка push, а не основное транзакционное хранилище.
    • Данные приложения (коллекции через DatabaseService / BackendSelector) идут в PostgreSQL через PostgreSQLAdapter.
    • lib/firebase-admin.server.ts явно не поднимает настоящий Firestore, когда shouldUseFirebaseForDatabase() = false (см. комментарии у getAdminDb() / getAdminAuth()).
    • FCM по-прежнему использует учётные данные проекта Firebase, если включено (shouldInitializeFirebaseFCM(), NEXT_PUBLIC_FIREBASE_*, переменные service account). Это доставка push, а не основное транзакционное хранилище.

    Формулировка «мы ушли с Firebase как с БД» корректна для режимов с приоритетом Postgres; Firebase не исчез из репозитория — остаётся стандартным путём FCM, пока push не отключён.

    Supabase: две разные роли

    Формулировка «мы ушли с Firebase как с БД» корректна для режимов с приоритетом Postgres; Firebase не исчез из репозитория — остаётся стандартным путём FCM, пока push не отключён.

    Supabase: две разные роли

    Формулировка «мы ушли с Firebase как с БД» корректна для режимов с приоритетом Postgres; Firebase не исчез из репозитория — остаётся стандартным путём FCM, пока push не отключён.

    Supabase: две разные роли

    1. DB_BACKEND_MODE=supabase-fcm — Postgres на Supabase; тот же паттерн «Postgres primary + FCM», что и в k8s-режиме по отношению к Firestore.
    2. Tunnel realtime (NEXT_PUBLIC_TUNNEL_TRANSPORT=supabase) — опциональный канал Realtime в lib/tunnel/transports/supabase-transport.ts через @supabase/supabase-js и NEXT_PUBLIC_SUPABASE_URL / NEXT_PUBLIC_SUPABASE_ANON_KEY. Это ортогонально тому, какой SQL-бэкенд владеет таблицами; наличие Supabase в env не всегда означает режим supabase-fcm.
    1. DB_BACKEND_MODE=supabase-fcm — Postgres на Supabase; тот же паттерн «Postgres primary + FCM», что и в k8s-режиме по отношению к Firestore.
    2. Tunnel realtime (NEXT_PUBLIC_TUNNEL_TRANSPORT=supabase) — опциональный канал Realtime в lib/tunnel/transports/supabase-transport.ts через @supabase/supabase-js и NEXT_PUBLIC_SUPABASE_URL / NEXT_PUBLIC_SUPABASE_ANON_KEY. Это ортогонально тому, какой SQL-бэкенд владеет таблицами; наличие Supabase в env не всегда означает режим supabase-fcm.
    1. DB_BACKEND_MODE=supabase-fcm — Postgres на Supabase; тот же паттерн «Postgres primary + FCM», что и в k8s-режиме по отношению к Firestore.
    2. Tunnel realtime (NEXT_PUBLIC_TUNNEL_TRANSPORT=supabase) — опциональный канал Realtime в lib/tunnel/transports/supabase-transport.ts через @supabase/supabase-js и NEXT_PUBLIC_SUPABASE_URL / NEXT_PUBLIC_SUPABASE_ANON_KEY. Это ортогонально тому, какой SQL-бэкенд владеет таблицами; наличие Supabase в env не всегда означает режим supabase-fcm.

    Vercel и «serverless Postgres»

    В этом дереве кода Ring Platform не используется @vercel/postgres как основной драйвер БД. Vercel Blob (BLOB_READ_WRITE_TOKEN) — для файлового / blob-хранилища по настройке; это не реляционная база.

    DB_HYBRID_MODE — это не то же самое, что DB_BACKEND_MODE

    DB_HYBRID_MODE — устаревший / на уровне фич переключатель, на который ещё ссылаются несколько мест (например features/store/config.ts, features/notifications/services/notification-service-loader.ts, scripts/inject-firebase-config.js). Он не заменяет и не тождественен DB_BACKEND_MODE.

    • DB_BACKEND_MODE — глобальный режим деплоя (приоритет Postgres против полный Firebase против Postgres на Supabase).
    • DB_HYBRID_MODE — более старая «гибридная» терминология для частичного Firebase против Postgres в отдельных фичах.

    Vercel и «serverless Postgres»

    В этом дереве кода Ring Platform не используется @vercel/postgres как основной драйвер БД. Vercel Blob (BLOB_READ_WRITE_TOKEN) — для файлового / blob-хранилища по настройке; это не реляционная база.

    DB_HYBRID_MODE — это не то же самое, что DB_BACKEND_MODE

    DB_HYBRID_MODE — устаревший / на уровне фич переключатель, на который ещё ссылаются несколько мест (например features/store/config.ts, features/notifications/services/notification-service-loader.ts, scripts/inject-firebase-config.js). Он не заменяет и не тождественен DB_BACKEND_MODE.

    • DB_BACKEND_MODE — глобальный режим деплоя (приоритет Postgres против полный Firebase против Postgres на Supabase).
    • DB_HYBRID_MODE — более старая «гибридная» терминология для частичного Firebase против Postgres в отдельных фичах.

    Vercel и «serverless Postgres»

    В этом дереве кода Ring Platform не используется @vercel/postgres как основной драйвер БД. Vercel Blob (BLOB_READ_WRITE_TOKEN) — для файлового / blob-хранилища по настройке; это не реляционная база.

    DB_HYBRID_MODE — это не то же самое, что DB_BACKEND_MODE

    DB_HYBRID_MODE — устаревший / на уровне фич переключатель, на который ещё ссылаются несколько мест (например features/store/config.ts, features/notifications/services/notification-service-loader.ts, scripts/inject-firebase-config.js). Он не заменяет и не тождественен DB_BACKEND_MODE.

    • DB_BACKEND_MODE — глобальный режим деплоя (приоритет Postgres против полный Firebase против Postgres на Supabase).
    • DB_HYBRID_MODE — более старая «гибридная» терминология для частичного Firebase против Postgres в отдельных фичах.

    Рекомендация: для новых деплоев документируйте и задавайте DB_BACKEND_MODE. Если в документации «hybrid» заменяете на «self-hosted», делайте это в прозе и именах в новом коде, а не в строке enum DB_BACKEND_MODE без плана миграции.

    Auth.js и PostgreSQL

    Таблицы auth (users, accounts, sessions, verification_tokens, …) входят в схему Postgres при адаптере PostgreSQL. См. lib/auth/postgres-adapter.ts и data/schema.sql. Поддержка нескольких режимов кратко в Authentication.

    Связанная документация

    Рекомендация: для новых деплоев документируйте и задавайте DB_BACKEND_MODE. Если в документации «hybrid» заменяете на «self-hosted», делайте это в прозе и именах в новом коде, а не в строке enum DB_BACKEND_MODE без плана миграции.

    Auth.js и PostgreSQL

    Таблицы auth (users, accounts, sessions, verification_tokens, …) входят в схему Postgres при адаптере PostgreSQL. См. lib/auth/postgres-adapter.ts и data/schema.sql. Поддержка нескольких режимов кратко в Authentication.

    Связанная документация

    Рекомендация: для новых деплоев документируйте и задавайте DB_BACKEND_MODE. Если в документации «hybrid» заменяете на «self-hosted», делайте это в прозе и именах в новом коде, а не в строке enum DB_BACKEND_MODE без плана миграции.

    Auth.js и PostgreSQL

    Таблицы auth (users, accounts, sessions, verification_tokens, …) входят в схему Postgres при адаптере PostgreSQL. См. lib/auth/postgres-adapter.ts и data/schema.sql. Поддержка нескольких режимов кратко в Authentication.

    Связанная документация

    • Конфигурация окружения — сгруппированные секреты и URL (указатель на режимы бэкенда).
    • Push-уведомления (FCM) — токены хранятся через BackendSelector и режим.
    • Протокол Tunnel — транспорты против DB_BACKEND_MODE.
    • Выбор бэкенда БД (white-label) — продуктовое сравнение; env согласуйте с этой страницей.
    • Продакшен-подключение: k8s/ENV-PROD-WIRING.md (секреты кластера, build args, DB_BACKEND_MODE в образе против runtime).
    • Конфигурация окружения — сгруппированные секреты и URL (указатель на режимы бэкенда).
    • Push-уведомления (FCM) — токены хранятся через BackendSelector и режим.
    • Протокол Tunnel — транспорты против DB_BACKEND_MODE.
    • Выбор бэкенда БД (white-label) — продуктовое сравнение; env согласуйте с этой страницей.
    • Продакшен-подключение: k8s/ENV-PROD-WIRING.md (секреты кластера, build args, DB_BACKEND_MODE в образе против runtime).
    • Конфигурация окружения — сгруппированные секреты и URL (указатель на режимы бэкенда).
    • Push-уведомления (FCM) — токены хранятся через BackendSelector и режим.
    • Протокол Tunnel — транспорты против DB_BACKEND_MODE.
    • Выбор бэкенда БД (white-label) — продуктовое сравнение; env согласуйте с этой страницей.
    • Продакшен-подключение: k8s/ENV-PROD-WIRING.md (секреты кластера, build args, DB_BACKEND_MODE в образе против runtime).

    Открытое решение (именование)

    Если нужно, чтобы строка k8s-postgres-fcm в env читалась как self-hosted или postgres, потребуются: новое допустимое значение в backend-mode-config.ts, манифесты деплоя, секреты всех колец, CI и документация — или длительная депрекация с поддержкой алиасов. Только документационное переименование в «self-hosted» безопасно и уже отражено выше.

    Открытое решение (именование)

    Если нужно, чтобы строка k8s-postgres-fcm в env читалась как self-hosted или postgres, потребуются: новое допустимое значение в backend-mode-config.ts, манифесты деплоя, секреты всех колец, CI и документация — или длительная депрекация с поддержкой алиасов. Только документационное переименование в «self-hosted» безопасно и уже отражено выше.

    Открытое решение (именование)

    Если нужно, чтобы строка k8s-postgres-fcm в env читалась как self-hosted или postgres, потребуются: новое допустимое значение в backend-mode-config.ts, манифесты деплоя, секреты всех колец, CI и документация — или длительная депрекация с поддержкой алиасов. Только документационное переименование в «self-hosted» безопасно и уже отражено выше.