Base
Scaffold a base monorepo project with workspaces configuration, ready for adding framework workspaces. This command is optional: use it when you want the project root now but do not want to choose an app or documentation framework yet.
| What you want now | Command to start with | Result |
|---|---|---|
| Only an empty Nova monorepo root | nova scaffold starter base | Root, apps/, and packages/ |
| A root and the first app together | nova scaffold app <framework> | Root plus the app workspace |
| A root and documentation together | nova scaffold docs docusaurus | Root plus the docs workspace |
You do not need to run starter base before either direct app or docs command.
Why Use This Command?
- Creates the root
package.jsonwithworkspacesconfigured forapps/*andpackages/*so you can add workspaces immediately. - Creates a root
turbo.jsonand standarddev,prod,check,build,deploy, andcleanscript groups. Each top-level script delegates to its adjacentname:workspacesTurbo step throughnova utility run-scripts. - Pins the npm and Node.js toolchain used by current Nova projects and records explicit denials for optional dependency install scripts used by the built-in scaffolds.
- Generates a baseline
nova.config.jsonso recipes and utilities have a valid config to work with from the start. - Installs
@cbnventures/novaas a dev dependency so thenovaCLI is available inside the project without a global install.
Requirements
- Node.js runtime — Use any Node.js LTS release.
- Start outside a project — Run the command where Nova cannot find a
package.json. The selected output may already contain unrelated files, but Nova refuses to replacepackage.jsonornova.config.json.
Usage
Options
| Flag | Description |
|---|---|
-d, --dry-run | Run without writing any files. |
--name <name> | Project name. |
--non-interactive | Require every answer as a flag and do not open prompts. |
--output <dir> | Output directory. |
Output Structure
{project-slug}/
├── package.json
├── nova.config.json
├── turbo.json
├── apps/
└── packages/
How It Works
Interactive Wizard
When run without flags, the command walks you through an interactive wizard:
- Project name — Enter a slug for your monorepo (e.g.
my-app). - Where should the project be created? — Choose between creating a new directory or building in the current working directory.
- Output directory — If creating a new directory, confirm the path (default:
./{project-name}). - Run generators — Optionally run project-level generators (
.editorconfig,.gitignore,LICENSE, etc.).
Non-Interactive Mode
Agents and automation should add --non-interactive and provide both answers. Nova refuses incomplete commands before writing and skips the optional post-scaffold generator menu.
Safety Checks
Before creating any file, Nova validates the project slug and checks the three root files it owns: package.json, nova.config.json, and turbo.json. If any target file already exists, the command stops and lists the conflict. --dry-run performs the same validation and reports the exact root path without writing.
Next Steps
After scaffolding, enter the new monorepo and add as many workspaces as the project needs. Each scaffold command detects the existing workspace root, creates only the requested workspace, and adds it to the same nova.config.json. Running another scaffold command later preserves the workspaces that are already registered.
For example, these commands add a Docusaurus documentation site and a Cloudflare Worker to one project:
You can mix any supported app and docs scaffolds this way. Run each command from the monorepo root, not from inside an existing workspace.
Once the workspaces are in place, run generators for project-level files like .editorconfig, .gitignore, and LICENSE.