NeXuS

Plan System

NeXuS uses a tier-based plan system to gate features in the frontend. The PlanProvider context manages the current user’s plan and exposes helpers for conditional rendering.

Plan Tiers

Tier Name Price Key Features
Basic NeXuS Basic $19/mo Dashboard, container monitoring, service health, basic alerts
Pro NeXuS PRO $39/mo + DNS management, MCP integration, Grafana embed, container actions, log search, advanced metrics, webhooks
Enterprise NeXuS Enterprise $89/mo + SSO/SAML, audit logging, multi-region, custom alerts, dedicated support, on-call escalation, quarterly reviews

Feature List

Basic Features

Pro Features (includes Basic)

Enterprise Features (includes Pro)

Usage

PlanProvider

Wrap your app with PlanProvider (inside AuthProvider):

<AuthProvider>
  <PlanProvider>
    {children}
  </PlanProvider>
</AuthProvider>

The provider fetches the user’s plan from GET /user/plan on mount.

usePlan Hook

import { usePlan } from '@/lib/plan'

function MyComponent() {
  const { plan, hasFeature, isAtLeast, tierLabel } = usePlan()

  // Check if user has a specific feature
  if (hasFeature('dns-management')) {
    // Show DNS UI
  }

  // Check if user is at least Pro tier
  if (isAtLeast('pro')) {
    // Show Pro content
  }

  // Get upgrade badge text (null if user has access)
  const badge = tierLabel('enterprise') // Returns "ENTERPRISE" or null
}

API

Method Returns Description
plan PlanInfo Current plan object (tier, name, price, features, trialEnds)
loading boolean True while fetching plan
hasFeature(feature) boolean Whether the current plan includes this feature
isAtLeast(tier) boolean Whether the current plan is at least the given tier
tierLabel(minTier) string \| null Returns "PRO" or "ENTERPRISE" badge text if user needs to upgrade, or null if they have access