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, WebSockets, cron schedulerapps/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, Prisma schema, docker-compose.yml
  frontend/   # React SPA (web + Electron)
  admin/      # Operator app, a placeholder home until a starter fills it
  mobile/     # Expo app (expo-router, NativeWind)
  extension/  # Browser extension (Vite, Tailwind)
packages/     # Shared code (enums, types, configs)
nx.json
pnpm-workspace.yaml
stack.json    # apps, paths, installed packs, deploy records

Installing a starter pack fills apps/admin with its login and screens, and adds 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/admin, apps/mobile, apps/extensionAdmin login, users, orgs, dashboard rows
Prisma + Kysely + Valkey + S3 client + schedulerAuth, orgs, invitations, RBAC, flags
Error middleware, websockets, HyperFetch SDK, Paraglide messagesBilling, teams, notifications, AI chat
Docker Compose, CI, agent rules and skillsPack-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.
cronerIn-process cron scheduler. Jobs run once per fire across instances via Postgres advisory locks.
pg-bossTask queue on Postgres. Retries with backoff, transactional enqueue, no extra service to run.

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.
ParaglideCompiled message catalogs (messages/en.json). Packs merge their copy in.
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
TypeScript 6Typecheck on every app, and the type bridge between backend and clients.
Vite 8Bundler and dev server for web, admin, extension, and Electron, on Rolldown.
Nx 23Monorepo task orchestration, so build, test, and lint run in the right order.
pnpm 12Package manager with workspace support.
oxlint / oxfmtLinter and formatter, Rust-based and fast enough to run on every save.
Vitest 5Unit and integration tests on every side, vitest-native for mobile.
Docker ComposeLocal Postgres, Valkey, and RustFS 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.
  • Background jobs. A cron scheduler that boots with the API. The job list ships empty; packs append entries through the manifest, and your own jobs go in apps/backend/src/jobs/index.ts.
  • Task queue. Slow work (file parsing, model calls, batch sends) runs as tasks on Postgres, with retries and a concurrency cap. It runs inside the API process, and it costs nothing until a pack registers a queue.
  • Translations. Paraglide message catalogs in the frontend, admin, mobile, and backend. Add a locale file and every pack string is translatable.
  • A dashboard shell. Sidebar navigation, settings screens, and the layout patterns features plug into.
  • Local infrastructure. Postgres, Valkey, and RustFS 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. Here is where each one stands in Hype Stack today:

CapabilityStatus
Product analytics (PostHog and similar)Not included. Add your own client if you need funnels.
Feature flagsIn the two SaaS starters: typed flags defined in code, per-organization overrides, an admin tab. Not in the free starter. No percentage rollouts.
Background jobs / cron runnersIn the template: an in-process cron scheduler plus a task queue on Postgres. No broker and no worker to run.
API rate limitingNot included in generated apps. See Security.
i18n frameworkParaglide is wired everywhere and every pack ships its copy as messages. Only English is included; you add the other locale files.

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