TrademarkTrademarkTrademarkTrademark
New
Teams, roles and billing

Launch your product, not another boilerplate

Stack is a production-ready Next.js app built on Once UI. Auth, dashboard, billing, docs and a marketing site, already wired together and on brand.
Surfaces

Pick the pages your product needs

Stack is composed from surfaces. Take the ones you need and leave the rest out of your codebase entirely.
The Stack dashboard
The Stack dashboard

Dashboard

The signed-in app: analytics, users, roles, billing and settings.
The Stack dashboard on a phone
The Stack dashboard on a phone

Mobile

The same app on iOS and Android.
The Stack docs
The Stack docs

Docs

Guides, search and a changelog for your product.
The Stack storefront
The Stack storefront

Store

Products, collections and a cart, ready for your catalog.
Compose

Pick the parts. Get only those.

Stack is ten surfaces and a handful of slices. The CLI writes a project with the ones you choose, adds what they depend on, and leaves everything else out of your codebase.

Surfaces

The pages and apps people use.
Landing
Dashboard
Docs
API
Store
AI chat
Editor
Journal
Agency
Spotlight

Optional slices

Capabilities you choose. The rest come with the surfaces that need them.
Billing
Email
Languages
Shopify
Fourthwall
$npx @once-ui-system/cli create my-app --surfaces landing,dashboard,docs
In your project
LandingMarketing site, blog, pricing and legal pages
DashboardThe signed-in app under /app/[org]
DocsMDX docs with search, changelog and roadmap
AuthAdded for Teams
TeamsAdded for Dashboard
Every surface runs with no keys or environment variables, on demo data, until you add your own.
What's inside

The parts every product rebuilds, built once

Each of these is weeks of work on its own. In Stack they share one design system, one database and one set of conventions.
Auth and teams

Accounts, workspaces and roles, already safe

People sign up, create a workspace and invite their team. Every org-scoped query passes through one set of guards, so one tenant never reads another's rows.
Email sign-up, sign-in and password reset on Supabase
Owner, admin and member roles, checked on the server
Invitations by link, or by email when you add Resend
Rate-limited auth routes and gated pages
Row-level security on, with access only through the guards
In the code
/authSign in, sign up, reset
/app/[org]/usersTeam and roles
/invite/[token]Join a workspace
src/lib/orgs/server.tsThe tenant guards
Billing

Plans that gate features, not just a checkout button

Plans live in one JSON file. A script creates them in Stripe, the webhook mirrors each subscription into your database, and one call tells a page whether the workspace's plan includes a feature.
Checkout and the customer portal per workspace
Metered prices for usage you report
requireOrgFeature() to gate a page or route by plan
Mock mode without a Stripe key, so the whole flow runs locally
In the code
src/resources/plans.jsonThe plan catalog
/app/[org]/billingPlan, checkout, portal
/api/webhooks/stripeSubscription sync
Sell an API

One list of operations, four ways to call it

Describe an operation once. Stack serves it as REST, as a tool on an MCP server that agents connect to, as an OpenAPI spec and as a reference page, with keys and quotas around it.
Hashed API keys owned by workspaces
A usage ledger and quotas from the workspace's plan
Usage reported to Stripe through the billing slice
Runs on an in-process store until you add Supabase
In the code
/api/v1REST
/api/mcpMCP server for agents
/api/openapi.jsonOpenAPI spec
/developers/referenceReference page
Store

A storefront that works before you pick a provider

Products, collections, search, variants and a cart run from files on disk. Add the Shopify or Fourthwall slice and the same pages read that shop and hand checkout to it.
Collections, search and variant pickers
Cart in the browser, or the provider's cart behind one route
Hosted checkout, so payments, tax and shipping stay with the shop
Falls back to the local catalog when no shop is set
In the code
/storeCatalog and search
/store/[slug]Product page
/store/collections/[handle]Collection
/api/store/cartProvider cart
AI chat

An agent interface, not a text box

Chats with projects and pins, agent steps that stream in as the model works, and widgets in the reply: task lists, charts, tables and sources. It runs on a scripted model until you add a key.
Claude joins the model picker when you set ANTHROPIC_API_KEY
Replies can render Once UI components, checked before they show
Each chat wears its own theme, mascot included
Same-origin, signed-in and rate-limited when it talks to a model
In the code
/chatThe chat app
src/lib/chat/model.tsSwap in any model
src/lib/chat/store.tsSwap in any storage
Docs and content

Words people read, kept as files in your repo

Docs, a blog and long-form pages are MDX on disk. No CMS to pay for and no content API: the tree is read at build time and every page gets its own metadata.
Docs sidebar to any depth, search and a command palette
Changelog and roadmap timelines
A blog, a journal of books, a studio site and a link-in-bio page
Metadata and generated Open Graph images on every page
In the code
/docsDocumentation
/docs/changelogWhat shipped
/blogPosts
/journal, /studio, /spotlightMore content surfaces
Web, mobile and desktop

The same app in the App Store and on the desktop

Native shells for iOS, Android, macOS and Windows load your deployed site. Auth and API routes stay on your server, and every deploy reaches the apps without a new release.
Capacitor for iOS and Android
Electron for macOS, Windows and Linux
A bundled offline page when there is no connection
In the code
capacitor.config.tsMobile shell
desktop/main.mjsDesktop shell
electron-builder.ymlInstallers
Built for agents

Your coding agent knows the codebase on day one

Stack is written to be extended by Claude Code, Cursor and the rest. They start from a map of your project, not a search through it.
AGENTS.mdgenerated for landing, dashboard
## Map ### Dashboard & product shell - **Signed-in shell:** `src/app/(product)/layout.tsx` with `Sidebar.tsx` and `Header.tsx` (org switcher). - Routes: `/app`, `/app/[org]`, `/app/[org]/users` … ### Supabase auth - `isSupabaseConfigured()` switches demo mode (no env vars: nothing gated, sample data). - Schema: `supabase/init.sql`. ### Organizations & multi-tenancy - Guards in `src/lib/orgs/server.ts`; every org-scoped query goes through them. - Routes: `/invite/[token]`

A map written for your project

The CLI writes AGENTS.md and CLAUDE.md for the surfaces you picked: where each feature lives, its routes, and the env vars that switch it on. Nothing about parts you left out.

Components an agent can look up

Once UI ships a description of every component and its props inside the package, so an agent checks the real API instead of guessing from memory.

A check before it ships

once-ui-validate-ai-code reads the files an agent wrote and flags raw HTML, misspelled props and values outside the design tokens.
Pricing

One plan, the whole Stack

Stack is included in Once UI Pro, one yearly plan.
Once UI Pro
Stack, with every surface
Commercial use of Stack and the Once UI templates
Regular updates
Support on Discord
Once UI Core and the 100+ blocks stay free and MIT for everyone.
FAQ

Frequently asked questions

Something else? Write to support@once-ui.com

Start building today

Free to start. Your app, your code, your brand.
© 2026 Once UI // All rights reserved