Skip to main content

Nova Config Reference

The nova.config.json file lives at the monorepo root and drives every Nova command. This page documents each section and its fields.

Use the nova utility initialize wizard to create or update this file interactively.

project

Describes the project identity, display info, and build metadata.

FieldTypeDescription
name.slugstringURL-safe project identifier. Letters, numbers, hyphens, and underscores only (max 214 chars).
name.titlestringHuman-readable project name for display.
description.shortstringOne-line summary used in package.json and meta tags.
description.longstringExtended description for README and documentation pages.
keywordsstring[]Search keywords (max 50 characters each).
legalNamestringLegal entity name used in LICENSE and copyright notices.
pronounsstringControls first-person wording in generated files: "business" (we/our) or "individual" (I/my).
platformsstring[]Supported platforms for bug report dropdowns (e.g., "nodejs", "macos", "linux", "windows").
startingYearnumberYear the project began (integer >= 1970). Used in LICENSE copyright ranges.
licensestringSPDX license identifier (e.g., "MIT", "Apache-2.0", "Proprietary").
{
  "project": {
    "name": {
      "slug": "example",
      "title": "Example"
    },
    "description": {
      "short": "A sample Nova project.",
      "long": "Extended description for documentation and README files."
    },
    "keywords": ["example", "nova"],
    "legalName": "Example Author LLC",
    "pronouns": "business",
    "platforms": ["nodejs", "macos", "linux", "windows"],
    "startingYear": 2025,
    "license": "MIT"
  }
}

entities

An array of people and organizations associated with the project.

FieldTypeDescription
namestringDisplay name.
emailstringContact email (must contain @ and a domain).
urlstringProfile or organization URL (http:// or https://).
rolesstring[]One or more of "author", "contributor", "supporter".
{
  "entities": [
    {
      "name": "Example Author",
      "email": "[email protected]",
      "url": "https://example.com/author",
      "roles": ["author"]
    },
    {
      "name": "Example Collaborator",
      "email": "[email protected]",
      "url": "https://example.com/collaborator",
      "roles": ["contributor", "supporter"]
    }
  ]
}

emails

Canonical contact addresses referenced by tools and metadata.

FieldTypeDescription
bugsstringEmail for bug reports and support.
{
  "emails": {
    "bugs": "[email protected]"
  }
}

workflows

An array of GitHub Actions workflow entries consumed by nova generate github workflows. Each entry maps to one generated .yml file.

FieldTypeDescription
templatestringName of a bundled workflow template: "publish", "lock-inactive-issues", or "check-sponsor-gated-issues".
suffixstringLabel appended to the output filename and workflow name. Required when the same template appears more than once.
triggersstring[]Trigger names from the template's triggers/ folder. Use an empty array for templates with baked-in triggers.
depends-onstring[]Optional. Workflow references as "{template}-{suffix}". Required for workflow-run-* triggers.
scopesstring[]Optional. Workspace paths (keys from workspaces) that the check / build step should filter to.
targetsobject[]Optional. Publish destinations for the publish template. Each target has type, workingDir, and needs.
settingsobjectOptional. Key-value pairs that remap secret / variable names or supply values for literal template variables.

Target Fields

Each entry in the targets array pins one publish destination to a workspace.

FieldTypeDescription
typestringOne of: "npm", "github-packages", "docker-hub", "ghcr", "cloudflare-pages-docusaurus", "github-pages-docusaurus", "aws-amplify-nextjs", "vercel-nextjs".
workingDirstringPath to the workspace that owns the target (e.g., "./packages/nova").
needsstring[]Optional. Working directories of other same-type targets that must finish publishing before this one starts.

Variable Formats

Each template declares variables with one of three formats. The format determines how values in settings are used:

FormatWhat happens
secretProduces ${{ secrets.NAME }} in the YAML. A setting value remaps the secret name.
varProduces ${{ vars.NAME }} in the YAML. A setting value remaps the variable name.
literalReplaces the placeholder with the exact string from settings. Must be provided or the entry is skipped.

Output Filenames

Generated files follow the pattern nova-{template}-{suffix}.yml under .github/workflows/.

{
  "workflows": [
    {
      "template": "lock-inactive-issues",
      "suffix": "project",
      "triggers": ["schedule-weekly"]
    },
    {
      "template": "publish",
      "suffix": "project",
      "triggers": ["release"],
      "scopes": [
        "./packages/core",
        "./packages/preset",
        "./apps/docs"
      ],
      "targets": [
        {
          "type": "npm",
          "workingDir": "./packages/core"
        },
        {
          "type": "npm",
          "workingDir": "./packages/preset",
          "needs": ["./packages/core"]
        },
        {
          "type": "cloudflare-pages-docusaurus",
          "workingDir": "./apps/docs"
        }
      ],
      "settings": {
        "CLOUDFLARE_ACCOUNT_ID": "CLOUDFLARE_ACCOUNT_ID",
        "CLOUDFLARE_API_TOKEN": "CLOUDFLARE_API_TOKEN",
        "CLOUDFLARE_PROJECT_NAME": "CLOUDFLARE_PROJECT_NAME",
        "NPM_TOKEN": "NPM_TOKEN",
        "ROOT_WORKING_DIR": "./"
      }
    }
  ]
}

urls

Canonical links with validation and normalization.

FieldTypeDescription
homepagestringProject homepage URL.
repositorystringSource repository URL. Accepts git:, git+https:, git+ssh:, git+http:, http://, https://.
bugsstringIssue tracker URL.
licensestringLicense file URL.
logostringProject logo URL.
documentationstringDocumentation site URL.
githubstringGitHub repository URL.
npmstringnpm package page URL.
fundSourcesstring[]Funding URLs (entered comma-separated in the wizard, saved as a list).
privacyPolicystringPrivacy policy URL. Appears in generated GitHub issue templates.
termsOfUsestringTerms of use URL. Appears in generated GitHub issue templates.
{
  "urls": {
    "homepage": "https://example.com",
    "repository": "https://github.com/example/example-project",
    "bugs": "https://github.com/example/example-project/issues",
    "license": "https://github.com/example/example-project/blob/main/LICENSE",
    "logo": "https://example.com/assets/logo.svg",
    "documentation": "https://docs.example.com/project",
    "github": "https://github.com/example/example-project",
    "npm": "https://www.npmjs.com/package/example-project",
    "fundSources": [
      "https://github.com/sponsors/example",
      "https://opencollective.com/example"
    ],
    "privacyPolicy": "https://example.com/privacy",
    "termsOfUse": "https://example.com/terms"
  }
}

workspaces

A map of relative paths to workspace definitions. Each key is a path from the monorepo root (e.g., "./", "./apps/docs", "./packages/nova").

FieldTypeDescription
namestringPackage name for package.json.
rolestringWorkspace role: "project", "docs", "config", "app", "package", "tool", or "template". See Workspace Rules for details.
policystringWorkspace policy: "freezable", "trackable", or "distributable". See Workspace Rules for details.
recipesobjectOptional. Enabled recipes and their settings, keyed by recipe name. Each value is a tuple: [enabled] or [enabled, settings].
{
  "workspaces": {
    "./": {
      "name": "example-project",
      "role": "project",
      "policy": "freezable",
      "recipes": {
        "cleanup": [true, { "removeUnknownKeys": true, "reorderKeys": true }],
        "normalize-dependencies": [true, { "pinDependencyVersions": true }],
        "sync-identity": [true],
        "sync-ownership": [true]
      }
    },
    "./packages/nova": {
      "name": "@company/example",
      "role": "package",
      "policy": "distributable",
      "recipes": {
        "cleanup": [true, { "removeUnknownKeys": true, "reorderKeys": true }],
        "sync-identity": [true, { "description": true, "keywords": true }],
        "sync-ownership": [true, { "homepage": true, "bugs": true, "author": true }]
      }
    }
  }
}