Skip to main content

Webstir Frontend Manifest

FieldDescription
versionSchema version. Always 1 for the initial rollout.
paths.workspaceAbsolute path to the workspace root sent from the CLI.
paths.src.rootsrc directory under the workspace.
paths.src.frontendsrc/frontend directory housing the app, pages, assets.
paths.src.appsrc/frontend/app directory for shared templates and scripts.
paths.src.pagessrc/frontend/pages directory containing page-specific assets.
paths.src.imagessrc/frontend/images source assets.
paths.src.fontssrc/frontend/fonts source assets.
paths.src.mediasrc/frontend/media source assets.
paths.build.rootbuild directory root for intermediate artifacts.
paths.build.frontendbuild/frontend directory containing compiled assets.
paths.build.appbuild/frontend/app directory mirrored from the source app template.
paths.build.pagesbuild/frontend/pages directory for page-level HTML/JS/CSS artifacts.
paths.build.imagesbuild/frontend/images directory with copied image assets.
paths.build.fontsbuild/frontend/fonts directory with copied font assets.
paths.build.mediabuild/frontend/media directory with copied media assets.
paths.dist.rootdist directory root for publish artifacts.
paths.dist.frontenddist/frontend directory containing production assets.
paths.dist.appdist/frontend/app directory for any frontend app-level artifacts.
paths.dist.pagesdist/frontend/pages directory containing page bundles.
paths.dist.imagesdist/frontend/images directory containing optimized images.
paths.dist.fontsdist/frontend/fonts directory containing fonts.
paths.dist.mediadist/frontend/media directory containing media assets.
features.htmlSecurityEnables CSP/SRI/transformers when true.
features.imageOptimizationEnables WebP/AVIF generation and sanitization when true.
features.precompressionEnables .br/.gz precompressed outputs when true.

Location

The manifest is emitted to:

.webstir/frontend-manifest.json

relative to the workspace root. The TypeScript CLI ensures the .webstir directory exists and writes the manifest atomically on every build, publish, or rebuild command.

Purpose

  • Serves as the only contract between the TypeScript frontend CLI and the .NET host now that the legacy C# asset handlers are removed.
  • Allows the .NET CLI to understand the folder structure without hardcoding string literals.
  • Enables feature toggles (image optimization, precompression, hardening) to flow from TypeScript into runtime services.
  • Synchronizes the schema between TypeScript and C# via generated typings that can be re-used by the bridge.

All runtime consumers (FrontendWorker, WebServer, manifest-aware tests) must resolve paths and feature flags through this file instead of the removed Engine.Pipelines utilities.

Validation

The manifest is validated through the shared zod schema located at Framework/Frontend/src/config/schema.ts. Any CLI integration should mirror these constraints to fail fast when the contract drifts.