Blank

Empty React + Vite + Tailwind shell. Start here when you want custom UI without an opinion getting in the way.

The minimal web app — React + Vite + the framework's wiring + nothing else. Use it when you want full design control without inheriting the design tokens, layouts, or compositions other templates ship. Template id: frontend-blank.

Scaffold

voltro create-project acme --web=frontend-blank
voltro add-app marketing --template=frontend-blank --to acme

What ships

apps/acme/web/                          # dir named by the app, not the template
├── app.config.ts                       # type:web, port:<allocated>
├── package.json
├── tsconfig.json
└── src/
    └── pages/
        ├── layout.tsx                  # just renders {children}
        └── index.tsx                   # an index page

That's it. No @voltro/ui-shadcn dependency, no design tokens, no globals.css. Add @import "tailwindcss" in a src/globals.css (and the mandatory @source glob) yourself when you want Tailwind.

When to use blank vs. landing

You want… Pick
A marketing landing surface frontend-landing
A documentation site frontend-docs
To bring your own brand / UI from scratch frontend-blank

If you're going to override every default + replace every composition, scaffold frontend-blank instead of fighting frontend-landing's defaults.

When to NOT use blank

If your final product is going to be a:

frontend-blank is the right pick when neither opinionated frontend template matches your shape, AND you want to keep the dependency footprint minimal.

What you have to do yourself

  • Layout shelllayout.tsx just renders {children}. Add a header, footer, etc.
  • Styling — no globals.css ships. Add @import "tailwindcss" + the @source glob yourself, or bring any other CSS approach.
  • Component library — bring your own or pnpm add @voltro/ui-shadcn later for the kit's components.
  • Theme toggle — none included. Add via @voltro/ui-shadcn's ThemeToggle or roll your own.

Pairs well with

  • Any api template — frontend-blank doesn't presuppose one. The wiring is the same as the other web templates.
  • @voltro/ui-shadcn — the kit can be added incrementally. Import primitives one at a time (the styling page covers the mandatory Tailwind wiring).

Anti-patterns

  • Starting with frontend-blank to "save bundle size" then importing every kit primitive. If you end up wanting most of the kit, scaffold frontend-landing — the styling is already set up.
  • Treating frontend-blank as the "canonical" template. It's the LEAST opinionated. The other frontend templates are built on the same primitives plus a layer of curated design.