Documentation

    Documentation

    Documentation

    Ring Platform Logo

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

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

    Ring Platform Logo

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

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

    Ring Platform Logo

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

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

    1. /
    2. /Whitelabel Navigation

    Updated Dec 17, 20252 min listen

    1. /
    2. /Whitelabel Navigation

    Updated Dec 17, 20252 min listen

    1. /
    2. /Whitelabel Navigation

    Updated Dec 17, 20252 min listen

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

    Welcome to Ring
    Quick Reference
    Getting Started
    Prerequisites
    Installation
    Database migrations
    First Success Validation
    Troubleshooting
    Next Steps
    Architecture
    Backend modes and databases
    Data Model
    Authentication Architecture
    Email AI-CRM architecture
    PaymentConductor architecture
    Refcodes architecture
    News Kingdom architecture
    Proxy and internationalization
    Real Time
    Discovery Mutation Sync
    Security
    Features
    Doc System
    Authentication
    Email AI-CRM
    Entities
    Opportunities
    Notifications
    Push Notifications with FCM (Ring-Powered)
    Tunnel Protocol
    Web3 Wallet
    Multi-Vendor Store
    Inventory & Stock
    Vendor Management
    Commissions & Settlements
    Referral Codes (Refcodes)
    Affiliate & Referral Enablement
    Payment Integration
    PaymentConductor
    VideoConductor
    WayForPay Payment Integration
    News Module - Digital Newspaper Experience
    Member Blogs
    Scientific Editor
    Locale System
    Security & Compliance
    NFT Marketplace
    Token Staking System
    Performance Optimization Patterns
    Mobile Experience
    Wallet
    Wallet Security Tips
    API
    Authentication
    Email AI-CRM API
    Entities
    Opportunities
    Messaging API
    Notifications API
    Wallet API
    Store API
    Admin API
    CLI
    Customization
    Quick Start — Your First Ring Clone
    Customization Guide
    Database Backend Selection
    Token Economics Setup
    Payment Gateway Integration
    AI Agent Customization
    Reference Ring deployments
    Branding
    Features
    Localization
    Themes
    Components
    Web3
    Token launch jurisdictions
    Deployment
    Self-hosted deployment
    Vercel
    Docker
    Environment Configuration
    Monitoring & Analytics
    Performance Optimization
    Backup & Recovery
    Development
    Local Setup
    Code Structure
    Documentation components
    Community tooling
    Ring MCP Server
    Generative Images (ImageConductor)
    Autonomous Newsroom (Grok)
    OSS vs enterprise
    Whitelabel Navigation
    Best Practices
    Workflow
    Code Style
    Performance
    Testing
    Deployment
    Debugging
    Contributing
    MCP
    ring-image-create
    ring-video-create
    Roadmap
    Examples
    Quick Start
    Authentication
    Email AI-CRM developer guide
    API Integration Examples
    Web3 Integration
    White Label
    Real World
    API Examples (cURL)
    Integrations
    Ethereum wallets (Wagmi v3)

    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)

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

    Welcome to Ring
    Quick Reference
    Getting Started
    Prerequisites
    Installation
    Database migrations
    First Success Validation
    Troubleshooting
    Next Steps
    Architecture
    Backend modes and databases
    Data Model
    Authentication Architecture
    Email AI-CRM architecture
    PaymentConductor architecture
    Refcodes architecture
    News Kingdom architecture
    Proxy and internationalization
    Real Time
    Discovery Mutation Sync
    Security
    Features
    Doc System
    Authentication
    Email AI-CRM
    Entities
    Opportunities
    Notifications
    Push Notifications with FCM (Ring-Powered)
    Tunnel Protocol
    Web3 Wallet
    Multi-Vendor Store
    Inventory & Stock
    Vendor Management
    Commissions & Settlements
    Referral Codes (Refcodes)
    Affiliate & Referral Enablement
    Payment Integration
    PaymentConductor
    VideoConductor
    WayForPay Payment Integration
    News Module - Digital Newspaper Experience
    Member Blogs
    Scientific Editor
    Locale System
    Security & Compliance
    NFT Marketplace
    Token Staking System
    Performance Optimization Patterns
    Mobile Experience
    Wallet
    Wallet Security Tips
    API
    Authentication
    Email AI-CRM API
    Entities
    Opportunities
    Messaging API
    Notifications API
    Wallet API
    Store API
    Admin API
    CLI
    Customization
    Quick Start — Your First Ring Clone
    Customization Guide
    Database Backend Selection
    Token Economics Setup
    Payment Gateway Integration
    AI Agent Customization
    Reference Ring deployments
    Branding
    Features
    Localization
    Themes
    Components
    Web3
    Token launch jurisdictions
    Deployment
    Self-hosted deployment
    Vercel
    Docker
    Environment Configuration
    Monitoring & Analytics
    Performance Optimization
    Backup & Recovery
    Development
    Local Setup
    Code Structure
    Documentation components
    Community tooling
    Ring MCP Server
    Generative Images (ImageConductor)
    Autonomous Newsroom (Grok)
    OSS vs enterprise
    Whitelabel Navigation
    Best Practices
    Workflow
    Code Style
    Performance
    Testing
    Deployment
    Debugging
    Contributing
    MCP
    ring-image-create
    ring-video-create
    Roadmap
    Examples
    Quick Start
    Authentication
    Email AI-CRM developer guide
    API Integration Examples
    Web3 Integration
    White Label
    Real World
    API Examples (cURL)
    Integrations
    Ethereum wallets (Wagmi v3)

    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)

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

    Welcome to Ring
    Quick Reference
    Getting Started
    Prerequisites
    Installation
    Database migrations
    First Success Validation
    Troubleshooting
    Next Steps
    Architecture
    Backend modes and databases
    Data Model
    Authentication Architecture
    Email AI-CRM architecture
    PaymentConductor architecture
    Refcodes architecture
    News Kingdom architecture
    Proxy and internationalization
    Real Time
    Discovery Mutation Sync
    Security
    Features
    Doc System
    Authentication
    Email AI-CRM
    Entities
    Opportunities
    Notifications
    Push Notifications with FCM (Ring-Powered)
    Tunnel Protocol
    Web3 Wallet
    Multi-Vendor Store
    Inventory & Stock
    Vendor Management
    Commissions & Settlements
    Referral Codes (Refcodes)
    Affiliate & Referral Enablement
    Payment Integration
    PaymentConductor
    VideoConductor
    WayForPay Payment Integration
    News Module - Digital Newspaper Experience
    Member Blogs
    Scientific Editor
    Locale System
    Security & Compliance
    NFT Marketplace
    Token Staking System
    Performance Optimization Patterns
    Mobile Experience
    Wallet
    Wallet Security Tips
    API
    Authentication
    Email AI-CRM API
    Entities
    Opportunities
    Messaging API
    Notifications API
    Wallet API
    Store API
    Admin API
    CLI
    Customization
    Quick Start — Your First Ring Clone
    Customization Guide
    Database Backend Selection
    Token Economics Setup
    Payment Gateway Integration
    AI Agent Customization
    Reference Ring deployments
    Branding
    Features
    Localization
    Themes
    Components
    Web3
    Token launch jurisdictions
    Deployment
    Self-hosted deployment
    Vercel
    Docker
    Environment Configuration
    Monitoring & Analytics
    Performance Optimization
    Backup & Recovery
    Development
    Local Setup
    Code Structure
    Documentation components
    Community tooling
    Ring MCP Server
    Generative Images (ImageConductor)
    Autonomous Newsroom (Grok)
    OSS vs enterprise
    Whitelabel Navigation
    Best Practices
    Workflow
    Code Style
    Performance
    Testing
    Deployment
    Debugging
    Contributing
    MCP
    ring-image-create
    ring-video-create
    Roadmap
    Examples
    Quick Start
    Authentication
    Email AI-CRM developer guide
    API Integration Examples
    Web3 Integration
    White Label
    Real World
    API Examples (cURL)
    Integrations
    Ethereum wallets (Wagmi v3)

    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)
    Docs
    Development
    Docs
    Development
    Docs
    Development

    Whitelabel Navigation System

    Time Estimate: 30 minutes | Difficulty: Intermediate | Prerequisites: Understanding of React components and Ring Platform structure

    Ring Platform uses a clean whitelabel navigation architecture that automatically selects the correct navigation variant based on project configuration. This guide explains how to create custom navigation components for your Ring clone.

    Architecture Overview

    Navigation Component Flow

    The system separates the public API (DesktopNavigation) from variant implementations (project-specific navigation components). Wrapper components always import the public API, never the variants directly.

    File Structure

    text
    
    components/navigation/
    ├── desktop-navigation.tsx    ← PUBLIC API (import this everywhere)
    ├── desktop-sidebar.tsx       ← Default Ring Platform variant
    ├── vikka-desktop-navigation.tsx  ← VIKKA News variant
    ├── navigation.tsx            ← Orchestrator component
    └── bottom-navigation.tsx     ← Mobile navigation
    
    config/
    └── navigation.config.ts      ← Client-safe configuration

    Important: Never import desktop-sidebar.tsx or project-specific navigation directly. Always use DesktopNavigation from desktop-navigation.tsx.

    Configuration

    Navigation Config File

    Create or edit config/navigation.config.ts:

    Instance Config (Optional)

    For full whitelabel configuration, create whitelabel/instance.config.json:

    Creating a Custom Navigation Variant

    1. 1

      Create your navigation component:

      Create a new file in components/navigation/ with your project name:

    2. 2

      Register your variant in desktop-navigation.tsx:

    3. 3

      Update the type definition:

      Add your variant to the type in config/navigation.config.ts:

    4. 4

      Activate your variant:

      Set your project's navigation in the config:

    Using Navigation in Wrapper Components

    All page wrapper components should import DesktopNavigation:

    Mobile Navigation

    Mobile navigation is handled separately by bottom-navigation.tsx. The same whitelabel pattern can be applied:

    The mobile BottomNavigation component includes a fullscreen menu modal with conditional Admin section (visible only for admin/superadmin roles).

    Best Practices

    ✅ Do

    • Always import from @/components/navigation/desktop-navigation
    • Keep navigation config in config/navigation.config.ts
    • Use dynamic() imports for navigation variants (code splitting)
    • Include all localization support in your variant
    • Support light/dark themes

    ❌ Don't

    • Never import desktop-sidebar.tsx directly in wrappers
    • Don't hardcode locale paths - use useLocale() hook
    • Don't skip theme support - Ring supports dark mode
    • Don't forget mobile navigation consideration

    Migrating Existing Code

    If your codebase has direct desktop-sidebar imports:

    Example: VIKKA News Navigation

    VIKKA (ring-vikka-ua) uses a custom navigation optimized for news portals:

    VIKKA Navigation Features

    Next Steps

    Your navigation system is now whitelabel-ready! Explore more customization options:

    • Complete Customization Guide - Full branding and feature customization
    • Code Structure - Understanding Ring's architecture
    • Best Practices - Coding standards

    Legiox Commander Tip: The whitelabel navigation system was designed to keep the codebase clean and project customizations separate. When in doubt, remember: components import the public API, never the variants directly.

    Whitelabel Navigation System

    Time Estimate: 30 minutes | Difficulty: Intermediate | Prerequisites: Understanding of React components and Ring Platform structure

    Ring Platform uses a clean whitelabel navigation architecture that automatically selects the correct navigation variant based on project configuration. This guide explains how to create custom navigation components for your Ring clone.

    Architecture Overview

    Navigation Component Flow

    The system separates the public API (DesktopNavigation) from variant implementations (project-specific navigation components). Wrapper components always import the public API, never the variants directly.

    File Structure

    text
    
    components/navigation/
    ├── desktop-navigation.tsx    ← PUBLIC API (import this everywhere)
    ├── desktop-sidebar.tsx       ← Default Ring Platform variant
    ├── vikka-desktop-navigation.tsx  ← VIKKA News variant
    ├── navigation.tsx            ← Orchestrator component
    └── bottom-navigation.tsx     ← Mobile navigation
    
    config/
    └── navigation.config.ts      ← Client-safe configuration

    Important: Never import desktop-sidebar.tsx or project-specific navigation directly. Always use DesktopNavigation from desktop-navigation.tsx.

    Configuration

    Navigation Config File

    Create or edit config/navigation.config.ts:

    Instance Config (Optional)

    For full whitelabel configuration, create whitelabel/instance.config.json:

    Creating a Custom Navigation Variant

    1. 1

      Create your navigation component:

      Create a new file in components/navigation/ with your project name:

    2. 2

      Register your variant in desktop-navigation.tsx:

    3. 3

      Update the type definition:

      Add your variant to the type in config/navigation.config.ts:

    4. 4

      Activate your variant:

      Set your project's navigation in the config:

    Using Navigation in Wrapper Components

    All page wrapper components should import DesktopNavigation:

    Mobile Navigation

    Mobile navigation is handled separately by bottom-navigation.tsx. The same whitelabel pattern can be applied:

    The mobile BottomNavigation component includes a fullscreen menu modal with conditional Admin section (visible only for admin/superadmin roles).

    Best Practices

    ✅ Do

    • Always import from @/components/navigation/desktop-navigation
    • Keep navigation config in config/navigation.config.ts
    • Use dynamic() imports for navigation variants (code splitting)
    • Include all localization support in your variant
    • Support light/dark themes

    ❌ Don't

    • Never import desktop-sidebar.tsx directly in wrappers
    • Don't hardcode locale paths - use useLocale() hook
    • Don't skip theme support - Ring supports dark mode
    • Don't forget mobile navigation consideration

    Migrating Existing Code

    If your codebase has direct desktop-sidebar imports:

    Example: VIKKA News Navigation

    VIKKA (ring-vikka-ua) uses a custom navigation optimized for news portals:

    VIKKA Navigation Features

    Next Steps

    Your navigation system is now whitelabel-ready! Explore more customization options:

    • Complete Customization Guide - Full branding and feature customization
    • Code Structure - Understanding Ring's architecture
    • Best Practices - Coding standards

    Legiox Commander Tip: The whitelabel navigation system was designed to keep the codebase clean and project customizations separate. When in doubt, remember: components import the public API, never the variants directly.

    Whitelabel Navigation System

    Time Estimate: 30 minutes | Difficulty: Intermediate | Prerequisites: Understanding of React components and Ring Platform structure

    Ring Platform uses a clean whitelabel navigation architecture that automatically selects the correct navigation variant based on project configuration. This guide explains how to create custom navigation components for your Ring clone.

    Architecture Overview

    Navigation Component Flow

    The system separates the public API (DesktopNavigation) from variant implementations (project-specific navigation components). Wrapper components always import the public API, never the variants directly.

    File Structure

    text
    
    components/navigation/
    ├── desktop-navigation.tsx    ← PUBLIC API (import this everywhere)
    ├── desktop-sidebar.tsx       ← Default Ring Platform variant
    ├── vikka-desktop-navigation.tsx  ← VIKKA News variant
    ├── navigation.tsx            ← Orchestrator component
    └── bottom-navigation.tsx     ← Mobile navigation
    
    config/
    └── navigation.config.ts      ← Client-safe configuration

    Important: Never import desktop-sidebar.tsx or project-specific navigation directly. Always use DesktopNavigation from desktop-navigation.tsx.

    Configuration

    Navigation Config File

    Create or edit config/navigation.config.ts:

    Instance Config (Optional)

    For full whitelabel configuration, create whitelabel/instance.config.json:

    Creating a Custom Navigation Variant

    1. 1

      Create your navigation component:

      Create a new file in components/navigation/ with your project name:

    2. 2

      Register your variant in desktop-navigation.tsx:

    3. 3

      Update the type definition:

      Add your variant to the type in config/navigation.config.ts:

    4. 4

      Activate your variant:

      Set your project's navigation in the config:

    Using Navigation in Wrapper Components

    All page wrapper components should import DesktopNavigation:

    Mobile Navigation

    Mobile navigation is handled separately by bottom-navigation.tsx. The same whitelabel pattern can be applied:

    The mobile BottomNavigation component includes a fullscreen menu modal with conditional Admin section (visible only for admin/superadmin roles).

    Best Practices

    ✅ Do

    • Always import from @/components/navigation/desktop-navigation
    • Keep navigation config in config/navigation.config.ts
    • Use dynamic() imports for navigation variants (code splitting)
    • Include all localization support in your variant
    • Support light/dark themes

    ❌ Don't

    • Never import desktop-sidebar.tsx directly in wrappers
    • Don't hardcode locale paths - use useLocale() hook
    • Don't skip theme support - Ring supports dark mode
    • Don't forget mobile navigation consideration

    Migrating Existing Code

    If your codebase has direct desktop-sidebar imports:

    Example: VIKKA News Navigation

    VIKKA (ring-vikka-ua) uses a custom navigation optimized for news portals:

    VIKKA Navigation Features

    Next Steps

    Your navigation system is now whitelabel-ready! Explore more customization options:

    • Complete Customization Guide - Full branding and feature customization
    • Code Structure - Understanding Ring's architecture
    • Best Practices - Coding standards

    Legiox Commander Tip: The whitelabel navigation system was designed to keep the codebase clean and project customizations separate. When in doubt, remember: components import the public API, never the variants directly.