https://github.com/callowayproject/project-forge
A tool that combines one or more templates and the user's answers to questions to generate a code project
https://github.com/callowayproject/project-forge
scaffolding
Last synced: 3 months ago
JSON representation
A tool that combines one or more templates and the user's answers to questions to generate a code project
- Host: GitHub
- URL: https://github.com/callowayproject/project-forge
- Owner: callowayproject
- License: other
- Created: 2024-10-19T13:14:21.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2026-03-23T19:49:55.000Z (3 months ago)
- Last Synced: 2026-03-24T17:55:41.388Z (3 months ago)
- Topics: scaffolding
- Language: Python
- Homepage: https://callowayproject.github.io/project-forge/
- Size: 4.07 MB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# 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."