Creating a project type
Create a project type in Facets from an existing project, an existing project type, or a Git repository, in the console or by asking a Praxis agent.
A project type is created from one of three sources:
- An existing project: its blueprint becomes the base for the new type.
- An existing project type: derive a variant from a type you already have.
- A custom Git repository: base the type on a template you maintain.
Create one in the Facets console, or ask a Praxis agent to do it. To pull in an official Facets project type instead of authoring your own, see Import a project type.
Create a project type
Using prompt
Create a project type called checkout-aws from my existing project "checkout".Say which of the three sources to use, an existing project, an existing project type, or a Git repository, and the agent creates the type for you.
- Go to Ops Center and open Project Type, then click Create Project Type.
- Basic information: enter a Name and an optional Description.
- Source configuration: choose where the type starts from.
- Existing Project: pick a project whose blueprint becomes the base. Its Git configuration is inherited.
- Existing Project Type: pick another type to derive from. Its Git configuration is inherited from that type's underlying project.
- Custom Git Linking: point at a repository directly (Git account, repository URL, Git ref, and relative path).
- Infrastructure settings: choose the IaC Tool (Terraform or OpenTofu) and its version. Projects of this type can only use modules that tool supports.
- Click Create.
Interactive walkthrough
Once the type exists, map the modules projects of that type can use.
Prefer to define a project type as code? Import from your own definition covers the Praxis CLI path: a YAML definition, module uploads, and private repos.
Import from your own definition
Import a project type from a YAML definition you control with the Praxis CLI: the metadata format, uploading IaC modules, and importing from a private repository.
Modules
What a Facets module is, why it is shaped as an API, and the anatomy of a facets.yaml: types, spec, inputs, and outputs.