From 6545720f8430e9231aef9cd80e94aeaed92d831a Mon Sep 17 00:00:00 2001 From: snehasishcodes Date: Tue, 18 Aug 2026 01:28:57 +0530 Subject: [PATCH] feat(web): update pricing tiers and fair-use policy --- apps/web/src/app/legal/fair-usage/page.tsx | 57 +++++++ apps/web/src/app/pricing/page.tsx | 139 ++++++++++-------- apps/web/src/app/sitemap.ts | 6 + .../components/landing/pricing-section.tsx | 58 +++++--- 4 files changed, 177 insertions(+), 83 deletions(-) create mode 100644 apps/web/src/app/legal/fair-usage/page.tsx diff --git a/apps/web/src/app/legal/fair-usage/page.tsx b/apps/web/src/app/legal/fair-usage/page.tsx new file mode 100644 index 0000000..628357f --- /dev/null +++ b/apps/web/src/app/legal/fair-usage/page.tsx @@ -0,0 +1,57 @@ +import Link from "next/link"; +import { ArrowLeft } from "lucide-react"; + +export const metadata = { + title: "Fair Use Policy - CrossCode", + description: "Fair use policy for CrossCode tunnel traffic.", +}; + +export default function FairUsagePage() { + return ( +
+ + + Back to pricing + + +

Fair Use Policy

+

Last updated: August 18, 2026

+ +
+

Unlimited fair-use traffic

+

+ Paid CrossCode plans do not impose an artificial bandwidth quota for normal development use. You may use + your active tunnels for coding, testing, agent sessions, API requests, and related development workflows. +

+ +

What is not fair use

+

+ The service is not intended to replace a general-purpose hosting, file distribution, streaming, proxy, or + VPN service. We may investigate or restrict usage that: +

+
    +
  • Creates sustained traffic that materially affects other customers
  • +
  • Distributes large files or media as a public download service
  • +
  • Runs automated scraping, bulk requests, or abusive workloads
  • +
  • Attempts to bypass service limits or security controls
  • +
  • Violates applicable law or the CrossCode Terms of Service
  • +
+ +

How we respond

+

+ When practical, we will contact you before taking action. Depending on the severity and urgency, CrossCode + may throttle traffic, temporarily disable a tunnel, or suspend an account to protect service availability + and other users. +

+ +

+ If your workload requires sustained high-volume traffic or dedicated capacity, contact us about an + Enterprise plan. +

+
+
+ ); +} diff --git a/apps/web/src/app/pricing/page.tsx b/apps/web/src/app/pricing/page.tsx index 03beabf..e2ec7ff 100644 --- a/apps/web/src/app/pricing/page.tsx +++ b/apps/web/src/app/pricing/page.tsx @@ -16,14 +16,12 @@ const tiers = [ features: [ { label: "Cloudflare (ephemeral) tunnel", included: true }, { label: "1 active tunnel", included: true }, - { label: "1 concurrent session", included: true }, + { label: "Fair-use traffic", included: true }, { label: "Best-effort uptime", included: true }, { label: "No custom subdomain", included: false }, - { label: "15s heartbeat interval", included: true }, - { label: "60 req/min rate limit", included: true }, - { label: "No push notifications", included: false }, - { label: "No priority support", included: false }, - { label: "No connection history", included: false }, + { label: "No custom domain", included: false }, + { label: "No SLA", included: false }, + { label: "Community support", included: true }, ], cta: "Get Started", ctaHref: "/login", @@ -31,65 +29,61 @@ const tiers = [ }, { name: "Starter", - price: "$3", + price: "$2", period: "/mo", description: "For individual developers", features: [ { label: "Custom VPS tunnel", included: true }, - { label: "2 active tunnels", included: true }, - { label: "3 concurrent sessions", included: true }, - { label: "99% SLA uptime", included: true }, + { label: "1 active tunnel", included: true }, + { label: "Unlimited fair-use traffic", included: true, href: "/legal/fair-usage" }, + { label: "Shared infrastructure", included: true }, { label: "*.tunnel.crosscode.site subdomain", included: true }, - { label: "10s heartbeat interval", included: true }, - { label: "200 req/min rate limit", included: true }, - { label: "Push notifications", included: true }, - { label: "Email support", included: true }, - { label: "7 days connection history", included: true }, + { label: "Best-effort uptime", included: true }, + { label: "Community support", included: true }, + { label: "No custom domain", included: false }, + { label: "No SLA", included: false }, ], cta: "Upgrade to Starter", ctaHref: "/login", highlighted: false, }, { - name: "Pro", - price: "$8", + name: "Builder", + price: "$5", period: "/mo", - description: "For power users and freelancers", + description: "For power users and small teams", features: [ { label: "Custom VPS tunnel", included: true }, { label: "5 active tunnels", included: true }, - { label: "10 concurrent sessions", included: true }, - { label: "99.9% SLA uptime", included: true }, + { label: "Unlimited fair-use traffic", included: true, href: "/legal/fair-usage" }, + { label: "Shared infrastructure", included: true }, { label: "*.tunnel.crosscode.site subdomain", included: true }, - { label: "5s heartbeat interval", included: true }, - { label: "500 req/min rate limit", included: true }, - { label: "Push notifications", included: true }, - { label: "Email + Discord support", included: true }, - { label: "30 days connection history", included: true }, + { label: "1 custom domain", included: true }, + { label: "Best-effort uptime", included: true }, + { label: "Email support", included: true }, + { label: "No dedicated capacity", included: false }, + { label: "No SLA", included: false }, ], - cta: "Upgrade to Pro", + cta: "Upgrade to Builder", ctaHref: "/login", highlighted: true, }, { - name: "Team", - price: "$19", - period: "/mo", - description: "For teams and organizations", + name: "Enterprise", + price: "Custom", + period: "", + description: "For teams with tailored requirements", features: [ - { label: "Custom VPS tunnel", included: true }, - { label: "15 active tunnels", included: true }, - { label: "Unlimited concurrent sessions", included: true }, - { label: "99.9% SLA uptime", included: true }, - { label: "Own domain support", included: true }, - { label: "5s heartbeat interval", included: true }, - { label: "2000 req/min rate limit", included: true }, - { label: "Push notifications", included: true }, - { label: "Dedicated support", included: true }, - { label: "90 days connection history", included: true }, + { label: "Custom tunnel limits", included: true }, + { label: "Custom domains", included: true }, + { label: "Dedicated capacity", included: true }, + { label: "Priority support", included: true }, + { label: "Custom SLA", included: true }, + { label: "Annual invoicing", included: true }, + { label: "Custom onboarding", included: true }, ], - cta: "Upgrade to Team", - ctaHref: "/login", + cta: "Contact us", + ctaHref: "mailto:crosscode@sish.work?subject=CrossCode%20Enterprise", highlighted: false, }, ]; @@ -98,31 +92,32 @@ const comparisonFeatures = [ { category: "Tunnel", rows: [ - { label: "Tunnel type", values: ["Cloudflare (ephemeral)", "Custom VPS tunnel", "Custom VPS tunnel", "Custom VPS tunnel"] }, - { label: "Active tunnels", values: ["1", "2", "5", "15"] }, - { label: "Concurrent sessions", values: ["1", "3", "10", "Unlimited"] }, - { label: "Tunnel uptime", values: ["Best-effort", "99% SLA", "99.9% SLA", "99.9% SLA"] }, + { label: "Tunnel type", values: ["Cloudflare (ephemeral)", "Custom VPS tunnel", "Custom VPS tunnel", "Custom relay"] }, + { label: "Active tunnels", values: ["1", "1", "5", "Custom"] }, + { label: "Traffic", values: ["Fair use", "Unlimited fair use", "Unlimited fair use", "Custom"] }, + { label: "Tunnel uptime", values: ["Best-effort", "Best-effort", "Best-effort", "Custom SLA"] }, ], }, { category: "Customization", rows: [ - { label: "Custom subdomain", values: ["No", "*.tunnel.crosscode.site", "*.tunnel.crosscode.site", "Own domain support"] }, + { label: "CrossCode subdomain", values: ["No", "Yes", "Yes", "Yes"] }, + { label: "Custom domain", values: ["No", "No", "1 domain", "Custom"] }, ], }, { - category: "Performance", + category: "Infrastructure", rows: [ - { label: "Heartbeat interval", values: ["15s", "10s", "5s", "5s"] }, - { label: "Rate limit", values: ["60 req/min", "200 req/min", "500 req/min", "2000 req/min"] }, + { label: "Infrastructure", values: ["Cloudflare", "Shared", "Shared", "Dedicated or reserved"] }, + { label: "Priority support", values: ["No", "No", "Email", "Yes"] }, ], }, { - category: "Support & Extras", + category: "Billing & Support", rows: [ - { label: "Push notifications", values: ["No", "Yes", "Yes", "Yes"] }, - { label: "Priority support", values: ["No", "Email", "Email + Discord", "Dedicated"] }, - { label: "Connection history", values: ["None", "7 days", "30 days", "90 days"] }, + { label: "Annual invoicing", values: ["No", "No", "No", "Yes"] }, + { label: "Custom onboarding", values: ["No", "No", "No", "Yes"] }, + { label: "SLA", values: ["No", "No", "No", "Custom"] }, ], }, ]; @@ -166,7 +161,9 @@ export default function PricingPage() {
{tier.price} - {tier.period} + {tier.period && ( + {tier.period} + )}

{tier.description}

@@ -179,9 +176,31 @@ export default function PricingPage() { ) : ( )} - - {feature.label} - + {feature.href ? ( + feature.label === "Unlimited fair-use traffic" ? ( + + Unlimited{" "} + + fair-use + {" "} + traffic + + ) : ( + + {feature.label} + + ) + ) : ( + + {feature.label} + + )} ))} @@ -208,8 +227,8 @@ export default function PricingPage() { Feature Free Starter - Pro - Team + Builder + Enterprise diff --git a/apps/web/src/app/sitemap.ts b/apps/web/src/app/sitemap.ts index f14da28..4acd4d4 100644 --- a/apps/web/src/app/sitemap.ts +++ b/apps/web/src/app/sitemap.ts @@ -15,6 +15,12 @@ export const sitemapRoutes: MetadataRoute.Sitemap = [ changeFrequency: "monthly", priority: 0.8, }, + { + url: "/legal/fair-usage", + lastModified: new Date(), + changeFrequency: "yearly", + priority: 0.3, + }, { url: "/download", lastModified: new Date(), diff --git a/apps/web/src/components/landing/pricing-section.tsx b/apps/web/src/components/landing/pricing-section.tsx index e7bf76d..3f256cf 100644 --- a/apps/web/src/components/landing/pricing-section.tsx +++ b/apps/web/src/components/landing/pricing-section.tsx @@ -2,7 +2,7 @@ import Link from "next/link"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"; -import { Check, X, ArrowRight } from "lucide-react"; +import { Check, ArrowRight } from "lucide-react"; const tiers = [ { @@ -13,7 +13,7 @@ const tiers = [ features: [ "Cloudflare (ephemeral) tunnel", "1 active tunnel", - "1 concurrent session", + "Normal usage on shared infrastructure", "Best-effort uptime", ], cta: "Get Started", @@ -22,47 +22,47 @@ const tiers = [ }, { name: "Starter", - price: "$3", + price: "$2", period: "/mo", description: "For individual developers", features: [ "Custom VPS tunnel", - "2 active tunnels", - "3 concurrent sessions", - "99% SLA uptime", + "1 active tunnel", + "Unlimited fair-use traffic", + "Best-effort uptime", ], cta: "Upgrade", ctaHref: "/login", highlighted: false, }, { - name: "Pro", - price: "$8", + name: "Builder", + price: "$5", period: "/mo", - description: "For power users and freelancers", + description: "For power users and small teams", features: [ "Custom VPS tunnel", "5 active tunnels", - "10 concurrent sessions", - "99.9% SLA uptime", + "Unlimited fair-use traffic", + "1 custom domain", ], cta: "Upgrade", ctaHref: "/login", highlighted: true, }, { - name: "Team", - price: "$19", - period: "/mo", - description: "For teams and organizations", + name: "Enterprise", + price: "Custom", + period: "", + description: "For teams with tailored requirements", features: [ - "Custom VPS tunnel", - "15 active tunnels", - "Unlimited sessions", - "99.9% SLA uptime", + "Custom tunnel limits", + "Custom domains", + "Dedicated capacity", + "Priority support and SLA", ], - cta: "Upgrade", - ctaHref: "/login", + cta: "Contact us", + ctaHref: "mailto:crosscode@sish.work?subject=CrossCode%20Enterprise", highlighted: false, }, ]; @@ -98,7 +98,9 @@ export function PricingSection() {
{tier.price} - {tier.period} + {tier.period && ( + {tier.period} + )}

{tier.description}

@@ -107,7 +109,17 @@ export function PricingSection() { {tier.features.map((feature) => (
  • - {feature} + {feature === "Unlimited fair-use traffic" ? ( + + Unlimited{" "} + + fair-use + {" "} + traffic + + ) : ( + {feature} + )}
  • ))}