Skip to main content

a tool that combines one or more templates and the user's answers to questions to generate a code project

Project description

Project Forge

Project Forge is an extensible and composable project scaffolding tool. Developers can quickly generate new projects by only answering a few questions.

  • In current project scaffolding, variations in templates magnify complexity.
  • Maintainability increases as complexity increases.

A tool that lets platform teams pave a golden path and still allows developers to customize when necessary

Features

  • Create new projects from a composition of several patterns.
  • Compose individual files using template blocks.
  • Coming soon. Add new capabilities to an existing project by applying a pattern.
  • Coming soon. Update a generated project when its patterns are updated.

Introduction

Project Forge treats project building like building a sandwich. A sandwich is a combination of ingredients. The recipe for a sandwich lists the required ingredients and the assembly instructions. A person can easily alter the recipe by adding, removing, or substituting ingredients.

Other scaffolding tools treat project building like using a vending machine. Your choices are limited by what is available in the vending machine.

Composable project templates

  • patterns can contain templates that extend other pattern templates
  • developers can customize an existing pattern's definition and still use the original's templates

Project Forge's key feature is that it is designed to generate projects from multiple, smaller templates called patterns.

  • Special knowledge, special patterns. Let people with the proper expertise write specific patterns. For example, DevOps people create and update Helm or Terraform patterns, which developers can include in compositions that generate projects.
  • Loose coupling. Each pattern has its lifecycle for changes and updates independent of compositions that include it. Patterns are treated as installable libraries with version constraints.
  • Increased flexibility using simpler patterns. Other scaffolding solutions must include all possible options in the template. This requires complex template logic which increases template maintenance difficulty. Using compositions to specify the combination of simple patterns gives developers more flexibility while making pattern maintainers' jobs more manageable.

Building a project like a sandwich

A pattern is like a sandwich ingredient. It is the smallest individual part. You can render a pattern by itself, like eating a sandwich ingredient.

Pattern questions are like known ways of preparing sandwich ingredients. Just like a hamburger is an ingredient in a sandwich, "Doneness" with options of well, medium, and raw is a pattern question.

A composition is a recipe. It includes configuration and instructions only.

Overlays and tasks are like recipe instructions. Each overlay references a pattern and how to configure it for the composition, like "Hamburger, well done." A task performs an action during project generation, like "stir for 3 minutes."

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

project_forge-0.5.1.tar.gz (376.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

project_forge-0.5.1-py3-none-any.whl (42.9 kB view details)

Uploaded Python 3

File details

Details for the file project_forge-0.5.1.tar.gz.

File metadata

  • Download URL: project_forge-0.5.1.tar.gz
  • Upload date:
  • Size: 376.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for project_forge-0.5.1.tar.gz
Algorithm Hash digest
SHA256 8146672c2989450806393c4351a205e1a467c8bac3292ee589f6a6c3c19dd8d6
MD5 657500162f993fbe938e7de58a4d2daa
BLAKE2b-256 13f70d9ee9f76ae4510513628a19d5fa7d58535e985e65bf6a5f356685cb4c61

See more details on using hashes here.

Provenance

The following attestation bundles were made for project_forge-0.5.1.tar.gz:

Publisher: build-python.yaml on callowayproject/project-forge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file project_forge-0.5.1-py3-none-any.whl.

File metadata

  • Download URL: project_forge-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 42.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for project_forge-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2dac6c3d13a270bd41b6db450e2114cbdd030c643d071c9a5200fdf72dd167ae
MD5 e5051d4fc52e42a5d6be1d17822998f8
BLAKE2b-256 c667562452fb23c95ff95e853e40d34874b8e75c1dac9d555ea56750c0f3d814

See more details on using hashes here.

Provenance

The following attestation bundles were made for project_forge-0.5.1-py3-none-any.whl:

Publisher: build-python.yaml on callowayproject/project-forge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page