Hype StackHypeStack
Free, and public on GitHub

Your product.
Web and desktop.

The part of the product your customers see, built as a website and a desktop app from one codebase. Onboarding, settings, and team screens are already there, so the first thing you build is the thing you charge for.

Your appmy-app.com/settings/members
The starter's members table, open in a browser
Your appdesktop
The starter's onboarding flow, running as a desktop app

one codebase, website and desktop app

Already built

Months of screens, already in the repo.

Real captures from the SaaS starter: onboarding, profile, organization settings, members, roles, and invitations. Screens like these are usually the first quarter of a build, and customers never pay extra for them.

Onboardingmy-app.com/onboarding
The starter's onboarding flow, where a new user picks or creates an organization
Create a workspacemy-app.com/onboarding
Creating a new organization during onboarding
Profilemy-app.com/settings/profile
The profile settings page from the starter
Organizationmy-app.com/settings/organization
Organization settings: name, logo, and the danger zone
Received invitationsmy-app.com/settings/invitations
Invitations a user has received from other organizations
Onboardingmy-app.com/onboarding
The starter's onboarding flow, where a new user picks or creates an organization
Create a workspacemy-app.com/onboarding
Creating a new organization during onboarding
Profilemy-app.com/settings/profile
The profile settings page from the starter
Organizationmy-app.com/settings/organization
Organization settings: name, logo, and the danger zone
Received invitationsmy-app.com/settings/invitations
Invitations a user has received from other organizations
Onboardingmy-app.com/onboarding
The starter's onboarding flow, where a new user picks or creates an organization
Create a workspacemy-app.com/onboarding
Creating a new organization during onboarding
Profilemy-app.com/settings/profile
The profile settings page from the starter
Organizationmy-app.com/settings/organization
Organization settings: name, logo, and the danger zone
Received invitationsmy-app.com/settings/invitations
Invitations a user has received from other organizations
Onboardingmy-app.com/onboarding
The starter's onboarding flow, where a new user picks or creates an organization
Create a workspacemy-app.com/onboarding
Creating a new organization during onboarding
Profilemy-app.com/settings/profile
The profile settings page from the starter
Organizationmy-app.com/settings/organization
Organization settings: name, logo, and the danger zone
Received invitationsmy-app.com/settings/invitations
Invitations a user has received from other organizations
Membersmy-app.com/settings/members
The members table with roles and row actions
Invite a membermy-app.com/settings/members
The invite-a-member dialog with a role attached
Change a rolemy-app.com/settings/members
Changing a member's role from the members table
Member actionsmy-app.com/settings/members
The row actions available on a member
Sent invitationsmy-app.com/settings/members
Invitations the organization has sent and not yet had accepted
Membersmy-app.com/settings/members
The members table with roles and row actions
Invite a membermy-app.com/settings/members
The invite-a-member dialog with a role attached
Change a rolemy-app.com/settings/members
Changing a member's role from the members table
Member actionsmy-app.com/settings/members
The row actions available on a member
Sent invitationsmy-app.com/settings/members
Invitations the organization has sent and not yet had accepted
Membersmy-app.com/settings/members
The members table with roles and row actions
Invite a membermy-app.com/settings/members
The invite-a-member dialog with a role attached
Change a rolemy-app.com/settings/members
Changing a member's role from the members table
Member actionsmy-app.com/settings/members
The row actions available on a member
Sent invitationsmy-app.com/settings/members
Invitations the organization has sent and not yet had accepted
Membersmy-app.com/settings/members
The members table with roles and row actions
Invite a membermy-app.com/settings/members
The invite-a-member dialog with a role attached
Change a rolemy-app.com/settings/members
Changing a member's role from the members table
Member actionsmy-app.com/settings/members
The row actions available on a member
Sent invitationsmy-app.com/settings/members
Invitations the organization has sent and not yet had accepted
Switch anytime

Website, search-friendly site, or desktop app? Decide later.

The choice that stalls every kickoff is reversible here. One codebase ships three ways, so you decide when you actually know what customers want, and change your mind without a rewrite.

Need SEO mid-development?

Google reads every page

Pages render on the server, so crawlers and link previews see real content instead of an empty shell. Flip it on the week SEO starts to matter.

pnpm start:ssr

same routes, same components, same types. switching back is one command too.

my-app.com · html arrives renderedseo ready
liverendered on the server

Website and desktop to start. Mobile and the browser when you want them.

Customers open it in a browser or install it on their computer, and it is the same product either way. When someone asks for it on their phone or in their toolbar, that is a page in this repo, not a second team.

Website

any browser, any host

Desktop app

mac, windows, linux installers

Mobile app

iOS and Android

see it

Browser extension

Chrome, Edge, Firefox

see it

same screens · same brand · same data

  • 3+ months

    onboarding
    members
    invites
    settings

    Of customer-facing screens, already built

    Onboarding, members, invitations, and settings. The screens every product needs and no customer pays extra for.

  • 3

    websitessrdesktop
    one codebase

    Ways to ship, from one codebase

    A website, a server-rendered site, or a desktop app. Same code, your pick, and you can change it later.

  • 100%

    everything in your repo

    no platform, no export

    Of the source lands in your repo

    No platform, no fees, nothing hosted by us. Walk away any time and keep everything.

What you get

What it does for the business, and where to check.

Six things the application gives you, in plain language. The line at the bottom of every card is where your developer goes to confirm it. The whole repo is public, so nothing here asks for trust.

  • Customers can sign up and bring their team on day one

    Onboarding, profile, organization settings, members, roles, and invitations are finished screens, not tickets. The first thing you build is the thing you charge for.

    Lives inapps/frontend/src/features
  • It runs where your customers already are

    The same product ships as a website and as a desktop installer for Mac, Windows, and Linux. Nobody starts a second project to get on the desktop.

    Builds withbuild:web · make:app
  • It looks like your brand after editing one file

    Colors, radius, fonts, light and dark mode. Change the tokens once and every screen follows, including the ones a pack adds later.

    Themed byassets/styles.css
  • It speaks your customers' language

    Every piece of text lives in one file per language. Adding Spanish is a translation job, not a development job.

    Translated inmessages/<locale>.json
  • Nobody waits for a page

    Routes load lazily and bundles are tuned, so the app feels fast on a phone with bad reception, not only on a developer's laptop.

    Bundled byVite 8 · React 19
  • A broken screen cannot ship by accident

    Every call the app makes is checked against the backend while the developer types. A field that no longer exists is a red underline, not a blank page for a customer.

    Checked againstthe typed API
The business case

Months of work you don't pay for

What the starter changes for the person paying: time, money, and the risk of a rebuild.

time

3+ months

done for youyour product

The screens a build spends its first months on, already in the repo and already tested.

money

$0

to start building

The application is free and public. You pay for feature packs later, or never.

hiring

Vite

bundler

oxc

linter

tsgo

type checker

pnpm

packages

Nx

monorepo

TanStack

router

Ordinary, popular tools. The next developer you hire has used every one of them.

risk

  • Every screen in your repo
  • Ordinary React, no framework of ours
  • Nothing hosted by us

Walk away any time. There is nothing to migrate off.

Deploy with one command.

One command ships everything: web apps and services on your own hosting, the mobile app through EAS, the extension to the stores. No dashboards, no YAML.

  • Creates every service on your host
  • Wires the URLs, secrets, and CORS between them
  • Runs your migrations once the API is up
  • Then offers the mobile app (EAS) and the extension stores
Fly.ioRailwayyour account, either way

launch sequence

one command

  • Applicationlive
  • Admin Panellive
  • APIlive
  • Mobilelive
  • Extensionlive
  • Serviceslive
https://my-app.com0 / 6 live
Being straight with you

What the application does not include.

Better you read it here than find out on day two.

Auth, billing, notifications, collaboration

Feature packs. One command installs each one, screens included.

Browse feature packs

A finished look

The application ships a neutral theme. Templates bring a skin.

Browse templates
The details

Show this part to your developer.

Ordinary, popular tools, current versions, pinned. Vetting this takes an afternoon, not a discovery phase.

3
ways to ship one codebase
56
editable shadcn components
1
file to retheme everything
0
hand-written API clients
UI
React 19 with the React Compiler, TanStack Router and Start, Tailwind 4.
Components
56 shadcn/ui components in the repo, wired to the theme tokens.
Data
HyperFetch SDK inferred from the backend routes. No hand-written client.
Targets
build:web for static hosting, build:ssr on Nitro, make:app on Electron 43.
Languages
Paraglide messages, one JSON file per locale, typed at compile time.
Toolchain
Vite 8, oxlint, oxfmt, TypeScript 7 native, Vitest 4, Playwright e2e.
Everything in the box

What the application already handles.

The plumbing below is finished before you write a line. All of it is checkable in the public repo.

Desktop app shell

One shell that runs in the browser and as a native window, title bar and all. Ship a downloadable app without a second codebase to maintain.

TypeScriptVite

SSR, CSR, or desktop

One codebase builds a static site, a server-rendered app on Nitro, or an Electron desktop app. Change targets without a rewrite.

ViteTanStack

Type-safe API calls

Typed end to end with HyperFetch and Hono. Change a route and the frontend stops compiling. You catch bugs while typing, not from a user report.

HyperFetchHonoTypeScript

Type-safe WebSockets

Every realtime event is typed end to end through HyperFetch. No guessing payload shapes, no stale event names slipping into prod.

HyperFetchHonoTypeScript

Realtime ready on day one

Auth-aware WebSockets already wired. Live updates and collab features become an afternoon of work, not a quarter.

HyperFetchHono

Monorepo that scales

Nx with affected-only builds and shared packages. Two apps, one repo, and you never juggle versions or copy config again.

Nx

See it running

Templates are curated project starters built on this stack: a layout, feature packs, a custom theme, and bonus pages. The previews below are recordings of the real apps.

Two ways to install features

Same features underneath, different starting point. Either command resolves what the packs depend on, copies the source into your repository, and merges the database schema.

Ready-made

Take a template

A landing page, a design system, a themed layout, and the features already wired into it. Rebrand it, put your product in the middle, ship.

Browse templates
From scratch

$ hype-stack compose

AuthBillingTeamsAI

Compose your own design

Your design and your choices, without rebuilding auth, billing, or notifications. Tick the packs you want and the CLI wires them into the open-source starter.

Browse packs

Questions, answered

Yes. Everything lands as plain source in your repository: frontend, backend, admin, database schema. There is no runtime dependency on us and nothing phones home.

Take the free one. Decide nothing else today.

Clone it, run it, click through the screens. Packs come later, or never.

free / public / your repo