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 acmeWhat 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 pageThat'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:
- Marketing landing → scaffold
frontend-landing. - Docs site → scaffold
frontend-docs.
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 shell —
layout.tsxjust renders{children}. Add a header, footer, etc. - Styling — no
globals.cssships. Add@import "tailwindcss"+ the@sourceglob yourself, or bring any other CSS approach. - Component library — bring your own or
pnpm add @voltro/ui-shadcnlater for the kit's components. - Theme toggle — none included. Add via
@voltro/ui-shadcn'sThemeToggleor roll your own.
Pairs well with
- Any api template —
frontend-blankdoesn'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-blankto "save bundle size" then importing every kit primitive. If you end up wanting most of the kit, scaffoldfrontend-landing— the styling is already set up. - Treating
frontend-blankas the "canonical" template. It's the LEAST opinionated. The other frontend templates are built on the same primitives plus a layer of curated design.