Forge
Cross-platform CLI for interactively designing and generating application project architectures.
Status: public development release 0.2.0 (forge-scaffolder on PyPI). Generates runnable Python FastAPI, Django, and Flask REST API projects with Simple, Modular Monolith, or Clean Architecture layouts. Persistence supports independent SQL (PostgreSQL, SQLite) and NoSQL (MongoDB, Redis) selections. Supports interactive / --preset / YAML --config generation and forge plan inspection.
Requires: Python 3.11+ (tested on 3.11, 3.12, 3.13)
Supported today
| Simple | Modular Monolith | Clean | |
|---|---|---|---|
| FastAPI | yes | yes | yes |
| Django | yes | yes | yes |
| Flask | yes | yes | yes |
Persistence: SQL (PostgreSQL, SQLite) and NoSQL (MongoDB, Redis) are independent — choose neither, either, or both.
Install
uv tool install forge-scaffolder
# or: pip install forge-scaffolder
forge --version
forge new my-api --preset fastapi-postgres
Naming:
| Role | Name |
|---|---|
| PyPI distribution | forge-scaffolder |
| Console script | forge |
| Python package | forge |
| GitHub repository | Lacky227/forge-cli |
Build and install from this repository:
uv sync
uv build
uv pip install dist/forge_scaffolder-*.whl # or: pip install dist/forge_scaffolder-*.whl
forge --version
forge new my-api --preset fastapi-postgres
Quick start (development checkout)
uv sync
uv run forge new my-api
uv run forge new my-api --preset fastapi-postgres
# non-interactive config (CI-safe — never prompts):
# uv run forge new --config forge.yaml
cd my-api
uv sync
Follow the generated project README for framework-specific run commands.
Configuration and presets
- Interactive:
forge new [NAME]— adaptive prompts only for choices that affect the project - YAML:
forge new [NAME] --config forge.yaml— fully non-interactive - Preset:
forge new NAME --preset fastapi-postgres— curated stack; no prompts - Plan:
forge plan --preset fastapi-postgres— show resolvedGenerationPlanwithout writing files
--preset and --config cannot be combined. Details: docs/cli.md.
Documentation
| Document | Contents |
|---|---|
| docs/product.md | Product definition, principles, scope |
| docs/architecture.md | Resolution, GenerationPlan, frameworks |
| docs/cli.md | Commands, presets, YAML configuration |
| docs/generation.md | Generated-project quality |
| docs/development.md | Toolchain, packaging, versioning |
| CHANGELOG.md | Release notes |
| CONTRIBUTING.md | How to contribute |
Development / contributing
See CONTRIBUTING.md for setup, tests, and architecture orientation.
uv sync
uv run pytest
Versioning
0.2.0 is the current public development release (PyPI distribution forge-scaffolder). See the versioning policy in docs/development.md.
License
GPL-3.0-only. See LICENSE.
Repository
Layout
src/forge/cli/
src/forge/core/ # ProjectDefinition, YAML config, presets
src/forge/generator/ # resolve → GenerationPlan → render
templates/ # Jinja templates (packaged as forge/templates in the wheel)
tests/
scripts/packaging_smoke.sh
docs/
Release files for forge-scaffolder 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| forge_scaffolder-0.2.0.tar.gz | 126.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| forge_scaffolder-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 273.6 kB
Release files / forge_scaffolder-0.2.0.tar.gz
| Download URL | forge_scaffolder-0.2.0.tar.gz |
|---|---|
| Size | 126.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
481488dc0ceeaacc8ec645f78d648849bb932914451be4449074d698c722a1a9
|
|
BLAKE2b-256 checksum How to use checksums |
68dbc29b37ee95239e0961397efe44e255229cf11509ad879d887a31a0fdce69
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"CachyOS Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / forge_scaffolder-0.2.0-py3-none-any.whl
| Download URL | forge_scaffolder-0.2.0-py3-none-any.whl |
|---|---|
| Size | 147.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d6541b40319141192eb699cda5eefd5e8c7bbc6efb692ea8db91c3024e704c99
|
|
BLAKE2b-256 checksum How to use checksums |
e7dce735d24d63a353da441cb31b55a3349add0cb9ca12df1391860f5fe06d8e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"CachyOS Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|