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.6.0.tar.gz (400.2 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.6.0-py3-none-any.whl (43.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: project_forge-0.6.0.tar.gz
  • Upload date:
  • Size: 400.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.2

File hashes

Hashes for project_forge-0.6.0.tar.gz
Algorithm Hash digest
SHA256 392d04733e0d0f8465ec2b293b31fff1fb1aafb756641d78f3f9e24c451e1bd7
MD5 7a0e85521f138c9266b0695304ad1c22
BLAKE2b-256 79eb4fc519426cdafd2c5ee55de708378d40ce5ab41fd42f3a5f847d46269bdb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for project_forge-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2f3a7b2b2c616a7016e05dea392127153c679bad51d181516c9c627b558aa437
MD5 610edaeee8ebcc3e385dc35792deea42
BLAKE2b-256 40be2a83aa4d11d64050ee17d97e57226fa731e8643a20c35f6637fbe63cec49

See more details on using hashes here.

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