Skip to content
supastack
Browse documentation

For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /docs/desktop/ship-in-5-minutes.md (or send Accept: text/markdown).

Run desktop in 5 minutes

Prepare Rust and your operating system's build tools, start a reachable Web backend, launch the Tauri window and verify tray, shortcut and local task behavior.

1. Install the general and native tools

Complete Before you start, clone your Desktop repository or All Platforms monorepo, and open it in the editor. Desktop is a native window around the same Web app. It does not include a second implementation of accounts or chat. The five-minute launch begins after dependencies and native tools are installed; first-time installation and Rust compilation often take longer.

On Windows install Microsoft C++ Build Tools using the Tauri prerequisites link below. In its installer select Desktop development with C++, keep the Windows SDK selected and complete installation. Ensure Microsoft Edge WebView2 Runtime is installed. Install Rust from rustup.rs using rustup-init.exe; keep the default MSVC toolchain. Reopen your terminal after installation.

On macOS, run xcode-select --install in Terminal and complete the command-line tools dialog if they are not installed. Install Rust using the macOS command from rustup.rs. On Linux, follow the Tauri prerequisite page for your exact distribution's WebKitGTK, compiler, tray and system-library packages, then install Rust. Linux package names vary; do not run another distribution's commands.

Open a terminal at the repository root and run the version checks below. Both rustc and cargo must print versions; cargo is Rust's build tool. If either is missing, finish the installation and reopen the terminal before continuing.

rustc --version
cargo --version
corepack pnpm install

2. Start or choose the Web backend

If your checkout contains apps/web, follow the Web tutorial, create apps/web/.env.local, run the Web server in a separate terminal using the command below and leave it running. First check http://localhost:3000 in your browser. You can use the /dashboard demonstration without a database; real sign-in at /auth needs migrated Postgres.

A Desktop-only checkout does not contain apps/web. Use the separately running Web backend supplied for your product, and open its URL in your browser to confirm it works. The desktop shell cannot create the backend for you. Do not try the Web command below if that folder is absent. Step 3 shows how to choose a provided backend address.

# Only when this checkout contains apps/web:
corepack pnpm --filter @supastack/web dev

3. Launch the desktop window

Open a second terminal at the repository root while the backend stays running. For the default local backend at http://localhost:3000, run the first command below. Cargo may download libraries and compile the shell; wait for the Supastack window to open. Compiler messages during the first build are expected.

For a provided backend, replace https://app.example.com in the appropriate operating-system block below with its actual URL. Run only your platform's block. SUPASTACK_APP_URL is a terminal environment setting, read when the native process starts. Putting it only in root .env will not configure the shell. Keep the backend URL free of embedded usernames or passwords.

In the All Platforms monorepo, corepack pnpm dev:desktop can start Web and Tauri together once pnpm is on PATH as explained in Before you start. The filtered command below also works in Desktop-only checkouts, with the backend running separately.

# Default local backend (all operating systems):
corepack pnpm --filter @supastack/desktop dev

# Custom backend — Windows PowerShell only:
$env:SUPASTACK_APP_URL = 'https://app.example.com'
corepack pnpm --filter @supastack/desktop dev

# Custom backend — macOS / Linux only:
SUPASTACK_APP_URL=https://app.example.com corepack pnpm --filter @supastack/desktop dev

4. Check the window, tray and shortcut

Success means the window displays the same homepage as your backend in the browser. The desktop window has no browser address bar. To open the credential-free demonstration, quit the shell using the tray's Quit action, then run your operating system's block below in the desktop terminal while the Web server stays running. This loads /dashboard directly; follow the Web tutorial's local task steps there. Real account sign-in uses the backend's database, just as in the browser.

Close the window using its close button: the app should hide to the tray rather than exit. Click the Supastack tray icon or press Ctrl + Shift + Space on Windows/Linux, or Command + Shift + Space on macOS, to show it again. Use the tray's Quit action to exit. To end development completely, also press Ctrl + C in the desktop terminal and then stop the backend terminal.

If the window is blank or shows a connection problem, first open the configured URL in a browser. Start the backend or correct the URL, then restart Tauri. If Rust reports linker.exe not found, install the Windows C++ workload and reopen the terminal. If Linux reports a missing system library, follow the distribution-specific prerequisites. If the hotkey is already taken, use the tray and follow Native behavior to change it.

This launches a local development window; it does not produce a signed installer or publish an app. Follow Desktop distribution for installer builds, platform signing and testing on another machine. Windows compilation does not verify macOS or Linux behavior.

# Open the local demo — Windows PowerShell only:
$env:SUPASTACK_APP_URL = 'http://localhost:3000/dashboard'
corepack pnpm --filter @supastack/desktop dev

# Open the local demo — macOS / Linux only:
SUPASTACK_APP_URL=http://localhost:3000/dashboard corepack pnpm --filter @supastack/desktop dev

Use the local app URL

Without an override, Tauri loads http://localhost:3000. Set SUPASTACK_APP_URL only if your local Next.js app uses another reachable HTTP(S) origin. Credential-bearing or non-web URLs are rejected.

The development bundle identifier and release configuration are not production-ready settings. Keep the release preflight and platform signing for the separate release guide.

Frequently asked questions

14 questions

What is supastack?

supastack is a modular foundation for building AI-powered SaaS products. It brings together common infrastructure so you can focus on product-specific features.

Does it support web and mobile?

Yes. supastack includes Next.js and Expo apps as starting points for web and mobile experiences.

What authentication is included?

Better Auth covers email OTP, magic-link, and social sign-in; email/password stays available at the API layer and through the Auth.js credentials engine for products that need it. Personal workspaces are provisioned with the account so product records stay scoped from day one.

How does it support AI?

supastack includes configurable multi-provider AI, usage tracking, budgets, and encrypted bring-your-own-key support.

How are subscriptions handled?

For products built on the kit, Stripe billing, subscriptions, and entitlements form the paid-access foundation. Provider secrets stay server-only.

Where does my product-specific code live?

Product-specific features remain in a separate codebase while the product configures and integrates supastack’s foundation modules.

How does supastack pricing work?

The kit is a one-time purchase with lifetime updates: One Platform at $249 (temporary launch price, $100 off the regular $349) — your pick of Next.js (Web), Expo (iOS & Android), or Tauri (macOS & Windows Desktop) — or the All Platforms Bundle at $499 (temporary launch price, $100 off the regular $599) with every platform and the full monorepo, plus $75 per extra developer seat. No kit subscription. Checkout on this site delivers your license key by email, with repository access via GitHub invite.

How do workspaces scope my data?

User-owned records are scoped by workspaceId. Identity, entitlements, AI usage, billing events, and audit entries stay inside the personal workspace boundary.

How do background jobs work?

Trigger.dev is the explicit job runtime. The JobRunner contract only promises enqueue, status, and cancel—workflow semantics stay Trigger.dev-specific and explicit.

How is email different from outreach?

Transactional email covers product workflows such as completion notices. Cold outreach and campaigns are product concerns outside this kit’s email module.

How do mobile purchases work?

Mobile includes native purchases and restore through RevenueCat, with access verified by your server. Configure the store accounts and complete device testing before release. Web billing remains separate.

Where do AI provider keys live?

Bring-your-own-key credentials are encrypted and stay server-only. Keys are redacted from logs; usage and budgets remain visible at the workspace level.

Which payment methods does checkout accept?

The Stripe-hosted checkout accepts cards and can also offer Alipay and WeChat Pay once those wallets are enabled on the Stripe account — handy for buyers in China. Wallet authorizations confirm asynchronously, so the license page updates as soon as the payment clears.

Can I get a refund?

After you've got access to the repository, supastack is yours forever, so it cannot be refunded. But rest assured, you get the complete source code with lifetime updates to build and ship unlimited products for yourself or clients. You just cannot resell the code or redistribute the repository as a starter kit or template.

EN
Theme