____ _
/ __ \_______(_) __
/ / / / __/ __/ / |/_/
/ /_/ / / / / / /> <
\____/_/ /_/ /_/_/|_|
⚡ UNIVERSAL PROJECT GENERATION PLATFORM ⚡
Engineered by Kryonara • Version 2.0.0
Orix X is a plugin-based CLI that scaffolds production-ready project boilerplate in seconds. Instead of hardcoding a generator for every stack, Orix loads framework support as plugins at runtime, renders Jinja2 templates into a target directory, and gives you a clean starting point — optionally with Docker and auth wired in.
It's built to be driven by humans (interactive prompts) or by automation/AI agents (deterministic CLI flags) — making it equally useful as a personal scaffolding tool or as a building block in larger agentic dev workflows.
- Plugin-based architecture — Each framework (React, Django, FastAPI) is a self-contained plugin built on a shared SDK (
BasePlugin/FrameworkPlugin). Adding a new framework means writing a new plugin, not touching the core. - Modular core engine — Orchestration, plugin discovery, and template rendering are fully decoupled (
Orchestrator,PluginManager,TemplateRenderer). - Interactive TUI — A
rich+questionarypowered terminal experience: banner, framework picker, and dynamic per-framework option prompts. - Deterministic CLI mode — Every interactive choice has a CLI flag equivalent, so the entire tool can be scripted or called by an AI agent without any prompts.
- Recursive Jinja2 templating — Templates support placeholders in file contents, file names, and directory names, rendered recursively into the generated project.
- Auto-loaded plugins — Drop a new plugin file into
orix/plugins/, andPluginManagerdiscovers and loads it automatically via introspection — no manual registration step.
orix/
├── core/
│ ├── cli.py # Click-based CLI entrypoint (orix create)
│ ├── orchestrator.py # Wires plugins + renderer together, drives generation
│ ├── plugin_manager.py # Discovers and loads plugins from orix/plugins/
│ ├── renderer.py # Recursive Jinja2 template renderer
│ └── ui.py # TUI: banner, prompts (rich + questionary)
├── sdk/
│ └── base.py # BasePlugin / FrameworkPlugin abstract classes
├── plugins/
│ ├── react.py # React framework plugin
│ ├── django.py # Django framework plugin
│ └── fastapi.py # FastAPI framework plugin
└── templates/
├── react/ # React project template
├── django/ # Django project template
└── fastapi/ # FastAPI project template
How it works under the hood:
PluginManagerscansorix/plugins/, dynamically imports every module, and registers any class that subclassesBasePlugin.cli.pylists the available frameworks and, in interactive mode, prompts you to pick one and answer itsget_questions()(e.g. "Include Docker?").Orchestrator.generate()builds a context dict from your project name + answers + the plugin'sget_context()output (e.g. Django gets an auto-generatedsecret_key).TemplateRendererwalks the matching template folder underorix/templates/, rendering directory names, file names, and file contents through Jinja2, and writes the result to your target folder.
git clone https://github.com/fagiteemmanuel4-bit/Orix.git
cd Orix
pip install -e .Requires Python 3.10+.
orix createYou'll get the Orix banner, a framework picker, and prompts for any options the chosen framework supports (Docker, auth, etc).
orix create my-project --framework react --docker --authAll flags can be mixed — anything you don't pass will fall back to an interactive prompt for that option.
Supported flags:
| Flag | Description |
|---|---|
project_name |
Name of the project / output folder (positional, optional) |
--framework |
One of: react, django, fastapi |
--docker / --no-docker |
Include Docker configuration |
--auth / --no-auth |
Include auth boilerplate (JWT for FastAPI, DRF auth for Django, auth scaffolding for React) |
| Framework | Docker | Auth |
|---|---|---|
| React | ✅ | ✅ |
| Django | ✅ | ✅ (DRF) |
| FastAPI | ✅ | ✅ (JWT) |
Orix is designed so new framework support doesn't require touching the core. To add one:
- Create
orix/plugins/<name>.pywith a class extendingFrameworkPluginfromorix.sdk.base. - Implement
name,get_template_name(),get_questions(), andget_context(). - Add a matching template folder under
orix/templates/<name>/using Jinja2 placeholders for any dynamic content, file names, or folders. - Drop it in —
PluginManagerwill discover it automatically on the next run.
pytestOrix X is open-source software licensed under the MIT License.