OpportunitiesEntities
Docs
    Ring Platform

    Decentralized Self-building Future

    Sign In
    Entities
    Opportunities
    Store
    Docs
    Platform Concepts
    RING EconomySonoratek LLCGlobal ImpactAI Meets Web3
    Get Started
    Quick StartCalculatorRoadmap
    Privacy|Contact
    v1.104.16|Sonoratek LLC

    Documentation

    Concepts, value, and typical clone scenarios — less code.

    Welcome to Ring
    Quick Reference
    Getting Started
    Prerequisites
    Installation
    First Success Validation
    Next Steps
    Features
    Multi-Vendor Store
    Inventory & Stock
    Vendor Management
    Commissions & Settlements
    SubscriptionConductor
    PaymentConductor
    Ring Oracle
    Payments Overview
    Public Pools & DAO Jars
    WayForPay Payment Integration
    Wallet & Credit System
    WalletConductor
    Affiliate & Referral Enablement
    Referral Codes (Refcodes)
    NFT Exhibition Marketplace
    Solana NFT Gates
    Token Staking System
    Owner Project Lab
    Entities
    Opportunities
    Real-Time Messaging
    Ring Tasks
    WebRTC Calls & STUNner TURN
    Peer Games
    News Module
    Member Blogs
    Public Profile Pages
    Profile Account Widgets
    Ring File Cabinet
    Username Reservation System
    Scientific Editor
    Notifications
    Push Notifications with FCM (Ring-Powered)
    Email AI-CRM
    Ring Mailer & RingdomX Mail
    Tunnel Protocol
    VideoConductor
    MediaConductor
    Generative Gallery
    Authentication
    Security & Compliance
    Admin console
    Admin Wiki
    Manage via Telegram
    Locale System
    Mobile Experience
    Performance Optimization Patterns
    Examples
    Quick Start
    Basic Setup
    White Label
    Custom Branding
    Web3 Integration
    Real World
    Advanced Features
    Customization
    Quick Start — Your First Ring Clone
    Customization Guide
    Vertical Presets (SSOT)
    Ringization playbook
    Branding
    Themes
    Features
    Localization
    Token Economics Setup
    Payment Gateway Integration
    Reference Ring deployments
    Project configuration
    Public environment variables
    Order Lab secrets
    WalletConnect Project ID (Reown Cloud)
    Supported services
    NODUS wiki (project knowledge)
    Configuration playbook
    Web3
    Token launch jurisdictions
    Wallet
    Wallet Security Tips
    Integrations
    Ethereum wallets (Wagmi v3)
    RingFileBase (object storage API)
    Ring CDN (RingFileBase edge)
    Deployment
    Self-hosted deployment
    Vercel Deployment
    Docker
    Environment Configuration
    Monitoring & Analytics
    Performance Optimization
    Backup & Recovery
    Architecture
    Data Model
    Security
    Real Time
    Discovery Mutation Sync
    PaymentConductor architecture
    WalletConductor architecture
    Backend Services
    Firebase Integration
    Development
    Ring MCP Server

    Quick entry (CTOs · auditors · agents)

    Welcome — mission & audiences
    Quick Reference
    Getting started
    Architecture & Auth.js
    Backend modes & databases (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Deploy (Docker · k8s)
    Security & compliance reads
    ringdom.org — LegioX homebase
    Source — MIT license (GitHub)

    Documentation

    Concepts, value, and typical clone scenarios — less code.

    Welcome to Ring
    Quick Reference
    Getting Started
    Prerequisites
    Installation
    First Success Validation
    Next Steps
    Features
    Multi-Vendor Store
    Inventory & Stock
    Vendor Management
    Commissions & Settlements
    SubscriptionConductor
    PaymentConductor
    Ring Oracle
    Payments Overview
    Public Pools & DAO Jars
    WayForPay Payment Integration
    Wallet & Credit System
    WalletConductor
    Affiliate & Referral Enablement
    Referral Codes (Refcodes)
    NFT Exhibition Marketplace
    Solana NFT Gates
    Token Staking System
    Owner Project Lab
    Entities
    Opportunities
    Real-Time Messaging
    Ring Tasks
    WebRTC Calls & STUNner TURN
    Peer Games
    News Module
    Member Blogs
    Public Profile Pages
    Profile Account Widgets
    Ring File Cabinet
    Username Reservation System
    Scientific Editor
    Notifications
    Push Notifications with FCM (Ring-Powered)
    Email AI-CRM
    Ring Mailer & RingdomX Mail
    Tunnel Protocol
    VideoConductor
    MediaConductor
    Generative Gallery
    Authentication
    Security & Compliance
    Admin console
    Admin Wiki
    Manage via Telegram
    Locale System
    Mobile Experience
    Performance Optimization Patterns
    Examples
    Quick Start
    Basic Setup
    White Label
    Custom Branding
    Web3 Integration
    Real World
    Advanced Features
    Customization
    Quick Start — Your First Ring Clone
    Customization Guide
    Vertical Presets (SSOT)
    Ringization playbook
    Branding
    Themes
    Features
    Localization
    Token Economics Setup
    Payment Gateway Integration
    Reference Ring deployments
    Project configuration
    Public environment variables
    Order Lab secrets
    WalletConnect Project ID (Reown Cloud)
    Supported services
    NODUS wiki (project knowledge)
    Configuration playbook
    Web3
    Token launch jurisdictions
    Wallet
    Wallet Security Tips
    Integrations
    Ethereum wallets (Wagmi v3)
    RingFileBase (object storage API)
    Ring CDN (RingFileBase edge)
    Deployment
    Self-hosted deployment
    Vercel Deployment
    Docker
    Environment Configuration
    Monitoring & Analytics
    Performance Optimization
    Backup & Recovery
    Architecture
    Data Model
    Security
    Real Time
    Discovery Mutation Sync
    PaymentConductor architecture
    WalletConductor architecture
    Backend Services
    Firebase Integration
    Development
    Ring MCP Server

    Quick entry (CTOs · auditors · agents)

    Welcome — mission & audiences
    Quick Reference
    Getting started
    Architecture & Auth.js
    Backend modes & databases (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Deploy (Docker · k8s)
    Security & compliance reads
    ringdom.org — LegioX homebase
    Source — MIT license (GitHub)

    Documentation

    Concepts, value, and typical clone scenarios — less code.

    Welcome to Ring
    Quick Reference
    Getting Started
    Prerequisites
    Installation
    First Success Validation
    Next Steps
    Features
    Multi-Vendor Store
    Inventory & Stock
    Vendor Management
    Commissions & Settlements
    SubscriptionConductor
    PaymentConductor
    Ring Oracle
    Payments Overview
    Public Pools & DAO Jars
    WayForPay Payment Integration
    Wallet & Credit System
    WalletConductor
    Affiliate & Referral Enablement
    Referral Codes (Refcodes)
    NFT Exhibition Marketplace
    Solana NFT Gates
    Token Staking System
    Owner Project Lab
    Entities
    Opportunities
    Real-Time Messaging
    Ring Tasks
    WebRTC Calls & STUNner TURN
    Peer Games
    News Module
    Member Blogs
    Public Profile Pages
    Profile Account Widgets
    Ring File Cabinet
    Username Reservation System
    Scientific Editor
    Notifications
    Push Notifications with FCM (Ring-Powered)
    Email AI-CRM
    Ring Mailer & RingdomX Mail
    Tunnel Protocol
    VideoConductor
    MediaConductor
    Generative Gallery
    Authentication
    Security & Compliance
    Admin console
    Admin Wiki
    Manage via Telegram
    Locale System
    Mobile Experience
    Performance Optimization Patterns
    Examples
    Quick Start
    Basic Setup
    White Label
    Custom Branding
    Web3 Integration
    Real World
    Advanced Features
    Customization
    Quick Start — Your First Ring Clone
    Customization Guide
    Vertical Presets (SSOT)
    Ringization playbook
    Branding
    Themes
    Features
    Localization
    Token Economics Setup
    Payment Gateway Integration
    Reference Ring deployments
    Project configuration
    Public environment variables
    Order Lab secrets
    WalletConnect Project ID (Reown Cloud)
    Supported services
    NODUS wiki (project knowledge)
    Configuration playbook
    Web3
    Token launch jurisdictions
    Wallet
    Wallet Security Tips
    Integrations
    Ethereum wallets (Wagmi v3)
    RingFileBase (object storage API)
    Ring CDN (RingFileBase edge)
    Deployment
    Self-hosted deployment
    Vercel Deployment
    Docker
    Environment Configuration
    Monitoring & Analytics
    Performance Optimization
    Backup & Recovery
    Architecture
    Data Model
    Security
    Real Time
    Discovery Mutation Sync
    PaymentConductor architecture
    WalletConductor architecture
    Backend Services
    Firebase Integration
    Development
    Ring MCP Server

    Quick entry (CTOs · auditors · agents)

    Welcome — mission & audiences
    Quick Reference
    Getting started
    Architecture & Auth.js
    Backend modes & databases (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Deploy (Docker · k8s)
    Security & compliance reads
    ringdom.org — LegioX homebase
    Source — MIT license (GitHub)
    Ring Logo

    Loading documentation...

    Preparing Ring content

    Ring Logo

    Loading documentation...

    Preparing Ring content

    Ring Logo

    Loading documentation...

    Preparing Ring content

    Installation

    Use Founder / Developer tabs in the docs sidebar to filter this page. Complete Prerequisites first. This guide matches the open-source repo (connectplatform/ring) and the PostgreSQL-primary default (DB_BACKEND_MODE=k8s-postgres-fcm).

    Install Ring on your machine for local development. Final-Split: the Next.js app lives under web/ — the repo-root install.sh delegates into web/, or you can run ./install.sh from ring/web directly.

    PathBest whenOutcome
    Recommended — install.shFirst clone, white-label scaffoldCopies env.local.template → .env.local, seeds ring-config.json if missing, generates AUTH_SECRET, runs npm install
    ManualYou already manage env/configSame files by hand; you own every copy and secret
    Time budget

    Full Postgres-primary install (first time): about 45–90 minutes. ./install.sh --quick plus an existing PostgreSQL instance is usually faster — you still apply schema and one OAuth provider before a useful sign-in.

    What you are installing

    ComponentVerified entry
    FrameworkNext.js 16 App Router + React 19
    AuthAuth.js v5 (auth.ts, AUTH_SECRET, OAuth providers)
    Default data planePostgreSQL via DB_BACKEND_MODE=k8s-postgres-fcm (mandatory env — no silent default)
    Dev serverCustom server.ts — Next.js + native WebSocket tunnel (/api/tunnel/ws) when self-hosted
    White-label configring-config.json (Layer1 may already ship community defaults; installer seeds from template only if missing)
    Installerinstall.sh v2.2.0 (SCRIPT_VERSION) — includes setup-db
    Installation flow

    Why this matters for your clone

    You are standing up a dev clone so stakeholders can click through branding, auth, and core marketplace flows before production hosting.

    Prerequisites

    Node 20+, Git, Postgres, ports — confirm before cloning

    Database migrations

    Apply data/schema.sql and kingdom migration order

    Database backend selection

    k8s-postgres-fcm vs supabase-fcm vs firebase-full

    First success validation

    Recommended path — install.sh

    install.sh v2.2.0 scaffolds env, optional ring-config.json, secrets, and dependencies. Prefer this for a clean first clone.

    Prerequisites

    • Node.js 20+ (installer fails earlier majors)
    • Git, and later PostgreSQL 14+ (16 Docker / 18 Homebrew recommended)
    • From OSS checkout: repo root or web/ (Final-Split)

    Steps

    Frequently asked questions

    Impact

    Will my clone work without Firebase?

    Yes for browse + Auth.js + Postgres CRUD when DB_BACKEND_MODE=k8s-postgres-fcm. Firebase Admin/client keys are needed for FCM push, not for the first homepage load.

    Do I need payments credentials on day one?

    No. WayForPay / Stripe belong later — after First success, before checkout demos.

    Migration

    Schema only or full kingdom migrations?

    Fresh installs: apply data/schema.sql, then news/payment/email increments as documented on Migrations. Do not apply obsolete 001_email_crm_schema.sql.

    Ringdom monorepo vs standalone Docker?

    Same app DB name (ring_platform) and DB_* contract. Monorepo compose uses volume ringdom_postgres_data and init scripts under infrastructure/postgres/init/.

    Ops

    Port 3000 already in use?

    lsof -ti:3000 | xargs kill or PORT=3001 npm run dev.

    Google sign-in fails?

    Check AUTH_GOOGLE_*, redirect URI http://localhost:3000/api/auth/callback/google, and non-empty AUTH_SECRET.

    Tunnel errors in the console?

    Confirm RING_DEPLOY_TARGET=self-hosted (and public twin) for local WSS. On Vercel use vercel / SSE-only.

    More: Troubleshooting.

    Related documentation

    Related documentation

    Prerequisites

    Prerequisite: confirm Node, Postgres, and ports before you clone.

    Database migrations

    Next-step: apply data/schema.sql and kingdom migration order after env scaffold.

    First Success Validation

    Next-step: smoke-test health, auth, and CRUD once npm run dev is up.

    Database Backend Selection

    Deep-dive: choose k8s-postgres-fcm, supabase-fcm, or firebase-full.

    1. Docs
    2. /Getting Started
    3. /Installation

    Updated Aug 12, 20266 min listen

    Installation

    Use Founder / Developer tabs in the docs sidebar to filter this page. Complete Prerequisites first. This guide matches the open-source repo (connectplatform/ring) and the PostgreSQL-primary default (DB_BACKEND_MODE=k8s-postgres-fcm).

    Install Ring on your machine for local development. Final-Split: the Next.js app lives under web/ — the repo-root install.sh delegates into web/, or you can run ./install.sh from ring/web directly.

    PathBest whenOutcome
    Recommended — install.shFirst clone, white-label scaffoldCopies env.local.template → .env.local, seeds ring-config.json if missing, generates AUTH_SECRET, runs npm install
    ManualYou already manage env/configSame files by hand; you own every copy and secret
    Time budget

    Full Postgres-primary install (first time): about 45–90 minutes. ./install.sh --quick plus an existing PostgreSQL instance is usually faster — you still apply schema and one OAuth provider before a useful sign-in.

    What you are installing

    ComponentVerified entry
    FrameworkNext.js 16 App Router + React 19
    AuthAuth.js v5 (auth.ts, AUTH_SECRET, OAuth providers)
    Default data planePostgreSQL via DB_BACKEND_MODE=k8s-postgres-fcm (mandatory env — no silent default)
    Dev serverCustom server.ts — Next.js + native WebSocket tunnel (/api/tunnel/ws) when self-hosted
    White-label configring-config.json (Layer1 may already ship community defaults; installer seeds from template only if missing)
    Installerinstall.sh v2.2.0 (SCRIPT_VERSION) — includes setup-db
    Installation flow

    Why this matters for your clone

    You are standing up a dev clone so stakeholders can click through branding, auth, and core marketplace flows before production hosting.

    Prerequisites

    Node 20+, Git, Postgres, ports — confirm before cloning

    Database migrations

    Apply data/schema.sql and kingdom migration order

    Database backend selection

    k8s-postgres-fcm vs supabase-fcm vs firebase-full

    First success validation

    Recommended path — install.sh

    install.sh v2.2.0 scaffolds env, optional ring-config.json, secrets, and dependencies. Prefer this for a clean first clone.

    Prerequisites

    • Node.js 20+ (installer fails earlier majors)
    • Git, and later PostgreSQL 14+ (16 Docker / 18 Homebrew recommended)
    • From OSS checkout: repo root or web/ (Final-Split)

    Steps

    Frequently asked questions

    Impact

    Will my clone work without Firebase?

    Yes for browse + Auth.js + Postgres CRUD when DB_BACKEND_MODE=k8s-postgres-fcm. Firebase Admin/client keys are needed for FCM push, not for the first homepage load.

    Do I need payments credentials on day one?

    No. WayForPay / Stripe belong later — after First success, before checkout demos.

    Migration

    Schema only or full kingdom migrations?

    Fresh installs: apply data/schema.sql, then news/payment/email increments as documented on Migrations. Do not apply obsolete 001_email_crm_schema.sql.

    Ringdom monorepo vs standalone Docker?

    Same app DB name (ring_platform) and DB_* contract. Monorepo compose uses volume ringdom_postgres_data and init scripts under infrastructure/postgres/init/.

    Ops

    Port 3000 already in use?

    lsof -ti:3000 | xargs kill or PORT=3001 npm run dev.

    Google sign-in fails?

    Check AUTH_GOOGLE_*, redirect URI http://localhost:3000/api/auth/callback/google, and non-empty AUTH_SECRET.

    Tunnel errors in the console?

    Confirm RING_DEPLOY_TARGET=self-hosted (and public twin) for local WSS. On Vercel use vercel / SSE-only.

    More: Troubleshooting.

    Related documentation

    Related documentation

    Prerequisites

    Prerequisite: confirm Node, Postgres, and ports before you clone.

    Database migrations

    Next-step: apply data/schema.sql and kingdom migration order after env scaffold.

    First Success Validation

    Next-step: smoke-test health, auth, and CRUD once npm run dev is up.

    Database Backend Selection

    Deep-dive: choose k8s-postgres-fcm, supabase-fcm, or firebase-full.

    1. Docs
    2. /Getting Started
    3. /Installation

    Updated Aug 12, 20266 min listen

    Installation

    Use Founder / Developer tabs in the docs sidebar to filter this page. Complete Prerequisites first. This guide matches the open-source repo (connectplatform/ring) and the PostgreSQL-primary default (DB_BACKEND_MODE=k8s-postgres-fcm).

    Install Ring on your machine for local development. Final-Split: the Next.js app lives under web/ — the repo-root install.sh delegates into web/, or you can run ./install.sh from ring/web directly.

    PathBest whenOutcome
    Recommended — install.shFirst clone, white-label scaffoldCopies env.local.template → .env.local, seeds ring-config.json if missing, generates AUTH_SECRET, runs npm install
    ManualYou already manage env/configSame files by hand; you own every copy and secret
    Time budget

    Full Postgres-primary install (first time): about 45–90 minutes. ./install.sh --quick plus an existing PostgreSQL instance is usually faster — you still apply schema and one OAuth provider before a useful sign-in.

    What you are installing

    ComponentVerified entry
    FrameworkNext.js 16 App Router + React 19
    AuthAuth.js v5 (auth.ts, AUTH_SECRET, OAuth providers)
    Default data planePostgreSQL via DB_BACKEND_MODE=k8s-postgres-fcm (mandatory env — no silent default)
    Dev serverCustom server.ts — Next.js + native WebSocket tunnel (/api/tunnel/ws) when self-hosted
    White-label configring-config.json (Layer1 may already ship community defaults; installer seeds from template only if missing)
    Installerinstall.sh v2.2.0 (SCRIPT_VERSION) — includes setup-db
    Installation flow

    Why this matters for your clone

    You are standing up a dev clone so stakeholders can click through branding, auth, and core marketplace flows before production hosting.

    Prerequisites

    Node 20+, Git, Postgres, ports — confirm before cloning

    Database migrations

    Apply data/schema.sql and kingdom migration order

    Database backend selection

    k8s-postgres-fcm vs supabase-fcm vs firebase-full

    First success validation

    Recommended path — install.sh

    install.sh v2.2.0 scaffolds env, optional ring-config.json, secrets, and dependencies. Prefer this for a clean first clone.

    Prerequisites

    • Node.js 20+ (installer fails earlier majors)
    • Git, and later PostgreSQL 14+ (16 Docker / 18 Homebrew recommended)
    • From OSS checkout: repo root or web/ (Final-Split)

    Steps

    Frequently asked questions

    Impact

    Will my clone work without Firebase?

    Yes for browse + Auth.js + Postgres CRUD when DB_BACKEND_MODE=k8s-postgres-fcm. Firebase Admin/client keys are needed for FCM push, not for the first homepage load.

    Do I need payments credentials on day one?

    No. WayForPay / Stripe belong later — after First success, before checkout demos.

    Migration

    Schema only or full kingdom migrations?

    Fresh installs: apply data/schema.sql, then news/payment/email increments as documented on Migrations. Do not apply obsolete 001_email_crm_schema.sql.

    Ringdom monorepo vs standalone Docker?

    Same app DB name (ring_platform) and DB_* contract. Monorepo compose uses volume ringdom_postgres_data and init scripts under infrastructure/postgres/init/.

    Ops

    Port 3000 already in use?

    lsof -ti:3000 | xargs kill or PORT=3001 npm run dev.

    Google sign-in fails?

    Check AUTH_GOOGLE_*, redirect URI http://localhost:3000/api/auth/callback/google, and non-empty AUTH_SECRET.

    Tunnel errors in the console?

    Confirm RING_DEPLOY_TARGET=self-hosted (and public twin) for local WSS. On Vercel use vercel / SSE-only.

    More: Troubleshooting.

    Related documentation

    Related documentation

    Prerequisites

    Prerequisite: confirm Node, Postgres, and ports before you clone.

    Database migrations

    Next-step: apply data/schema.sql and kingdom migration order after env scaffold.

    First Success Validation

    Next-step: smoke-test health, auth, and CRUD once npm run dev is up.

    Database Backend Selection

    Deep-dive: choose k8s-postgres-fcm, supabase-fcm, or firebase-full.

    1. Docs
    2. /Getting Started
    3. /Installation

    Updated Aug 12, 20266 min listen

    Smoke-test checklist after npm run dev

    Typical scenarios

    ScenarioInstall choiceStop when…
    Explore UI / branding./install.sh --quick + Postgres (or short firebase-full prototype)Homepage loads without adapter errors
    Production-parity localPostgres-primary + migrationsAuth + one CRUD path pass First success
    Ringdom-managed settlerSkip most of thisCluster is already provisioned — customize via ring-config / ops, not local Docker

    Payments, FCM push, and Web3 wallets are not required for first boot. Add them before checkout or production push — see Environment.

    1. 1

      Clone and run the installer

      Useful flags and modes:

      Flag / modeEffect
      --quickNon-interactive defaults
      --clone-name NAMEWhite-label slug in ring-config.json
      dev / prodExplicit setup mode
      setup-dbCreate DB + apply data/schema.sql (flattened SSOT)
      --helpFull option list
    2. 2

      Finish required .env.local values

      The template is copied automatically; installer generates AUTH_SECRET when openssl is available. Before first useful boot, set database vars and at least one OAuth provider (see Configure environment).

    3. 3

      Apply PostgreSQL schema

      Use Docker / existing server / Ringdom monorepo tabs below, or:

      Full incremental order: Database migrations.

    Manual path

    Use when you already control env files or package manager.

    1. 1

      Clone and install dependencies

    2. 2

      Create environment and clone config

      Edit ring-config.json — clone.displayName, domains.development, and features for your white-label instance. Layer1 often already commits community ring-config.json; do not overwrite casually.

    PostgreSQL setup

    Production-style local dev uses database ring_platform with user ring_user. App schema SSOT: data/schema.sql (v4 family — see schema_versions rows in the dump).

    Required for k8s-postgres-fcm

    DB_BACKEND_MODE is mandatory (lib/database/backend-mode-config.ts). The platform expects PostgreSQL when set to k8s-postgres-fcm (template default). See Database migrations for apply order.

    Standalone clone — no Ringdom monorepo required:

    Apply base schema, then kingdom increments (abbreviated — full matrix on the migrations page):

    Do not apply 001

    001_email_crm_schema.sql is obsolete. Prefer 009 + 010 JSONB. Idempotent increments already merged into schema.sql are covered in Migrations.

    Configure environment

    Set these in .env.local (from env.local.template). Values shown are local-dev oriented — the template’s NEXT_PUBLIC_BASE_URL may default to the public portal; override for localhost.

    Backend mode and database

    Recommended

    Application data on PostgreSQL; Firebase Admin used only for FCM push when configured. Matches ring-platform.org production posture.

    Auth.js and URLs

    OAuth redirect URI

    In Google Cloud Console, add authorized redirect URI: http://localhost:3000/api/auth/callback/google

    Tunnel, FCM, locales

    npm run dev runs node --import tsx server.ts. On Vercel, set RING_DEPLOY_TARGET=vercel for SSE-only (no native WSS).

    FCM keys (AUTH_FIREBASE_*, NEXT_PUBLIC_FIREBASE_*) are in env.local.template — optional for Postgres-primary homepage/auth. Quote AUTH_FIREBASE_PRIVATE_KEY with literal \\n; never commit .env.local.

    Run the development server

    1. 1

      Start the app

      Expect log lines similar to:

      text
      
      > Ready on http://localhost:3000 [self-hosted]
      [server] Native WSS attached at /api/tunnel/ws (RING_DEPLOY_TARGET=self-hosted)

      First compile can take tens of seconds.

    2. 2

      Open and smoke-check

      Visit http://localhost:3000 — home renders via HomeWrapper (components/wrappers/home-wrapper.tsx) and locale files under locales/{en,uk,ru}/.

      Optional:

      Health shape: app/api/health/route.ts — status is healthy | degraded | unhealthy. Missing AUTH_SECRET → degraded and HTTP 503.

    Installation complete

    If the homepage loads without database adapter errors, continue to First success validation.

    Module map (verified paths)

    ConcernPath
    Installerinstall.sh (root launcher → web/install.sh)
    Env templateenv.local.template
    Backend modelib/database/backend-mode-config.ts
    Schema SSOTdata/schema.sql
    Dev entrypackage.json → server.ts
    Tunnel WSSserver.ts → /api/tunnel/ws
    Healthapp/api/health/route.ts

    Local Setup

    Same-workflow: project structure and day-to-day local tools after install.

    Smoke-test checklist after npm run dev

    Typical scenarios

    ScenarioInstall choiceStop when…
    Explore UI / branding./install.sh --quick + Postgres (or short firebase-full prototype)Homepage loads without adapter errors
    Production-parity localPostgres-primary + migrationsAuth + one CRUD path pass First success
    Ringdom-managed settlerSkip most of thisCluster is already provisioned — customize via ring-config / ops, not local Docker

    Payments, FCM push, and Web3 wallets are not required for first boot. Add them before checkout or production push — see Environment.

    1. 1

      Clone and run the installer

      Useful flags and modes:

      Flag / modeEffect
      --quickNon-interactive defaults
      --clone-name NAMEWhite-label slug in ring-config.json
      dev / prodExplicit setup mode
      setup-dbCreate DB + apply data/schema.sql (flattened SSOT)
      --helpFull option list
    2. 2

      Finish required .env.local values

      The template is copied automatically; installer generates AUTH_SECRET when openssl is available. Before first useful boot, set database vars and at least one OAuth provider (see Configure environment).

    3. 3

      Apply PostgreSQL schema

      Use Docker / existing server / Ringdom monorepo tabs below, or:

      Full incremental order: Database migrations.

    Manual path

    Use when you already control env files or package manager.

    1. 1

      Clone and install dependencies

    2. 2

      Create environment and clone config

      Edit ring-config.json — clone.displayName, domains.development, and features for your white-label instance. Layer1 often already commits community ring-config.json; do not overwrite casually.

    PostgreSQL setup

    Production-style local dev uses database ring_platform with user ring_user. App schema SSOT: data/schema.sql (v4 family — see schema_versions rows in the dump).

    Required for k8s-postgres-fcm

    DB_BACKEND_MODE is mandatory (lib/database/backend-mode-config.ts). The platform expects PostgreSQL when set to k8s-postgres-fcm (template default). See Database migrations for apply order.

    Standalone clone — no Ringdom monorepo required:

    Apply base schema, then kingdom increments (abbreviated — full matrix on the migrations page):

    Do not apply 001

    001_email_crm_schema.sql is obsolete. Prefer 009 + 010 JSONB. Idempotent increments already merged into schema.sql are covered in Migrations.

    Configure environment

    Set these in .env.local (from env.local.template). Values shown are local-dev oriented — the template’s NEXT_PUBLIC_BASE_URL may default to the public portal; override for localhost.

    Backend mode and database

    Recommended

    Application data on PostgreSQL; Firebase Admin used only for FCM push when configured. Matches ring-platform.org production posture.

    Auth.js and URLs

    OAuth redirect URI

    In Google Cloud Console, add authorized redirect URI: http://localhost:3000/api/auth/callback/google

    Tunnel, FCM, locales

    npm run dev runs node --import tsx server.ts. On Vercel, set RING_DEPLOY_TARGET=vercel for SSE-only (no native WSS).

    FCM keys (AUTH_FIREBASE_*, NEXT_PUBLIC_FIREBASE_*) are in env.local.template — optional for Postgres-primary homepage/auth. Quote AUTH_FIREBASE_PRIVATE_KEY with literal \\n; never commit .env.local.

    Run the development server

    1. 1

      Start the app

      Expect log lines similar to:

      text
      
      > Ready on http://localhost:3000 [self-hosted]
      [server] Native WSS attached at /api/tunnel/ws (RING_DEPLOY_TARGET=self-hosted)

      First compile can take tens of seconds.

    2. 2

      Open and smoke-check

      Visit http://localhost:3000 — home renders via HomeWrapper (components/wrappers/home-wrapper.tsx) and locale files under locales/{en,uk,ru}/.

      Optional:

      Health shape: app/api/health/route.ts — status is healthy | degraded | unhealthy. Missing AUTH_SECRET → degraded and HTTP 503.

    Installation complete

    If the homepage loads without database adapter errors, continue to First success validation.

    Module map (verified paths)

    ConcernPath
    Installerinstall.sh (root launcher → web/install.sh)
    Env templateenv.local.template
    Backend modelib/database/backend-mode-config.ts
    Schema SSOTdata/schema.sql
    Dev entrypackage.json → server.ts
    Tunnel WSSserver.ts → /api/tunnel/ws
    Healthapp/api/health/route.ts

    Local Setup

    Same-workflow: project structure and day-to-day local tools after install.

    Smoke-test checklist after npm run dev

    Typical scenarios

    ScenarioInstall choiceStop when…
    Explore UI / branding./install.sh --quick + Postgres (or short firebase-full prototype)Homepage loads without adapter errors
    Production-parity localPostgres-primary + migrationsAuth + one CRUD path pass First success
    Ringdom-managed settlerSkip most of thisCluster is already provisioned — customize via ring-config / ops, not local Docker

    Payments, FCM push, and Web3 wallets are not required for first boot. Add them before checkout or production push — see Environment.

    1. 1

      Clone and run the installer

      Useful flags and modes:

      Flag / modeEffect
      --quickNon-interactive defaults
      --clone-name NAMEWhite-label slug in ring-config.json
      dev / prodExplicit setup mode
      setup-dbCreate DB + apply data/schema.sql (flattened SSOT)
      --helpFull option list
    2. 2

      Finish required .env.local values

      The template is copied automatically; installer generates AUTH_SECRET when openssl is available. Before first useful boot, set database vars and at least one OAuth provider (see Configure environment).

    3. 3

      Apply PostgreSQL schema

      Use Docker / existing server / Ringdom monorepo tabs below, or:

      Full incremental order: Database migrations.

    Manual path

    Use when you already control env files or package manager.

    1. 1

      Clone and install dependencies

    2. 2

      Create environment and clone config

      Edit ring-config.json — clone.displayName, domains.development, and features for your white-label instance. Layer1 often already commits community ring-config.json; do not overwrite casually.

    PostgreSQL setup

    Production-style local dev uses database ring_platform with user ring_user. App schema SSOT: data/schema.sql (v4 family — see schema_versions rows in the dump).

    Required for k8s-postgres-fcm

    DB_BACKEND_MODE is mandatory (lib/database/backend-mode-config.ts). The platform expects PostgreSQL when set to k8s-postgres-fcm (template default). See Database migrations for apply order.

    Standalone clone — no Ringdom monorepo required:

    Apply base schema, then kingdom increments (abbreviated — full matrix on the migrations page):

    Do not apply 001

    001_email_crm_schema.sql is obsolete. Prefer 009 + 010 JSONB. Idempotent increments already merged into schema.sql are covered in Migrations.

    Configure environment

    Set these in .env.local (from env.local.template). Values shown are local-dev oriented — the template’s NEXT_PUBLIC_BASE_URL may default to the public portal; override for localhost.

    Backend mode and database

    Recommended

    Application data on PostgreSQL; Firebase Admin used only for FCM push when configured. Matches ring-platform.org production posture.

    Auth.js and URLs

    OAuth redirect URI

    In Google Cloud Console, add authorized redirect URI: http://localhost:3000/api/auth/callback/google

    Tunnel, FCM, locales

    npm run dev runs node --import tsx server.ts. On Vercel, set RING_DEPLOY_TARGET=vercel for SSE-only (no native WSS).

    FCM keys (AUTH_FIREBASE_*, NEXT_PUBLIC_FIREBASE_*) are in env.local.template — optional for Postgres-primary homepage/auth. Quote AUTH_FIREBASE_PRIVATE_KEY with literal \\n; never commit .env.local.

    Run the development server

    1. 1

      Start the app

      Expect log lines similar to:

      text
      
      > Ready on http://localhost:3000 [self-hosted]
      [server] Native WSS attached at /api/tunnel/ws (RING_DEPLOY_TARGET=self-hosted)

      First compile can take tens of seconds.

    2. 2

      Open and smoke-check

      Visit http://localhost:3000 — home renders via HomeWrapper (components/wrappers/home-wrapper.tsx) and locale files under locales/{en,uk,ru}/.

      Optional:

      Health shape: app/api/health/route.ts — status is healthy | degraded | unhealthy. Missing AUTH_SECRET → degraded and HTTP 503.

    Installation complete

    If the homepage loads without database adapter errors, continue to First success validation.

    Module map (verified paths)

    ConcernPath
    Installerinstall.sh (root launcher → web/install.sh)
    Env templateenv.local.template
    Backend modelib/database/backend-mode-config.ts
    Schema SSOTdata/schema.sql
    Dev entrypackage.json → server.ts
    Tunnel WSSserver.ts → /api/tunnel/ws
    Healthapp/api/health/route.ts

    Local Setup

    Same-workflow: project structure and day-to-day local tools after install.