Hype StackHypeStack

Technologies

Every dependency in the free Hype Stack starter earns its place. Here is what is inside, how the repository is laid out, and why each piece is there.

Runtime zones

RuntimeWhat runs thereExamples
BrowserReact UI, TanStack Router, HyperFetch client, theme tokensapps/frontend, apps/admin
Node.js APIHono server, Prisma, Kysely, Valkey, S3 client, WebSocketsapps/backend
ElectronSame frontend codebase in a native windowpnpm --filter @hype-stack/frontend start:app
MobileExpo app with expo-router and NativeWindapps/mobile
ExtensionBrowser extension UI, same theme tokensapps/extension
Local infraPostgres, Valkey, object storagedocker-compose.yml

Build and tooling (Vite, Nx, Prisma CLI, oxlint) run on Node at the workspace root. They are not part of the production request path.

Repository layout

The project is a pnpm monorepo with Nx orchestrating tasks:

apps/
  backend/    # Hono API server
  frontend/   # React SPA (web + Electron)
  mobile/     # Expo app (expo-router, NativeWind)
  extension/  # Browser extension (Vite, Tailwind)
packages/     # Shared code (types, utils, configs)
docker-compose.yml
nx.json
pnpm-workspace.yaml
stack.json    # apps, paths, and which packs are installed

Installing a SaaS starter pack adds another app, apps/admin, plus auth, organizations, permissions, and admin routes under apps/backend. Feature packs (billing, teams, notifications) add more files into those apps. Every app deploys independently and talks to the API over HTTP, so restarting the API does not rebuild the UI.

Free template vs pack-added

Present after createArrives with a starter / feature pack
apps/backend, apps/frontend, apps/mobile, apps/extensionapps/admin
Prisma + Kysely + Valkey + S3 clientAuth, orgs, invitations, RBAC
Error middleware, websockets, HyperFetch SDKStripe billing, teams, notifications
Docker Compose, CI, agent rulesPack-specific env vars and Prisma models

Backend

TechnologyRole
HonoHTTP framework. Fast, typed, runs on Node, Bun, Deno, and edge runtimes.
PrismaSchema definition, migrations, and seeding. Also what packs merge into.
KyselyTyped query builder for the joins, CTEs, and window functions Prisma cannot express cleanly.
PostgreSQLPrimary database.
Valkey (Redis)Caching and session storage.
ZodRequest validation, and the source of the types the frontend SDK reads.

Two query tools is deliberate. Prisma owns the schema and migrations, Kysely owns the hard queries, and each is used for what it is good at.

Frontend

TechnologyRole
React 19UI library.
TanStack RouterType-safe routing with typed params and plain-function loaders.
Tailwind CSSUtility-first styling driven by semantic theme tokens.
shadcn/uiAccessible component primitives, copied into the repo rather than installed.
HyperFetchData fetching, caching, and websockets through a generated typed SDK.
ElectronDesktop builds from the same codebase.

Mobile

TechnologyRole
ExpoThe mobile app runtime, with expo-router for file-based navigation.
NativeWindTailwind for React Native, reading the same theme tokens as the web apps.
EASExpo's build and submission service, driven by deploy mobile.

Local device testing uses Expo Go from sign.expo.dev. See Mobile.

Extension

TechnologyRole
ViteBuilds the extension per browser family (chrome and firefox targets).
Manifest V3The extension platform format the Chrome, Edge, and Firefox stores accept.
Tailwind CSSSame utility classes and semantic theme tokens as the frontend.
Store APIsdeploy extension publishes to the Chrome, Edge, and Firefox stores.

Both apps talk to the same Hono API through HyperFetch, and both are themed by the CLI's theme picker alongside the frontend and admin.

Tooling

TechnologyRole
ViteBundler and dev server for both web and Electron.
NxMonorepo task orchestration, so build, test, and lint run in the right order.
pnpmPackage manager with workspace support.
oxlintLinter, Rust-based and fast enough to run on every save.
VitestUnit and integration tests on both sides.
Docker ComposeLocal Postgres and Valkey in one command.
SentryError and performance monitoring, wired but optional.

How types travel

There is no code generation step to remember and no schema language to maintain. A Hono route validated with Zod exposes its input and output types, HyperFetch builds a typed SDK from the Hono app type (registerRoutes return type), and the frontend imports only that SDK. Add an endpoint on the backend and it is typed on the client immediately. Change a response shape and the frontend stops compiling.

Read end-to-end type safety for the full chain, and HTTP for how components call the SDK.

What the free starter already handles

These are wired before you install a single pack:

  • Error handling. Typed error classes and one central error middleware that formats responses, logs, and reports to Sentry. Route code throws and moves on.
  • Real-time. Websocket listeners and emitters through the same typed SDK, with reconnection handled.
  • Caching. Valkey reads and writes that degrade gracefully instead of failing a request.
  • A dashboard shell. Sidebar navigation, settings screens, and the layout patterns features plug into.
  • Local infrastructure. Postgres and Valkey in Docker Compose, plus Prisma migrations against them.
  • CI. Lint, typecheck, and test pipelines that understand the monorepo graph.

Paid provider integrations, including WorkOS auth and Stripe billing, are not part of the free starter. They arrive with the packs that need them.

What the template does not ship

These show up in some other SaaS kits. They are not in the Hype Stack template or packs today:

CapabilityStatus
Product analytics (PostHog and similar)Not included. Add your own client if you need funnels.
Feature flagsNot included.
Background jobs / cron runnersNot included as a pack. Use your host's scheduler or a queue you choose.
API rate limitingNot included in generated apps. See Security.
i18n frameworkNot a centered pack. String files may appear in starters for UI copy.

Documenting the absence matters so you do not expect dashboard toggles that are not there.

Sponsor open source

Every purchase and sponsorship funds my 8+ years of work on open source given freely to the community. It keeps the lights on, funds new packs, and keeps the ecosystem alive. Even a small tier means a lot. Thank you!

Sponsor on GitHub