npm create clovie@latest
Static or full server
Start with a static site and graduate to a full Express-backed server without switching frameworks. Flip type: 'static' to type: 'server' and your templates, styles, and assets carry over. Add API endpoints, middleware, and server-side rendering when you need them — not before.
Zero config, then grow
Drop your views, scripts, and styles into conventional directories and Clovie auto-detects everything. No webpack config, no plugin maze. When you need control, clovie.config.js is a single flat object — readable in one screen.
Template agnostic
Bring your own engine — Handlebars, Nunjucks, Pug, Mustache, or a plain function. Pass a string name or a (template, data) => html callback and you're done. No lock-in.
Data-driven pages
Generate hundreds of pages from an array or an async API call at build time. Define a route with a repeat function and Clovie outputs one page per item — blog posts, product listings, category archives, whatever the data demands.
Why Clovie?
- Fast builds — esbuild-powered JS bundling and SCSS compilation with incremental caching.
- Live reload — WebSocket-based hot reload in development. No browser extension needed.
- Composable server layers — split APIs across modules with
defineRoutes/defineApifactories and resolve services viauseContext. - Asset pipeline included — SCSS and JavaScript bundling out of the box. Minification, sitemap generation, and image optimization when you're ready to ship.
- AI-ready — ships a
.cursor/skills/clovie.mdcfile so AI coding assistants understand your project out of the box. Runclovie skillsto set it up.
Get started
Static site
npx clovie create my-site
cd my-site && npm install && npm run dev
Full-stack app
npx clovie create my-app --template server
cd my-app && npm install && npm run dev
Minimal config
This is all you need to start a static site:
// clovie.config.js
export default {
data: {
title: 'My Site'
}
};
Clovie auto-detects views/, scripts/, styles/, and assets/. Add keys to the config as your project grows.