diff --git a/site/src/app/(v2)/(marketing)/(index)/sections/TechSection.tsx b/site/src/app/(v2)/(marketing)/(index)/sections/TechSection.tsx index 3dabd84f9e..c439d97d3d 100644 --- a/site/src/app/(v2)/(marketing)/(index)/sections/TechSection.tsx +++ b/site/src/app/(v2)/(marketing)/(index)/sections/TechSection.tsx @@ -6,7 +6,6 @@ import rivetWhiteLogo from "../images/platforms/rivet-white.svg"; import cloudflareWorkersLogo from "../images/platforms/cloudflare-workers.svg"; import bunLogo from "../images/platforms/bun.svg"; import nodejsLogo from "../images/platforms/nodejs.svg"; -import redisLogo from "../images/platforms/redis.svg"; import fileSystemLogo from "../images/platforms/file-system.svg"; import memoryLogo from "../images/platforms/memory.svg"; import vercelLogo from "../images/platforms/vercel.svg"; @@ -248,12 +247,6 @@ export function TechSection() { - { + return ( +
+
+

+ Connect to Your Applications +

+

+ Rivet Cloud scales actors that connect seamlessly to your applications deployed anywhere +

+
+ + {/* Architecture Diagram */} +
+
+ {/* Your Applications */} +
+
+ +

Your Applications

+

+ Deploy on Railway, Vercel, AWS, GCP, or any platform +

+
+
+ + {/* Connection Arrows */} +
+ + +
+ + {/* Rivet Engine */} +
+
+ +

Rivet Cloud

+

+ Actor scaling and storage with managed FoundationDB +

+
+
+
+ +
+ + {/* Platform Integration Details */} +
+
+
+
+ R +
+

Railway

+
+

+ Connect your Railway-deployed applications to Rivet actors for stateful, real-time functionality. +

+
+ +
+
+
+ V +
+

Vercel

+
+

+ Integrate Vercel serverless functions with Rivet actors for persistent state and real-time features. +

+
+ +
+
+ +

Any Platform

+
+

+ Connect applications from AWS, GCP, Azure, or any cloud platform to Rivet Cloud +

+
+
+ + {/* CTA */} +
+ + Learn how to connect your backend + + +
+
+ ); +}; diff --git a/site/src/app/(v2)/(marketing)/cloud/CommandCenterSection.tsx b/site/src/app/(v2)/(marketing)/cloud/CommandCenterSection.tsx index 988451530b..e2f977e57d 100644 --- a/site/src/app/(v2)/(marketing)/cloud/CommandCenterSection.tsx +++ b/site/src/app/(v2)/(marketing)/cloud/CommandCenterSection.tsx @@ -100,11 +100,10 @@ export const CommandCenterSection = () => { {/* Header */}

- The command center your backend is missing + Meet your command center

- Complete visibility and control over your serverless - infrastructure + Complete visibility and control over your Rivet Actors

diff --git a/site/src/app/(v2)/(marketing)/cloud/CtaSection.tsx b/site/src/app/(v2)/(marketing)/cloud/CtaSection.tsx index 03e759d63f..2b8860d4ff 100644 --- a/site/src/app/(v2)/(marketing)/cloud/CtaSection.tsx +++ b/site/src/app/(v2)/(marketing)/cloud/CtaSection.tsx @@ -1,6 +1,7 @@ "use client"; -import { CtaButtons } from "./CtaButtons"; +import { Icon, faArrowRight } from "@rivet-gg/icons"; +import { MarketingButton } from "./MarketingButton"; // CTA section export const CtaSection = () => { @@ -16,7 +17,18 @@ export const CtaSection = () => {

- +
+ + Get Started + + + Documentation + + +
diff --git a/site/src/app/(v2)/(marketing)/cloud/FeaturesGrid.tsx b/site/src/app/(v2)/(marketing)/cloud/FeaturesGrid.tsx index 9c0de0c63b..a727dd3d9b 100644 --- a/site/src/app/(v2)/(marketing)/cloud/FeaturesGrid.tsx +++ b/site/src/app/(v2)/(marketing)/cloud/FeaturesGrid.tsx @@ -180,24 +180,24 @@ export const FeaturesGrid = () => { const features = [ { //title: "Stateless Functions", - title: "Functions", + title: "Rivet Engine", description: ( <> - Deploy serverless functions that scale - automatically. + Enterprise-scale orchestration built on FoundationDB for massive actor distribution and fault tolerance. ), - faIcon: faCode, - href: "/docs/cloud/functions", - useCases: ["APIs", "edge computing"], + faIcon: faServer, + href: "/docs/self-hosting", + useCases: ["actor orchestration", "multi-region", "fault tolerance"], + badge: "FoundationDB", }, { //title: "Stateful Actors", - title: "Actors", + title: "Rivet Actors", description: ( <> Long running tasks with state persistence, - hibernation, and realtime. + hibernation, and realtime that scale infinitely. ), faIcon: faActorsBorderless, @@ -207,16 +207,15 @@ export const FeaturesGrid = () => { }, { //title: "Sandboxed Containers", - title: "Containers", + title: "Platform Integration", description: ( <> - Run CPU- & memory-intensive workloads in secure - containers with fast coldstarts and blitz scaling. + Connect to your applications on Railway, Vercel, and other platforms with seamless integration. ), - faIcon: faServer, - href: "/docs/cloud/containers", - useCases: ["batch jobs", "code sandbox", "game servers"], + faIcon: faLayerGroup, + href: "/docs/self-hosting/connect-backend", + useCases: ["Railway", "Vercel", "any platform"], }, //{ // title: "Workflows", @@ -249,21 +248,6 @@ export const FeaturesGrid = () => { /> ))} -
-

- - Select the tools that fit your needs - {" "} - — integrated together into a single platform. -

- - See pricing - - -
); }; diff --git a/site/src/app/(v2)/(marketing)/cloud/PowerfulPrimitivesSection.tsx b/site/src/app/(v2)/(marketing)/cloud/PowerfulPrimitivesSection.tsx index cf4140ff4d..69f794a935 100644 --- a/site/src/app/(v2)/(marketing)/cloud/PowerfulPrimitivesSection.tsx +++ b/site/src/app/(v2)/(marketing)/cloud/PowerfulPrimitivesSection.tsx @@ -65,6 +65,51 @@ interface TabGroup { // Define all tab groups and their items at the top level const TAB_GROUPS: TabGroup[] = [ + { + id: "scaling", + title: "Scaling", + items: [ + { + id: "foundationdb", + icon: faDatabase, + title: "FoundationDB Backend", + description: + "Enterprise-grade distributed database that provides ACID transactions and infinite scalability for actor state management.", + image: imgPerTenantDatabase, // Reuse existing image + docs: { + actors: true, + containers: false, + functions: false, + }, + }, + { + id: "multi-region", + icon: faServer, + title: "Multi-Region Deployment", + description: + "Deploy actors across multiple geographic regions with automatic failover and data replication.", + image: imgLocalFirstSync, // Reuse existing image + docs: { + actors: true, + containers: false, + functions: false, + }, + }, + { + id: "fault-tolerance", + icon: faCogs, + title: "Fault Tolerance", + description: + "Built-in error handling and recovery with automatic actor restart and state preservation.", + image: imgManagedCi, // Reuse existing image + docs: { + actors: true, + containers: false, + functions: false, + }, + }, + ], + }, { id: "ai", title: "AI", diff --git a/site/src/app/(v2)/(marketing)/cloud/RivetCloudSection.tsx b/site/src/app/(v2)/(marketing)/cloud/RivetCloudSection.tsx index 31e64ebdd3..c457610ccd 100644 --- a/site/src/app/(v2)/(marketing)/cloud/RivetCloudSection.tsx +++ b/site/src/app/(v2)/(marketing)/cloud/RivetCloudSection.tsx @@ -24,7 +24,7 @@ export const RivetCloudSection = () => { icon: faCloud, title: "Rivet Cloud", description: - "Fully-managed serverless platform with enterprise support. Let us handle the infrastructure while you focus on your code.", + "Enterprise-scale actor orchestration built on FoundationDB. Connect your applications on Railway, Vercel, and other platforms with infinite scaling.", buttonText: "See Pricing", buttonHref: "/pricing", }, @@ -32,7 +32,7 @@ export const RivetCloudSection = () => { icon: faServer, title: "Bring Your Own Cloud", description: - "Specify your cloud of choice or provide your own API keys to deploy Rivet within your own cloud. Maintain control of where your where your backend runs while Rivet handles the maintenance.", + "Deploy the Rivet Engine on your preferred cloud infrastructure with FoundationDB backend. Maintain full control while leveraging enterprise-scale actor orchestration.", buttonText: "Contact Us", buttonHref: "/sales", }, @@ -40,7 +40,7 @@ export const RivetCloudSection = () => { icon: faGithub, title: "Self-Hosted", description: - "Run Rivet on your own infrastructure. Completely open-source and free to use.", + "Run the open-source Rivet Engine on your own infrastructure with PostgreSQL or FoundationDB. Complete control over your actor orchestration platform.", buttonText: "View on GitHub", buttonHref: "https://github.com/rivet-gg/rivet", }, @@ -50,11 +50,10 @@ export const RivetCloudSection = () => {

- Rivet on Any Cloud + Scale Your Rivet Engine Anywhere

- Choose the deployment model that works best for your - organization + Enterprise-scale actor orchestration with FoundationDB, connecting to your applications on any platform

diff --git a/site/src/app/(v2)/(marketing)/cloud/ServerlessLimitationsSection.tsx b/site/src/app/(v2)/(marketing)/cloud/ServerlessLimitationsSection.tsx index 2c258190ce..4065ab9c02 100644 --- a/site/src/app/(v2)/(marketing)/cloud/ServerlessLimitationsSection.tsx +++ b/site/src/app/(v2)/(marketing)/cloud/ServerlessLimitationsSection.tsx @@ -73,11 +73,10 @@ export const ServerlessLimitationsSection = () => {

- Serverless without limitations + Rivet without limitations

- All the benefits of serverless with none of the traditional - constraints + All the benefits of Rivet on a managed cloud with custom features

diff --git a/site/src/app/(v2)/(marketing)/cloud/page.tsx b/site/src/app/(v2)/(marketing)/cloud/page.tsx index 8f97c15dcf..6c5584a7d3 100644 --- a/site/src/app/(v2)/(marketing)/cloud/page.tsx +++ b/site/src/app/(v2)/(marketing)/cloud/page.tsx @@ -1,12 +1,10 @@ +import { ArchitectureSection } from "./ArchitectureSection"; import { CommandCenterSection } from "./CommandCenterSection"; -import { CommunitySection } from "./CommunitySection"; -import { CtaButtons } from "./CtaButtons"; import { CtaSection } from "./CtaSection"; -import { FeaturesGrid } from "./FeaturesGrid"; -import { PerformanceSection } from "./PerformanceSection"; -import { PowerfulPrimitivesSection } from "./PowerfulPrimitivesSection"; -import { RivetCloudSection } from "./RivetCloudSection"; import { ServerlessLimitationsSection } from "./ServerlessLimitationsSection"; +import { Icon, faArrowRight } from "@rivet-gg/icons"; +import { MarketingButton } from "./MarketingButton"; +import Link from "next/link"; export default function IndexPage() { // an empty div at the top of the page is a workaround for a bug in Next.js that causes the page to jump when the user navigates to it @@ -21,15 +19,11 @@ export default function IndexPage() { {/* Content */}
- - + - {/**/} {/**/} - -
@@ -74,23 +68,10 @@ const Hero = () => { {/* Title */}

- The open-source serverless cloud + Scale and manage your Actors on Rivet Cloud

- Easily deploy & scale{" "} - AI agents,{" "} - - complex workloads - - , and{" "} - backends — - all on a frictionless cloud. - {/* - Open-source - &{" "} - - self-hostable - .*/} + Rivet cloud scales actors that connect seamlessly to your applications deployed anywhere

@@ -98,7 +79,18 @@ const Hero = () => { {/* CTA */}
- +
+ + Get Started + + + Documentation + + +
{/*
diff --git a/site/src/app/(v2)/(marketing)/pricing/PricingPageClient.tsx b/site/src/app/(v2)/(marketing)/pricing/PricingPageClient.tsx index f17fdee97e..8f8622ebf9 100644 --- a/site/src/app/(v2)/(marketing)/pricing/PricingPageClient.tsx +++ b/site/src/app/(v2)/(marketing)/pricing/PricingPageClient.tsx @@ -1,26 +1,33 @@ "use client"; import { CheckIcon, MinusIcon, PlusIcon } from "@heroicons/react/16/solid"; import { MobilePricingTabs } from "./components/MobilePricingTabs"; +import { useState } from "react"; +import clsx from "clsx"; +import Link from "next/link"; +import { Icon, faArrowRight } from "@rivet-gg/icons"; const tiers = [ { - name: "Community", + name: "Free", priceMonthly: "$0", href: "https://hub.rivet.gg/", highlights: [ - { description: "$5 Free credits", icon: "gift" }, + { description: "5GB Limit", icon: "check" }, + { description: "5 Million Writes /mo Limit", icon: "check" }, + { description: "200 Million Reads /mo Limit", icon: "check" }, + { description: "100GB Egress Limit", icon: "check" }, { description: "Community Support", icon: "check" }, ], }, - { - name: "Pro", - priceMonthly: "$20", - href: "https://hub.rivet.gg/", + { + name: "Hobby", + priceMonthly: "$5", + href: "https://hub.rivet.gg/", highlights: [ - { description: "$20 Free credits /mo", icon: "gift" }, - { description: "Everything in Community", icon: "check" }, - { description: "No Usage Limits", icon: "check" }, - { description: "Unlimited Seats", icon: "check" }, + { description: "25 Billion Reads /mo included", icon: "gift" }, + { description: "50 Million Writes /mo included", icon: "gift" }, + { description: "5GB Storage included", icon: "gift" }, + { description: "1TB Egress included", icon: "gift" }, { description: "Email Support", icon: "check" }, ], }, @@ -29,42 +36,69 @@ const tiers = [ priceMonthly: "$200", href: "https://hub.rivet.gg/", highlights: [ - { description: "$200 Free credits /mo", icon: "gift" }, - { description: "Everything in Pro", icon: "check" }, - { description: "Dedicated Hardware", icon: "check" }, - { description: "Custom Regions", icon: "check" }, + { description: "25 Billion Reads /mo included", icon: "gift" }, + { description: "50 Million Writes /mo included", icon: "gift" }, + { description: "5GB Storage included", icon: "gift" }, + { description: "1TB Egress included", icon: "gift" }, + { description: "MFA", icon: "check" }, { description: "Slack Support", icon: "check" }, ], }, - { - name: "Enterprise", - priceMonthly: "Custom", - href: "/sales", - highlights: [ - { description: "Everything in Team", icon: "check" }, - { description: "Priority Support", icon: "check" }, - { description: "SLA", icon: "check" }, - { description: "OIDC SSO provider", icon: "check" }, - { description: "On-Prem Deployment", icon: "check" }, - { - description: "Custom Storage Reads, Writes, and Stored Data", - icon: "check", - }, - { description: "Custom Log Retention", icon: "check" }, - ], - }, + { + name: "Enterprise", + priceMonthly: "Custom", + href: "/sales", + highlights: [ + { description: "Everything in Team", icon: "check" }, + { description: "Priority Support", icon: "check" }, + { description: "SLA", icon: "check" }, + { description: "OIDC SSO provider", icon: "check" }, + { description: "On-Prem Deployment", icon: "check" }, + { description: "Audit Logs", icon: "check" }, + { description: "Custom Roles", icon: "check" }, + { description: "Device Tracking", icon: "check" }, + { description: "Volume Pricing", icon: "check" }, + ], + }, ]; const sections = [ { - name: "Build Retention", + name: "Usage Included", features: [ { - name: "Build Retention", + name: "Storage", + tiers: { + Free: "5GB", + Hobby: "5GB included", + Team: "5GB included", + Enterprise: "Custom", + }, + }, + { + name: "Reads per month", + tiers: { + Free: "200 Million", + Hobby: "25 Billion included", + Team: "25 Billion included", + Enterprise: "Custom", + }, + }, + { + name: "Writes per month", tiers: { - Community: "3 Days", - Pro: "30 Days", - Team: "6 Months", + Free: "5 Million", + Hobby: "50 Million included", + Team: "50 Million included", + Enterprise: "Custom", + }, + }, + { + name: "Egress", + tiers: { + Free: "100GB Limit", + Hobby: "1TB included", + Team: "1TB included", Enterprise: "Custom", }, }, @@ -76,8 +110,8 @@ const sections = [ { name: "Support", tiers: { - Community: "Community Support", - Pro: "Email", + Free: "Community Support", + Hobby: "Email", Team: "Slack & Email", Enterprise: "Slack & Email", }, @@ -85,80 +119,69 @@ const sections = [ ], }, { - name: "Infrastructure Credits", + name: "Security & Enterprise", features: [ { - name: "Credits", + name: "MFA", tiers: { - Community: "$5.00 Credit", - Pro: "$20.00 Credits /Mo", - Team: "$200.00 Credits /Mo", - Enterprise: "Custom", + Free: false, + Hobby: false, + Team: true, + Enterprise: true, }, }, - ], - }, - { - name: "Regions", - features: [ { - name: "Regions", + name: "Custom Regions", tiers: { - Community: "2 Regions", - Pro: "8 Regions", - Team: "Custom", - Enterprise: "Custom", + Free: false, + Hobby: false, + Team: false, + Enterprise: true, }, }, - ], - }, - { - name: "Seat Limits", - features: [ { - name: "Seat Limits", + name: "SLA", tiers: { - Community: "2 Seats", - Pro: "Unlimited", - Team: "Unlimited", - Enterprise: "Unlimited", + Free: false, + Hobby: false, + Team: false, + Enterprise: true, }, }, - ], - }, - { - name: "Security", - features: [ { - name: "SSL Management", + name: "Audit Logs", tiers: { - Community: true, - Pro: true, - Team: true, + Free: false, + Hobby: false, + Team: false, Enterprise: true, }, }, { - name: "DDoS Mitigation", + name: "Custom Roles", tiers: { - Community: true, - Pro: true, - Team: true, + Free: false, + Hobby: false, + Team: false, + Enterprise: true, + }, + }, + { + name: "Device Tracking", + tiers: { + Free: false, + Hobby: false, + Team: false, Enterprise: true, }, }, - ], - }, - { - name: "Usage Limit", - features: [ { - name: "Usage Limit", + name: "Volume Pricing", tiers: { - Community: "Limited", - Pro: "Unlimited", - Team: "Unlimited", - Enterprise: "Unlimited", + Free: false, + Hobby: false, + Team: false, + Enterprise: true, }, }, ], @@ -288,8 +311,8 @@ function PricingTiers() { {tier.name}{" "} plan -
- {(tier.name === "Pro" || +
+ {(tier.name === "Hobby" || tier.name === "Team") && (
From @@ -305,14 +328,14 @@ function PricingTiers() { )}
- {(tier.name === "Pro" || + {(tier.name === "Hobby" || tier.name === "Team") && (
+ Usage
)}
-
+

Includes:

@@ -361,48 +384,220 @@ function PricingTiers() { ); } +function UsagePricingTable() { + return ( +
+
+

+ Usage Pricing +

+

+ Pay only for what you use beyond the included allowances +

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ Resource + + Price +
+ Storage + + $0.40 per GB-month +
+ Reads + + $1.00 per billion reads +
+ Writes + + $1.00 per million writes +
+ Egress + + $0.15 per GB +
+
+
+
+ ); +} + +interface ToggleProps { + options: { value: string; label: string }[]; + activeValue: string; + onChange: (value: string) => void; +} + +function Toggle({ options, activeValue, onChange }: ToggleProps) { + return ( +
+
+ {options.map((option) => ( + + ))} +
+
+ ); +} + export default function PricingPageClient() { + const [activeTab, setActiveTab] = useState("cloud"); + + const toggleOptions = [ + { value: "cloud", label: "Cloud" }, + { value: "selfhost", label: "Self-Host" }, + ]; + return (
-
+
-
-

- Rivet Cloud Pricing +
+

+ Rivet {activeTab === "cloud" ? "Cloud Pricing" : "Self-Host"}

-

- Start with free and scale as you grow. +

+ {activeTab === "cloud" + ? "Start with free and scale as you grow." + : "Deploy Rivet on your own infrastructure." + }

+
+ +

- + {activeTab === "cloud" ? ( + <> +
+ + +
-
- - -
+
+ + +
+ + ) : ( +
+
+

+ Self-Hosted Rivet +

+

+ Deploy Rivet on your own infrastructure with full control and no usage limits. +

+ +
+
+

Open Source

+

+ Rivet is open source and free to use on your own infrastructure. +

+
    +
  • + + No usage limits +
  • +
  • + + Full source code access +
  • +
  • + + Community support +
  • +
+ +
+ +
+

Enterprise Support

+

+ Get professional support and additional features for your self-hosted deployment. +

+
    +
  • + + Priority support +
  • +
  • + + SLA guarantees +
  • +
  • + + Custom integrations +
  • +
+ +
+
+
+
+ )}
); } + + diff --git a/site/src/app/(v2)/(marketing)/pricing/components/MobilePricingTabs.tsx b/site/src/app/(v2)/(marketing)/pricing/components/MobilePricingTabs.tsx index ce68c47527..64bdd2b0ab 100644 --- a/site/src/app/(v2)/(marketing)/pricing/components/MobilePricingTabs.tsx +++ b/site/src/app/(v2)/(marketing)/pricing/components/MobilePricingTabs.tsx @@ -6,80 +6,144 @@ import { Fragment } from "react"; const tiers = [ { - name: "Starter", - href: "#", + name: "Free", + href: "https://hub.rivet.gg/", }, { - name: "Growth", - href: "#", + name: "Hobby", + href: "https://hub.rivet.gg/", }, { - name: "Scale", - href: "#", + name: "Team", + href: "https://hub.rivet.gg/", + }, + { + name: "Enterprise", + href: "/sales", }, ]; const sections = [ { - name: "Features", + name: "Usage Included", features: [ { - name: "Edge content delivery", - tiers: { Starter: true, Growth: true, Scale: true }, + name: "Storage", + tiers: { + Free: "5GB", + Hobby: "5GB included", + Team: "5GB included", + Enterprise: "Custom", + }, }, { - name: "Custom domains", - tiers: { Starter: "1", Growth: "3", Scale: "Unlimited" }, + name: "Reads per month", + tiers: { + Free: "200 Million", + Hobby: "25 Billion included", + Team: "25 Billion included", + Enterprise: "Custom", + }, }, { - name: "Team members", - tiers: { Starter: "3", Growth: "20", Scale: "Unlimited" }, + name: "Writes per month", + tiers: { + Free: "5 Million", + Hobby: "50 Million included", + Team: "50 Million included", + Enterprise: "Custom", + }, }, { - name: "Single sign-on (SSO)", - tiers: { Starter: false, Growth: false, Scale: true }, + name: "Egress", + tiers: { + Free: "100GB Limit", + Hobby: "1TB included", + Team: "1TB included", + Enterprise: "Custom", + }, }, ], }, { - name: "Reporting", + name: "Support", features: [ { - name: "Advanced analytics", - tiers: { Starter: true, Growth: true, Scale: true }, + name: "Support", + tiers: { + Free: "Community Support", + Hobby: "Email", + Team: "Slack & Email", + Enterprise: "Slack & Email", + }, }, + ], + }, + { + name: "Security & Enterprise", + features: [ { - name: "Basic reports", - tiers: { Starter: false, Growth: true, Scale: true }, + name: "MFA", + tiers: { + Free: false, + Hobby: false, + Team: true, + Enterprise: true, + }, }, { - name: "Professional reports", - tiers: { Starter: false, Growth: false, Scale: true }, + name: "Custom Regions", + tiers: { + Free: false, + Hobby: false, + Team: false, + Enterprise: true, + }, }, { - name: "Custom report builder", - tiers: { Starter: false, Growth: false, Scale: true }, + name: "SLA", + tiers: { + Free: false, + Hobby: false, + Team: false, + Enterprise: true, + }, }, - ], - }, - { - name: "Support", - features: [ { - name: "24/7 online support", - tiers: { Starter: true, Growth: true, Scale: true }, + name: "Audit Logs", + tiers: { + Free: false, + Hobby: false, + Team: false, + Enterprise: true, + }, }, { - name: "Quarterly workshops", - tiers: { Starter: false, Growth: true, Scale: true }, + name: "Custom Roles", + tiers: { + Free: false, + Hobby: false, + Team: false, + Enterprise: true, + }, }, { - name: "Priority phone support", - tiers: { Starter: false, Growth: false, Scale: true }, + name: "Device Tracking", + tiers: { + Free: false, + Hobby: false, + Team: false, + Enterprise: true, + }, }, { - name: "1:1 onboarding tour", - tiers: { Starter: false, Growth: false, Scale: true }, + name: "Volume Pricing", + tiers: { + Free: false, + Hobby: false, + Team: false, + Enterprise: true, + }, }, ], }, @@ -87,13 +151,76 @@ const sections = [ export function MobilePricingTabs() { return ( -
+
+ {/* Usage Pricing Table for Mobile */} +
+
+

+ Usage Pricing +

+

+ Pay only for what you use beyond the included allowances +

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ Resource + + Price +
+ Storage + + $0.40 per GB-month +
+ Reads + + $1.00 per billion reads +
+ Writes + + $1.00 per million writes +
+ Egress + + $0.15 per GB +
+
+
+
+ {tiers.map((tier) => ( {tier.name} @@ -104,22 +231,22 @@ export function MobilePricingTabs() { Get started {sections.map((section) => ( -
+
{section.name}
{section.features.map((feature) => (
-
+
{feature.name}
@@ -145,7 +272,7 @@ export function MobilePricingTabs() { ) : (