CLI tool setup project quickly.
Project description
Cliex
Cliex is a Python CLI tool that helps you bootstrap projects quickly using setup profiles defined in YAML. Instead of retyping dozens of install commands every time you start a new project, you run one command — Cliex executes the entire setup workflow for you.
The source code is free and open for the community. You may use, modify, and share it freely under the MIT license.
Features
- Bootstrap a new project with a single command
- Support for multiple setup profiles (Next.js, FastAPI, Razor, etc.)
- Create or customize your own profiles via YAML files
- List and manage available profiles
- Colorful terminal output for easy progress tracking
- Automatic checks for required tools before running
Requirements
- Python 3.11+
- Node.js, npm, npx (for frontend profiles such as Next.js)
- Git
Installation
Option 1 — PyPI (recommended for end users)
Requires Python 3.11+.
# Recommended: isolated install
pipx install cliex
# Or with pip
pip install cliex
Verify:
cliex list
Update to the latest version:
pipx upgrade cliex
# or
pip install -U cliex
Option 2 — GitHub Releases
Download a wheel from Releases or install directly:
pip install https://github.com/DucHuynhTrung/cliex-quick/releases/download/v0.1.0/cliex-0.1.0-py3-none-any.whl
Replace v0.1.0 with the latest tag.
Option 3 — Install from source (development)
git clone https://github.com/DucHuynhTrung/cliex-quick.git
cd cliex-quick
pip install -e .
Using uv (optional)
uv venv
# Windows
.venv\Scripts\activate
# macOS / Linux
source .venv/bin/activate
uv pip install -e .
After installation, the cliex command is available in your terminal.
Maintainers: see docs/RELEASE.md for the full GitLab → GitHub mirror → PyPI + Releases workflow.
Usage
Create a new project
# Create a project in the "my-app" folder (uses the default profile)
cliex new my-app
# Create a project in the current directory
cliex new .
# No name provided → defaults to the current directory
cliex new
Choose a specific setup profile
# Use the Next.js profile
cliex new my-app --setup nextjs-setup
# Short form
cliex new my-app -s fastapi
# Use a custom YAML file directly
cliex new my-app --setup path/to/my-setup.yaml
List available profiles
cliex list
This displays all registered profiles, their source (package or user), and which one is the default.
Create or edit a profile
# Create a new profile (or open the file if it already exists)
cliex registry my-custom-setup
# Edit profile metadata
cliex metadata
When creating a new profile, Cliex will:
- Create a
my-custom-setup.yamlfile with a sample template - Automatically register the profile in
cliex-metadata.yaml - Open the file in your system's default text editor
Run without installing
python -m cliex new my-app
python -m cliex list
Commands
| Command | Description |
|---|---|
cliex new [PROJECT_NAME] |
Create a new project using a setup profile |
cliex new --setup <profile> |
Select a specific profile or YAML file |
cliex list |
List all setup profiles |
cliex registry <name> |
Create or edit a profile YAML file |
cliex metadata |
Open cliex-metadata.yaml to edit metadata |
Built-in setup profiles
| Profile | Description |
|---|---|
nextjs-setup (default) |
Next.js + TypeScript + Tailwind + ESLint + shadcn/ui + Firebase + agent skills |
fastapi |
FastAPI with a virtual environment |
razor |
Razor project setup |
Step-by-step details for each profile live in cliex/templates/setups/.
What does the Next.js profile do?
When you run cliex new my-app -s nextjs-setup, Cliex will:
- Check for
node,npm,npx, andgit - Create a Next.js project (TypeScript, Tailwind, ESLint, App Router)
- Install packages: Firebase, Zod, TanStack Query, Zustand, etc.
- Initialize shadcn/ui and add common components
- Install agent skills for Claude
- Initialize git and commit the changes
Customizing setup profiles
Each profile is a YAML file with a list of steps. Supported step types:
| Type | Description | Example |
|---|---|---|
run |
Run a shell command | cmd: npm install |
copy |
Copy a file | src, dest |
append |
Append content to a file | file, content |
git |
Git operations | add, commit_message, username, email |
Minimal profile example:
steps:
- type: run
name: say-hello
cmd: echo "Hello from Cliex!"
Where profiles are stored
- Package (bundled with Cliex):
cliex/templates/setups/ - User (your custom profiles):
- Windows:
%APPDATA%\cliex\setups\ - macOS / Linux:
~/.config/cliex/setups/
- Windows:
User-created profiles override package profiles with the same name.
Project structure
cliex/
├── cliex/
│ ├── main.py # CLI entry point (Typer)
│ ├── cli/
│ │ └── new.py # New project creation logic
│ ├── setup/
│ │ ├── registry.py # Setup profile registry
│ │ ├── loader.py # YAML file loader
│ │ └── executor.py # Step executor
│ ├── runner/
│ │ └── runner.py # Subprocess runner
│ ├── checker/
│ │ └── checker.py # System requirement checker
│ └── templates/
│ └── setups/ # Default profiles + metadata
├── pyproject.toml
├── LICENSE
└── README.md
Troubleshooting
Missing required tools
Missing required commands: node, npm
Install the missing tools:
- Node.js / npm: https://nodejs.org/
- Git: https://git-scm.com/
Target directory already exists
Target folder already exists
Choose a different folder name or remove the existing directory before running again.
Git commit failed
Configure git first:
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
Profile not found
Run cliex list to see available profiles, or create a new one with cliex registry <name>.
Development
# Install in editable mode
pip install -e .
# Run directly
python -m cliex list
Contributing
Contributions are welcome! You can:
- Report bugs or request features via Issues
- Submit Pull Requests with new setup profiles or code improvements
- Share your YAML profiles with the community
License
This project is released under the MIT license — completely free and open source for the community.
You are free to use, copy, modify, distribute, and use it commercially without permission. See LICENSE for details.
Author
DucHuynhTrung — huynhtrungduc.growth@gmail.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cliex-0.1.0.tar.gz.
File metadata
- Download URL: cliex-0.1.0.tar.gz
- Upload date:
- Size: 19.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e8b14d9d891cee6480ce9757aa50b5316bdf18992ab67881d5b8bb89c74d2470
|
|
| MD5 |
f2f07bfc9a6bf7b0ace9e4767bc39e14
|
|
| BLAKE2b-256 |
e63551249e1690c72a48d4a7f7552667f297199d54e2c03ec192c6b3c1ef9a5b
|
File details
Details for the file cliex-0.1.0-py3-none-any.whl.
File metadata
- Download URL: cliex-0.1.0-py3-none-any.whl
- Upload date:
- Size: 16.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6f7674f56524426ece1ed6d2abdfdfd8074de8f73dc51c4eb499a83a1c5f1b4a
|
|
| MD5 |
3dd8f64aa8654662894852fa0d23d406
|
|
| BLAKE2b-256 |
cf744c2b2459361cd5c7cc04b7e570071e06990714c29c61446d4e0098d5b5fe
|