Everything a full-stack app needs, none of it required upfront.

Start with the runtime and a route registry. Pull in themed components, a server, and production tooling as the app actually grows into them.

Four packages you'll actually reach for, in order

Each one builds on the last — adding a server later doesn't mean rewriting the routes and components you already have.

  1. 01Build

    Start with a component

    Core runtime, CLI scaffolding, and Vite Plus.

    @askrjs/askr · @askrjs/cli · @askrjs/vite
  2. 02Compose

    Shape the application

    State, routes, data, headless components, themes, schemas, and an optional server.

    @askrjs/ui · @askrjs/themes · @askrjs/schema · @askrjs/server
  3. 03Deliver

    Choose when HTML happens

    Single Page Application, Server Side Rendering with hydration, Static Site Generation, or full-stack delivery.

    SPA · SSR + hydration · SSG
  4. 04Operate

    Ship the production site

    Static files or Node output, with clear security, localization, probe, and telemetry seams.

    @askrjs/node · @askrjs/auth · @askrjs/i18n · @askrjs/otel

You don't have to decide the shape of the app up front

A static marketing site and a full-stack dashboard can share the same route registry and component code. What changes is which packages you add and which adapter renders the output — not how you write routes or components.

That means a project that starts as static HTML doesn't hit a wall the day it needs a server: you add @askrjs/server and a route policy, not a second framework.

Explore first-party examples

Next: how state, routes, and data are actually owned.