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 Platform Logo

    Loading documentation...

    Preparing Ring Platform content

    Ring Platform Logo

    Loading documentation...

    Preparing Ring Platform content

    Ring Platform Logo

    Loading documentation...

    Preparing Ring Platform content

    Admin console

    Use Founder / Developer tabs in the docs sidebar to filter this page. HTTP handlers for the same desks live in Admin API.

    Ring’s Admin console (/admin/*) is a three-pane operator surface: left menus for section hubs, center for work, right rail for in-module submenus and related hubs. Navigation is role-filtered from one SSOT — platform admins (admin | superadmin) see community, trust, commerce, and CRM hubs; superadmin also sees Platform ops (settings, processes, performance, subscriptions, Web3).

    SurfaceWhat it showsSource
    Icon railSingle Admin entry → /adminsidebar-rail.tsx + isPlatformAdmin
    Desktop asideGrouped hubs (Overview → … → Platform)useAdminNavMenu ← admin-nav-config.ts
    Mobile bottom sheetSame filtered hubsbottom-navigation.tsx
    Right railSubmenu → related hubs → optional news stats → helpAdminWrapper → admin-rail.tsx
    Dashboard tilesSame hubs (minus Dashboard itself)admin-dashboard-tiles.ts
    CRM shellFull-width center + horizontal tabs (no right rail)CrmAdminShell

    Why this matters for your clone

    Operators should not hunt three different menus. One config drives desktop, mobile, dashboard tiles, and the right rail — so promoting someone to admin or superadmin changes what they can open consistently.

    Trust & safety hub

    Security center folds fraud desk and verification into /admin/security?tab=….

    Email AI-CRM

    Inbox, drafts, contacts, analytics, and tasks under /admin/crm/* with CrmAdminShell tabs.

    Owner Project Lab

    CRM orders desk, shared Project room, buyer My Projects.

    Architecture

    Admin nav SSOT → three surfaces

    Module map (verified)

    ConcernPath
    Nav groups, pageContext, rail submenus, related hubsfeatures/admin/admin-nav-config.ts
    Labels builderfeatures/admin/admin-labels.ts
    Iconsfeatures/admin/admin-nav-icons.tsx
    Aside + mobile hookfeatures/admin/use-admin-nav-menu.ts
    Dashboard tilesfeatures/admin/admin-dashboard-tiles.ts
    Right rail UIcomponents/layout/rails/admin-rail.tsx

    Related documentation

    Related documentation

    Admin API

    Deep-dive: verified `/api/admin/*` routes and access tiers for console work.

    Security

    Depends-on: RBAC layers and confidential tiers that gate AdminWrapper.

    Email AI-CRM

    Same-workflow: CRM admin UI under `/admin/crm/*` shares the operator desk model.

    Admin Wiki

    Next-step: store compounding project knowledge in the Admin Wiki vault beside News.

    Admin console

    Use Founder / Developer tabs in the docs sidebar to filter this page. HTTP handlers for the same desks live in Admin API.

    Ring’s Admin console (/admin/*) is a three-pane operator surface: left menus for section hubs, center for work, right rail for in-module submenus and related hubs. Navigation is role-filtered from one SSOT — platform admins (admin | superadmin) see community, trust, commerce, and CRM hubs; superadmin also sees Platform ops (settings, processes, performance, subscriptions, Web3).

    SurfaceWhat it showsSource
    Icon railSingle Admin entry → /adminsidebar-rail.tsx + isPlatformAdmin
    Desktop asideGrouped hubs (Overview → … → Platform)useAdminNavMenu ← admin-nav-config.ts
    Mobile bottom sheetSame filtered hubsbottom-navigation.tsx
    Right railSubmenu → related hubs → optional news stats → helpAdminWrapper → admin-rail.tsx
    Dashboard tilesSame hubs (minus Dashboard itself)admin-dashboard-tiles.ts
    CRM shellFull-width center + horizontal tabs (no right rail)CrmAdminShell

    Why this matters for your clone

    Operators should not hunt three different menus. One config drives desktop, mobile, dashboard tiles, and the right rail — so promoting someone to admin or superadmin changes what they can open consistently.

    Trust & safety hub

    Security center folds fraud desk and verification into /admin/security?tab=….

    Email AI-CRM

    Inbox, drafts, contacts, analytics, and tasks under /admin/crm/* with CrmAdminShell tabs.

    Owner Project Lab

    CRM orders desk, shared Project room, buyer My Projects.

    Architecture

    Admin nav SSOT → three surfaces

    Module map (verified)

    ConcernPath
    Nav groups, pageContext, rail submenus, related hubsfeatures/admin/admin-nav-config.ts
    Labels builderfeatures/admin/admin-labels.ts
    Iconsfeatures/admin/admin-nav-icons.tsx
    Aside + mobile hookfeatures/admin/use-admin-nav-menu.ts
    Dashboard tilesfeatures/admin/admin-dashboard-tiles.ts
    Right rail UIcomponents/layout/rails/admin-rail.tsx

    Related documentation

    Related documentation

    Admin API

    Deep-dive: verified `/api/admin/*` routes and access tiers for console work.

    Security

    Depends-on: RBAC layers and confidential tiers that gate AdminWrapper.

    Email AI-CRM

    Same-workflow: CRM admin UI under `/admin/crm/*` shares the operator desk model.

    Admin Wiki

    Next-step: store compounding project knowledge in the Admin Wiki vault beside News.

    Admin console

    Use Founder / Developer tabs in the docs sidebar to filter this page. HTTP handlers for the same desks live in Admin API.

    Ring’s Admin console (/admin/*) is a three-pane operator surface: left menus for section hubs, center for work, right rail for in-module submenus and related hubs. Navigation is role-filtered from one SSOT — platform admins (admin | superadmin) see community, trust, commerce, and CRM hubs; superadmin also sees Platform ops (settings, processes, performance, subscriptions, Web3).

    SurfaceWhat it showsSource
    Icon railSingle Admin entry → /adminsidebar-rail.tsx + isPlatformAdmin
    Desktop asideGrouped hubs (Overview → … → Platform)useAdminNavMenu ← admin-nav-config.ts
    Mobile bottom sheetSame filtered hubsbottom-navigation.tsx
    Right railSubmenu → related hubs → optional news stats → helpAdminWrapper → admin-rail.tsx
    Dashboard tilesSame hubs (minus Dashboard itself)admin-dashboard-tiles.ts
    CRM shellFull-width center + horizontal tabs (no right rail)CrmAdminShell

    Why this matters for your clone

    Operators should not hunt three different menus. One config drives desktop, mobile, dashboard tiles, and the right rail — so promoting someone to admin or superadmin changes what they can open consistently.

    Trust & safety hub

    Security center folds fraud desk and verification into /admin/security?tab=….

    Email AI-CRM

    Inbox, drafts, contacts, analytics, and tasks under /admin/crm/* with CrmAdminShell tabs.

    Owner Project Lab

    CRM orders desk, shared Project room, buyer My Projects.

    Architecture

    Admin nav SSOT → three surfaces

    Module map (verified)

    ConcernPath
    Nav groups, pageContext, rail submenus, related hubsfeatures/admin/admin-nav-config.ts
    Labels builderfeatures/admin/admin-labels.ts
    Iconsfeatures/admin/admin-nav-icons.tsx
    Aside + mobile hookfeatures/admin/use-admin-nav-menu.ts
    Dashboard tilesfeatures/admin/admin-dashboard-tiles.ts
    Right rail UIcomponents/layout/rails/admin-rail.tsx

    Related documentation

    Related documentation

    Admin API

    Deep-dive: verified `/api/admin/*` routes and access tiers for console work.

    Security

    Depends-on: RBAC layers and confidential tiers that gate AdminWrapper.

    Email AI-CRM

    Same-workflow: CRM admin UI under `/admin/crm/*` shares the operator desk model.

    Admin Wiki

    Next-step: store compounding project knowledge in the Admin Wiki vault beside News.

    Store & ERP

    Store hub opens products; rail links orders, stock, commissions, and add product.

    Telegram admin bot

    Whitelist RBAC for remote ops — complements the web console.

    Operator journey (typical day)

    1. Open Admin from the icon rail → dashboard tiles for every hub you can access.
    2. Jump to Security for fraud / verification / events without separate top-level Fraud or Verification menu items.
    3. Use the right rail on News, Store, Matcher, DAO, Web3, Users, or Moderation for in-module links (and related hubs). CRM pages hide the right rail and use horizontal tabs instead.
    4. Superadmin only: Platform group — Settings, Processes, Performance, Subscriptions, Web3 (settings page is superadmin-gated).

    Legacy URLs /admin/fraud-desk and /admin/verification still work — they redirect into the Security hub tabs so bookmarks and old docs keep working.

    Role checklist

    RoleMain menusPlatform group
    adminOverview, Community, Trust & safety, Commerce, Email & CRMHidden
    superadminSame + PlatformSettings, Processes, Performance, Subscriptions, Web3

    SSOT roles: features/auth/user-role.ts (isPlatformAdmin, isSuperadmin). Layout guard: AdminAuthGuard on app/[locale]/admin/layout.tsx.

    Layout shellcomponents/wrappers/admin-wrapper.tsx → RingRightRailLayout
    Email shell (deprecated alias)features/admin/email/email-admin-shell.tsx → CrmAdminShell
    CRM shellfeatures/admin/crm/crm-admin-shell.tsx
    Routesconstants/routes.ts (ADMIN_*, ADMIN_CRM_*; ADMIN_EMAIL_* aliases → /admin/crm/*)
    Locale copylocales/{en,uk,ru}/modules/admin.json

    Main menu groups (ADMIN_NAV_GROUPS)

    Group idTitle keyItems (hubs)minRole
    overviewnavGroupOverviewDashboardadmin
    communitynavGroupCommunityUsers, News, DAO, Moderation, Analyticsadmin
    trustnavGroupTrustSecurity, Matcheradmin
    commercenavGroupCommerceStore → products, Refcodesadmin
    emailnavGroupEmailCRM orders + inbox hubsadmin
    platformnavGroupPlatformOpsSettings, Processes, Performance, Subscriptions, Web3superadmin

    Fraud desk and Verification are not main-menu items.

    Right rail contract

    Order in AdminSidebarContent:

    1. In-module submenu when resolveRailSection(pageContext) is non-null and getRailSubmenu returns links
    2. Related hubs via getRelatedHubs
    3. Full quick nav only when pageContext === 'dashboard'
    4. News stats when pageContext === 'news' and newsStats is passed
    5. Help docs links

    Active highlighting for query tabs uses pathWithQuery (pathname + useSearchParams) so Security / Matcher / Moderation ?tab= links highlight correctly.

    pageContextRail sectionNotable submenu
    security / legacy fraud-desk / verificationsecurity?tab=overview|fraud|verification|events
    matchermatcherAnalytics vs ?tab=moderation
    storestoreProducts, orders, stock, commissions, add
    crm-*CRM (tabs, no rail)Orders, inbox, drafts, contacts, analytics, tasks via CrmAdminShell
    newsnewsArticles, categories, analytics, bulk
    web3web3Dashboard + Settings (settings link if superadmin)
    usersusers?tab= overview / users / verification / analytics
    moderationmoderationqueue / rules / reports / analytics (URL-synced client)

    Security hub + redirects

    Tabs SSOT: features/admin/security/types/security-overview.ts (SECURITY_TABS). Client: admin-security-center-client.tsx (controlled Tabs + router.push).

    Matcher tab sync

    Rail Moderation → /admin/matcher?tab=moderation. Client admin-matcher-client.tsx reads tab; analytics sub-tabs (performance, quality, …) stay client-local when tab is absent.

    CRM pages

    All CRM routes wrap with CrmAdminShell + pageContext (crm-orders, crm-inbox, crm-drafts, crm-contacts, crm-tasks, crm-analytics). The shell sets showRightRail={false} and renders horizontal tabs: Orders | Inbox | Drafts | Contacts | Tasks | Analytics. Email HTTP APIs stay at /api/admin/email/*. Project-order chat topology: Owner Project Lab.

    Clean break from /admin/email-*

    There are no redirects from legacy /admin/email-* URLs. Use /admin/crm/*. ADMIN_EMAIL_* constants alias to CRM paths for code compatibility.

    Web3 settings

    /admin/web3/settings must pass pageContext="web3" (superadmin-only page) so the Web3 submenu appears instead of dashboard related hubs.

    1. 1

      Extend the main menu

      Add an item under the right group in ADMIN_NAV_GROUPS with href, pageContext, minRole, and labelKey. Add the label to admin-labels.ts and locales/{en,uk,ru}/modules/admin.json.

    2. 2

      Wire the page shell

      Wrap the page (or client) with AdminWrapper and the matching pageContext. Email routes use EmailAdminShell.

    3. 3

      Add rail children when the section has multiple leaves

      Extend getRailSubmenu / resolveRailSection. Prefer real routes or ?tab= synced in the page client (see Security / Moderation). Pass pathWithQuery into isActive predicates that inspect query strings.

    Whitelabel Navigation

    See-also: clone-level nav customization when forking admin menus.

    text
    
    /admin/fraud-desk      → /admin/security?tab=fraud
    /admin/verification    → /admin/security?tab=verification

    Store & ERP

    Store hub opens products; rail links orders, stock, commissions, and add product.

    Telegram admin bot

    Whitelist RBAC for remote ops — complements the web console.

    Operator journey (typical day)

    1. Open Admin from the icon rail → dashboard tiles for every hub you can access.
    2. Jump to Security for fraud / verification / events without separate top-level Fraud or Verification menu items.
    3. Use the right rail on News, Store, Matcher, DAO, Web3, Users, or Moderation for in-module links (and related hubs). CRM pages hide the right rail and use horizontal tabs instead.
    4. Superadmin only: Platform group — Settings, Processes, Performance, Subscriptions, Web3 (settings page is superadmin-gated).

    Legacy URLs /admin/fraud-desk and /admin/verification still work — they redirect into the Security hub tabs so bookmarks and old docs keep working.

    Role checklist

    RoleMain menusPlatform group
    adminOverview, Community, Trust & safety, Commerce, Email & CRMHidden
    superadminSame + PlatformSettings, Processes, Performance, Subscriptions, Web3

    SSOT roles: features/auth/user-role.ts (isPlatformAdmin, isSuperadmin). Layout guard: AdminAuthGuard on app/[locale]/admin/layout.tsx.

    Layout shellcomponents/wrappers/admin-wrapper.tsx → RingRightRailLayout
    Email shell (deprecated alias)features/admin/email/email-admin-shell.tsx → CrmAdminShell
    CRM shellfeatures/admin/crm/crm-admin-shell.tsx
    Routesconstants/routes.ts (ADMIN_*, ADMIN_CRM_*; ADMIN_EMAIL_* aliases → /admin/crm/*)
    Locale copylocales/{en,uk,ru}/modules/admin.json

    Main menu groups (ADMIN_NAV_GROUPS)

    Group idTitle keyItems (hubs)minRole
    overviewnavGroupOverviewDashboardadmin
    communitynavGroupCommunityUsers, News, DAO, Moderation, Analyticsadmin
    trustnavGroupTrustSecurity, Matcheradmin
    commercenavGroupCommerceStore → products, Refcodesadmin
    emailnavGroupEmailCRM orders + inbox hubsadmin
    platformnavGroupPlatformOpsSettings, Processes, Performance, Subscriptions, Web3superadmin

    Fraud desk and Verification are not main-menu items.

    Right rail contract

    Order in AdminSidebarContent:

    1. In-module submenu when resolveRailSection(pageContext) is non-null and getRailSubmenu returns links
    2. Related hubs via getRelatedHubs
    3. Full quick nav only when pageContext === 'dashboard'
    4. News stats when pageContext === 'news' and newsStats is passed
    5. Help docs links

    Active highlighting for query tabs uses pathWithQuery (pathname + useSearchParams) so Security / Matcher / Moderation ?tab= links highlight correctly.

    pageContextRail sectionNotable submenu
    security / legacy fraud-desk / verificationsecurity?tab=overview|fraud|verification|events
    matchermatcherAnalytics vs ?tab=moderation
    storestoreProducts, orders, stock, commissions, add
    crm-*CRM (tabs, no rail)Orders, inbox, drafts, contacts, analytics, tasks via CrmAdminShell
    newsnewsArticles, categories, analytics, bulk
    web3web3Dashboard + Settings (settings link if superadmin)
    usersusers?tab= overview / users / verification / analytics
    moderationmoderationqueue / rules / reports / analytics (URL-synced client)

    Security hub + redirects

    Tabs SSOT: features/admin/security/types/security-overview.ts (SECURITY_TABS). Client: admin-security-center-client.tsx (controlled Tabs + router.push).

    Matcher tab sync

    Rail Moderation → /admin/matcher?tab=moderation. Client admin-matcher-client.tsx reads tab; analytics sub-tabs (performance, quality, …) stay client-local when tab is absent.

    CRM pages

    All CRM routes wrap with CrmAdminShell + pageContext (crm-orders, crm-inbox, crm-drafts, crm-contacts, crm-tasks, crm-analytics). The shell sets showRightRail={false} and renders horizontal tabs: Orders | Inbox | Drafts | Contacts | Tasks | Analytics. Email HTTP APIs stay at /api/admin/email/*. Project-order chat topology: Owner Project Lab.

    Clean break from /admin/email-*

    There are no redirects from legacy /admin/email-* URLs. Use /admin/crm/*. ADMIN_EMAIL_* constants alias to CRM paths for code compatibility.

    Web3 settings

    /admin/web3/settings must pass pageContext="web3" (superadmin-only page) so the Web3 submenu appears instead of dashboard related hubs.

    1. 1

      Extend the main menu

      Add an item under the right group in ADMIN_NAV_GROUPS with href, pageContext, minRole, and labelKey. Add the label to admin-labels.ts and locales/{en,uk,ru}/modules/admin.json.

    2. 2

      Wire the page shell

      Wrap the page (or client) with AdminWrapper and the matching pageContext. Email routes use EmailAdminShell.

    3. 3

      Add rail children when the section has multiple leaves

      Extend getRailSubmenu / resolveRailSection. Prefer real routes or ?tab= synced in the page client (see Security / Moderation). Pass pathWithQuery into isActive predicates that inspect query strings.

    Whitelabel Navigation

    See-also: clone-level nav customization when forking admin menus.

    text
    
    /admin/fraud-desk      → /admin/security?tab=fraud
    /admin/verification    → /admin/security?tab=verification

    Store & ERP

    Store hub opens products; rail links orders, stock, commissions, and add product.

    Telegram admin bot

    Whitelist RBAC for remote ops — complements the web console.

    Operator journey (typical day)

    1. Open Admin from the icon rail → dashboard tiles for every hub you can access.
    2. Jump to Security for fraud / verification / events without separate top-level Fraud or Verification menu items.
    3. Use the right rail on News, Store, Matcher, DAO, Web3, Users, or Moderation for in-module links (and related hubs). CRM pages hide the right rail and use horizontal tabs instead.
    4. Superadmin only: Platform group — Settings, Processes, Performance, Subscriptions, Web3 (settings page is superadmin-gated).

    Legacy URLs /admin/fraud-desk and /admin/verification still work — they redirect into the Security hub tabs so bookmarks and old docs keep working.

    Role checklist

    RoleMain menusPlatform group
    adminOverview, Community, Trust & safety, Commerce, Email & CRMHidden
    superadminSame + PlatformSettings, Processes, Performance, Subscriptions, Web3

    SSOT roles: features/auth/user-role.ts (isPlatformAdmin, isSuperadmin). Layout guard: AdminAuthGuard on app/[locale]/admin/layout.tsx.

    Layout shellcomponents/wrappers/admin-wrapper.tsx → RingRightRailLayout
    Email shell (deprecated alias)features/admin/email/email-admin-shell.tsx → CrmAdminShell
    CRM shellfeatures/admin/crm/crm-admin-shell.tsx
    Routesconstants/routes.ts (ADMIN_*, ADMIN_CRM_*; ADMIN_EMAIL_* aliases → /admin/crm/*)
    Locale copylocales/{en,uk,ru}/modules/admin.json

    Main menu groups (ADMIN_NAV_GROUPS)

    Group idTitle keyItems (hubs)minRole
    overviewnavGroupOverviewDashboardadmin
    communitynavGroupCommunityUsers, News, DAO, Moderation, Analyticsadmin
    trustnavGroupTrustSecurity, Matcheradmin
    commercenavGroupCommerceStore → products, Refcodesadmin
    emailnavGroupEmailCRM orders + inbox hubsadmin
    platformnavGroupPlatformOpsSettings, Processes, Performance, Subscriptions, Web3superadmin

    Fraud desk and Verification are not main-menu items.

    Right rail contract

    Order in AdminSidebarContent:

    1. In-module submenu when resolveRailSection(pageContext) is non-null and getRailSubmenu returns links
    2. Related hubs via getRelatedHubs
    3. Full quick nav only when pageContext === 'dashboard'
    4. News stats when pageContext === 'news' and newsStats is passed
    5. Help docs links

    Active highlighting for query tabs uses pathWithQuery (pathname + useSearchParams) so Security / Matcher / Moderation ?tab= links highlight correctly.

    pageContextRail sectionNotable submenu
    security / legacy fraud-desk / verificationsecurity?tab=overview|fraud|verification|events
    matchermatcherAnalytics vs ?tab=moderation
    storestoreProducts, orders, stock, commissions, add
    crm-*CRM (tabs, no rail)Orders, inbox, drafts, contacts, analytics, tasks via CrmAdminShell
    newsnewsArticles, categories, analytics, bulk
    web3web3Dashboard + Settings (settings link if superadmin)
    usersusers?tab= overview / users / verification / analytics
    moderationmoderationqueue / rules / reports / analytics (URL-synced client)

    Security hub + redirects

    Tabs SSOT: features/admin/security/types/security-overview.ts (SECURITY_TABS). Client: admin-security-center-client.tsx (controlled Tabs + router.push).

    Matcher tab sync

    Rail Moderation → /admin/matcher?tab=moderation. Client admin-matcher-client.tsx reads tab; analytics sub-tabs (performance, quality, …) stay client-local when tab is absent.

    CRM pages

    All CRM routes wrap with CrmAdminShell + pageContext (crm-orders, crm-inbox, crm-drafts, crm-contacts, crm-tasks, crm-analytics). The shell sets showRightRail={false} and renders horizontal tabs: Orders | Inbox | Drafts | Contacts | Tasks | Analytics. Email HTTP APIs stay at /api/admin/email/*. Project-order chat topology: Owner Project Lab.

    Clean break from /admin/email-*

    There are no redirects from legacy /admin/email-* URLs. Use /admin/crm/*. ADMIN_EMAIL_* constants alias to CRM paths for code compatibility.

    Web3 settings

    /admin/web3/settings must pass pageContext="web3" (superadmin-only page) so the Web3 submenu appears instead of dashboard related hubs.

    1. 1

      Extend the main menu

      Add an item under the right group in ADMIN_NAV_GROUPS with href, pageContext, minRole, and labelKey. Add the label to admin-labels.ts and locales/{en,uk,ru}/modules/admin.json.

    2. 2

      Wire the page shell

      Wrap the page (or client) with AdminWrapper and the matching pageContext. Email routes use EmailAdminShell.

    3. 3

      Add rail children when the section has multiple leaves

      Extend getRailSubmenu / resolveRailSection. Prefer real routes or ?tab= synced in the page client (see Security / Moderation). Pass pathWithQuery into isActive predicates that inspect query strings.

    Whitelabel Navigation

    See-also: clone-level nav customization when forking admin menus.

    text
    
    /admin/fraud-desk      → /admin/security?tab=fraud
    /admin/verification    → /admin/security?tab=verification
    1. Docs
    2. /Features
    3. /Admin console

    Updated Jul 20, 20266 min listen

    1. Docs
    2. /Features
    3. /Admin console

    Updated Jul 20, 20266 min listen

    1. Docs
    2. /Features
    3. /Admin console

    Updated Jul 20, 20266 min listen