An open API service indexing awesome lists of open source software.

https://github.com/dyaa-adel/dym-kit

A principal-grade project generator for C++, Python, Rust, and C#. Enforces Big Tech engineering standards (CI, Tests, Linting) by default.
https://github.com/dyaa-adel/dym-kit

automation cli cpp20 developer-tools project-generator python3 scaffolding template-engine

Last synced: about 2 months ago
JSON representation

A principal-grade project generator for C++, Python, Rust, and C#. Enforces Big Tech engineering standards (CI, Tests, Linting) by default.

Awesome Lists containing this project

README

          

# DYM KIT

[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
[![Python](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/)
[![Status](https://img.shields.io/badge/status-active-success.svg)]()

**DYM KIT** is a principal-grade project generator that enforces "Big Tech" engineering standards by default.

It is not just a cookie-cutter; it is a **Repo Factory**. It generates production-ready skeletons for C++, Python, Rust, and C# that include build systems, CI/CD, testing frameworks, and dependency management out of the box.

---

## 🚀 Features

* **Multi-Language Support:** First-class standards for C++20, Python 3.11+, Rust 2021, and C# .NET 8.
* **Rigor Levels:**
* `--level lite`: Minimal boilerplate for prototypes (Build + Run).
* `--level pro`: (Default) Includes CI, Unit Tests, Formatting, and Static Analysis.
* `--level studio`: Strict governance, coverage reports, documentation enforcement, and release workflows.
* **Zero-Config Build:** Every generated repo builds with 1–3 standard commands.
* **Professional Hygiene:** `.gitignore`, License, Issue Templates, and CI workflows are automatically configured.

---

## 📦 Installation

Prerequisites: **Python 3.10+** and [pipx](https://pypa.github.io/pipx/) (recommended).

### Option 1: Install from Source (Recommended for Teams)

This installs the tool directly from the git repository. It is the easiest way to ensure your team is using the latest approved templates.

```bash
# Install the 'dym-new' command globally
pipx install git+https://github.com/your-org/dym-kit.git#subdirectory=tools
```

### Option 2: Local Development (For Kit Maintainers)

If you want to edit the templates and test them immediately:

1. Clone the repository:

```bash
git clone [https://github.com/your-org/dym-kit.git](https://github.com/your-org/dym-kit.git)
cd dym-kit
```

2. Install in Editable Mode:

```bash
pipx install -e ./tools
```

*Now, any change you make to the `templates/` folder is instantly reflected when you run `dym-new`.*

---

## 🛠 Usage

Once installed, the `dym-new` command is available anywhere in your terminal.

### 1. Generate a C++ Application

Creates a modern C++20 app with CMake, Conan, and GoogleTest.

```bash
dym-new --name "Fire Engine" --lang cpp --variant app --level pro --out ./fire-engine
```

### Command Flags

| Flag | Description | Options |
| :--- | :--- | :--- |
| `--name` | Display name of the project | "My Project" |
| `--lang` | Target Language | `cpp` |
| `--variant` | Template Archetype | `app`, `lib` |
| `--level` | Complexity/Rigor Level | `lite`, `pro`, `studio` |
| `--out` | Output Directory Path | `./my-project` |

---

## 📂 Architecture

The kit is split into two parts: the **Templates** (blueprints) and the **Generator** (machinery).

```text
dym-kit/
├── templates/ # The Source of Truth
│ └── cpp/
│ ├── app/ # C++ Application Template
│ └── lib/ # C++ Library Template
└── tools/ # The Generator Tool
├── pyproject.toml # Package Definition
└── src/
└── dym_tool/ # Source Code
└── main.py # The Engine
```

### How It Works

1. **Selection:** The tool locates the requested template in `templates//`.
2. **Filtering:** Based on the `--level` (Lite/Pro/Studio), it removes unnecessary files (e.g., CI workflows are removed in Lite mode).
3. **Renaming:** It handles special filenames (e.g., `_gitignore` becomes `.gitignore`).
4. **Injection:** It replaces tokens like `{{DYM_PROJECT_NAME}}` inside files with your provided name.

---

## 🤝 Contributing

We welcome improvements to the templates!

1. **Setup:** Follow the "Local Development" installation instructions above.
2. **Edit:** Modify files in `templates/`.
* Use `{{DYM_PROJECT_NAME}}` for the display name.
* Use `{{DYM_PROJECT_SLUG}}` for safe filenames (e.g., `my_project`).
3. **Test:** Generate a dummy project to verify your changes.

```bash
dym-new --name "Test Build" --lang cpp --variant app --out ./temp_test
```

4. **PR:** Submit a Pull Request.

---

## 📜 License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.