Skip to content

vnext-template is a standardized project template for building vNext Platform applications, providing predefined structure, validation rules, and build commands to ensure consistency and compliance across implementations.

License

Notifications You must be signed in to change notification settings

burgan-tech/vnext-template

Repository files navigation

{domainName}

A structured template package for vNext workflow components with domain-based architecture.

πŸ“¦ Installation

Create a new project with your domain name:

npx @burgan-tech/vnext-template <domain-name>

Example

npx @burgan-tech/vnext-template user-management

This will create a new directory with your domain name, copy all template files, replace {domainName} instances, and install dependencies automatically.

Install specific version

npx @burgan-tech/vnext-template@<version> <domain-name>

Example:

npx @burgan-tech/vnext-template@1.0.0 user-management

Alternative: Install as dependency

npm install @burgan-tech/vnext-template
npm run setup <domain-name>

Or install specific version:

npm install @burgan-tech/vnext-template@<version>
npm run setup <domain-name>

Or use environment variable:

DOMAIN_NAME=user-management npm install @burgan-tech/vnext-template@<version>

πŸš€ Usage

After installation, your project structure will be:

<domain-name>/
β”œβ”€β”€ Extensions/
β”œβ”€β”€ Functions/
β”œβ”€β”€ Schemas/
β”œβ”€β”€ Tasks/
β”œβ”€β”€ Views/
└── Workflows/

Access components in code

const vnextTemplate = require('@burgan-tech/vnext-template');

// Get domain configuration
const config = vnextTemplate.getDomainConfig();

// Get paths configuration
const paths = vnextTemplate.getPathsConfig();

// Get all schemas
const schemas = vnextTemplate.getSchemas();

// Get all workflows
const workflows = vnextTemplate.getWorkflows();

// Get all tasks
const tasks = vnextTemplate.getTasks();

// Get component path for a specific type
const schemasPath = vnextTemplate.getComponentPath('schemas');

Available methods

Method Description
getDomainConfig() Get domain configuration from vnext.config.json
getPathsConfig() Get paths configuration with defaults
getSchemas() Get all schemas
getWorkflows() Get all workflows
getTasks() Get all tasks
getViews() Get all views
getFunctions() Get all functions
getExtensions() Get all extensions
getDomainName() Get domain directory name
getAvailableTypes() Get list of available component types
getComponentPath(type) Get full path for a component type

βš™οΈ Configuration

The vnext.config.json file allows you to customize paths and exports:

{
  "domain": "my-domain",
  "paths": {
    "componentsRoot": "my-domain",
    "schemas": "Schemas",
    "workflows": "Workflows",
    "tasks": "Tasks",
    "views": "Views",
    "functions": "Functions",
    "extensions": "Extensions"
  },
  "exports": {
    "schemas": ["schema1.json", "schema2.json"],
    "workflows": ["workflow1.json"],
    "tasks": [],
    "views": [],
    "functions": [],
    "extensions": []
  }
}

Path Configuration

You can customize component directory names:

{
  "paths": {
    "componentsRoot": "src",
    "workflows": "Flows",
    "schemas": "Models"
  }
}

βœ… Validation

Validate your project structure and schemas:

npm run validate

This will check:

  • Package.json structure and content
  • Main entry point functionality
  • vnext.config.json validation
  • Domain directory structure
  • JSON file syntax validation
  • Schema validation using @burgan-tech/vnext-schema
  • Module functionality
  • Semantic versioning compliance

Validation Output

The validation provides detailed output with:

  • βœ… Passed validations
  • ❌ Failed validations with file paths and line numbers
  • πŸ“Š Summary statistics
  • πŸ“‹ Failed files summary for easy navigation

πŸ—οΈ Build

Build your domain package for deployment or cross-domain usage:

# Runtime build (default) - Complete domain structure
npm run build

# Reference build - Only exported components
npm run build:reference

# Runtime build explicitly
npm run build:runtime

Build Options

npm run build -- [options]

Options:
  -o, --output <dir>     Output directory (default: dist)
  -t, --type <type>      Build type: reference or runtime (default: runtime)
  --skip-validation      Skip validation during build
  -h, --help             Show help message

Build Types

Type Description Use Case
runtime Complete domain structure with all files Engine deployment
reference Only exported components from vnext.config.json Cross-domain usage

Examples

# Build to custom directory
npm run build -- -o my-build

# Reference build to custom directory
npm run build -- -t reference -o packages/ref

# Skip validation for faster builds
npm run build -- --skip-validation

Build Output Structure

Runtime Build:

dist/
β”œβ”€β”€ <domain>/
β”‚   β”œβ”€β”€ Extensions/
β”‚   β”œβ”€β”€ Functions/
β”‚   β”œβ”€β”€ Schemas/
β”‚   β”œβ”€β”€ Tasks/
β”‚   β”œβ”€β”€ Views/
β”‚   └── Workflows/
β”œβ”€β”€ vnext.config.json
β”œβ”€β”€ package.json
β”œβ”€β”€ README.md
└── LICENSE

Reference Build:

dist/
β”œβ”€β”€ <domain>/
β”‚   β”œβ”€β”€ Extensions/     # Only exported files
β”‚   β”œβ”€β”€ Functions/      # Only exported files
β”‚   β”œβ”€β”€ Schemas/        # Only exported files
β”‚   β”œβ”€β”€ Tasks/          # Only exported files
β”‚   β”œβ”€β”€ Views/          # Only exported files
β”‚   └── Workflows/      # Only exported files
β”œβ”€β”€ vnext.config.json
β”œβ”€β”€ package.json
β”œβ”€β”€ README.md
└── LICENSE

πŸ“œ Available Scripts

Script Description
npm run validate Validate project structure and schemas
npm run build Build runtime package to dist/
npm run build:runtime Build runtime package explicitly
npm run build:reference Build reference package with exports only
npm run setup <name> Setup domain with given name
npm run sync-schema Sync schema version from dependencies
npm test Run tests

πŸ“„ License

MIT

About

vnext-template is a standardized project template for building vNext Platform applications, providing predefined structure, validation rules, and build commands to ensure consistency and compliance across implementations.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •