Підготовка контенту платформи Ring
Підготовка контенту платформи Ring
Підготовка контенту платформи Ring
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-fcm | PostgreSQL (ваш кластер — наприклад k3s + CloudNativePG / PostGIS) | Ні — shouldUseFirebaseForDatabase() = false; поза firebase-full getAdminDb() повертає mock Firestore | FCM (і Apple за налаштуванням) через Firebase Admin messaging та web-конфіг; Firestore не є джерелом істини |
firebase-full | Firestore / шляхи на 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-fcm | PostgreSQL (ваш кластер — наприклад k3s + CloudNativePG / PostGIS) | Ні — shouldUseFirebaseForDatabase() = false; поза firebase-full getAdminDb() повертає mock Firestore | FCM (і Apple за налаштуванням) через Firebase Admin messaging та web-конфіг; Firestore не є джерелом істини |
firebase-full | Firestore / шляхи на 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-fcm | PostgreSQL (ваш кластер — наприклад k3s + CloudNativePG / PostGIS) | Ні — shouldUseFirebaseForDatabase() = false; поза firebase-full getAdminDb() повертає mock Firestore | FCM (і Apple за налаштуванням) через Firebase Admin messaging та web-конфіг; Firestore не є джерелом істини |
firebase-full | Firestore / шляхи на Firebase |
| Так |
| FCM у складі повного стеку Firebase |
supabase-fcm | PostgreSQL на Supabase (підключення через env) | Ні (той самий підхід до Firestore, що й у k8s-режимі) | FCM + Apple за налаштуванням |
Назви в документації: продакшен на власному Postgres часто описують як «self-hosted PostgreSQL + FCM» або «режим з пріоритетом Postgres». Рядок enum лишається k8s-postgres-fcm — перейменування зламає всі деплої, сховища секретів і клони без узгодженої міграції.
k8s-postgres-fcm та supabase-fcm| Так |
| FCM у складі повного стеку Firebase |
supabase-fcm | PostgreSQL на Supabase (підключення через env) | Ні (той самий підхід до Firestore, що й у k8s-режимі) | FCM + Apple за налаштуванням |
Назви в документації: продакшен на власному Postgres часто описують як «self-hosted PostgreSQL + FCM» або «режим з пріоритетом Postgres». Рядок enum лишається k8s-postgres-fcm — перейменування зламає всі деплої, сховища секретів і клони без узгодженої міграції.
k8s-postgres-fcm та supabase-fcm| Так |
| FCM у складі повного стеку Firebase |
supabase-fcm | PostgreSQL на Supabase (підключення через env) | Ні (той самий підхід до Firestore, що й у k8s-режимі) | FCM + Apple за налаштуванням |
Назви в документації: продакшен на власному Postgres часто описують як «self-hosted PostgreSQL + FCM» або «режим з пріоритетом Postgres». Рядок enum лишається k8s-postgres-fcm — перейменування зламає всі деплої, сховища секретів і клони без узгодженої міграції.
k8s-postgres-fcm та supabase-fcmDatabaseService / BackendSelector) йдуть у PostgreSQL через PostgreSQLAdapter.lib/firebase-admin.server.ts явно не піднімає справжній Firestore, коли shouldUseFirebaseForDatabase() = false (див. коментарі біля getAdminDb() / getAdminAuth()).shouldInitializeFirebaseFCM(), NEXT_PUBLIC_FIREBASE_*, змінні service account). Це доставка push, а не основна транзакційна БД.DatabaseService / BackendSelector) йдуть у PostgreSQL через PostgreSQLAdapter.lib/firebase-admin.server.ts явно не піднімає справжній Firestore, коли shouldUseFirebaseForDatabase() = false (див. коментарі біля getAdminDb() / getAdminAuth()).shouldInitializeFirebaseFCM(), NEXT_PUBLIC_FIREBASE_*, змінні service account). Це доставка push, а не основна транзакційна БД.DatabaseService / BackendSelector) йдуть у PostgreSQL через PostgreSQLAdapter.lib/firebase-admin.server.ts явно не піднімає справжній Firestore, коли shouldUseFirebaseForDatabase() = false (див. коментарі біля getAdminDb() / getAdminAuth()).shouldInitializeFirebaseFCM(), NEXT_PUBLIC_FIREBASE_*, змінні service account). Це доставка push, а не основна транзакційна БД.Тобто формулювання «ми пішли з Firebase як з БД» коректне для режимів з пріоритетом Postgres; Firebase не зник з репозиторію — залишається стандартним шляхом FCM, доки push не вимкнено.
Тобто формулювання «ми пішли з Firebase як з БД» коректне для режимів з пріоритетом Postgres; Firebase не зник з репозиторію — залишається стандартним шляхом FCM, доки push не вимкнено.
Тобто формулювання «ми пішли з Firebase як з БД» коректне для режимів з пріоритетом Postgres; Firebase не зник з репозиторію — залишається стандартним шляхом FCM, доки push не вимкнено.
DB_BACKEND_MODE=supabase-fcm — Postgres на Supabase; той самий патерн «Postgres primary + FCM», що й у k8s-режимі щодо Firestore.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.DB_BACKEND_MODE=supabase-fcm — Postgres на Supabase; той самий патерн «Postgres primary + FCM», що й у k8s-режимі щодо Firestore.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.DB_BACKEND_MODE=supabase-fcm — Postgres на Supabase; той самий патерн «Postgres primary + FCM», що й у k8s-режимі щодо Firestore.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.У цьому дереві коду Ring Platform не використовує @vercel/postgres як основний драйвер БД. Vercel Blob (BLOB_READ_WRITE_TOKEN) — для файлового / blob-сховища за налаштування; це не реляційна база.
DB_HYBRID_MODE — це не те саме, що DB_BACKEND_MODEDB_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 у окремих фічах.У цьому дереві коду Ring Platform не використовує @vercel/postgres як основний драйвер БД. Vercel Blob (BLOB_READ_WRITE_TOKEN) — для файлового / blob-сховища за налаштування; це не реляційна база.
DB_HYBRID_MODE — це не те саме, що DB_BACKEND_MODEDB_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 у окремих фічах.У цьому дереві коду Ring Platform не використовує @vercel/postgres як основний драйвер БД. Vercel Blob (BLOB_READ_WRITE_TOKEN) — для файлового / blob-сховища за налаштування; це не реляційна база.
DB_HYBRID_MODE — це не те саме, що DB_BACKEND_MODEDB_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 (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 (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 (users, accounts, sessions, verification_tokens, …) входять у схему Postgres при адаптері PostgreSQL. Див. lib/auth/postgres-adapter.ts та data/schema.sql. Підтримка кількох режимів коротко в Authentication.
BackendSelector і режим.DB_BACKEND_MODE.k8s/ENV-PROD-WIRING.md (секрети кластера, build args, DB_BACKEND_MODE в образі проти runtime).BackendSelector і режим.DB_BACKEND_MODE.k8s/ENV-PROD-WIRING.md (секрети кластера, build args, DB_BACKEND_MODE в образі проти runtime).BackendSelector і режим.DB_BACKEND_MODE.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» безпечне й уже відображено вище.