Product

A product is one configuration of a product line: the features it selects, the version of each, and the few things that are its own, such as its name, settings and base templates. It is a thin shell, and almost all of its behaviour comes from its features.

What it holds

<product>/
├── pyproject.toml          the features, their versions, the model's DOI, settings
├── src/<product>/          config.py, base templates, static files
├── docker/                 Compose files and Dockerfiles, development and production
├── deploy/                 the deploy bundle, written by product:build
└── splent.manifest.json    the state of each feature in this product

pyproject.toml is the heart of it. features, features_dev and features_prod list the features, [tool.splent.spl_model] pins the model, [tool.splent.config] holds the product’s settings and [tool.splent.runtime] pins the framework and the CLI its image installs.

How it relates to the other layers

  • Product line. The selection must satisfy the model, and is checked before it is applied.
  • Features. The product pins a version of each, or uses a checkout while you develop it.
  • Framework. The product’s only code at startup is a call to create_splent_app, and the framework does the rest.
  • Infrastructure. Its docker/ files define the containers, and product:build turns them into the deploy bundle.

Commands

Command What it does
product:create Creates a product of a line
product:configure Chooses its features, checked against the model
product:resolve Fetches and links the pinned features
product:validate Checks the configuration and the contracts
product:env Writes its environment from every layer’s settings

Go deeper


Back to top

splent. Distributed by an LGPL license v3. Contact us: drorganvidez@us.es