Skip to main content

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:

  1. Create a my-custom-setup.yaml file with a sample template
  2. Automatically register the profile in cliex-metadata.yaml
  3. 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:

  1. Check for node, npm, npx, and git
  2. Create a Next.js project (TypeScript, Tailwind, ESLint, App Router)
  3. Install packages: Firebase, Zod, TanStack Query, Zustand, etc.
  4. Initialize shadcn/ui and add common components
  5. Install agent skills for Claude
  6. 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/

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:

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

DucHuynhTrunghuynhtrungduc.growth@gmail.com

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cliex-0.1.0.tar.gz (19.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cliex-0.1.0-py3-none-any.whl (16.4 kB view details)

Uploaded Python 3

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

Hashes for cliex-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e8b14d9d891cee6480ce9757aa50b5316bdf18992ab67881d5b8bb89c74d2470
MD5 f2f07bfc9a6bf7b0ace9e4767bc39e14
BLAKE2b-256 e63551249e1690c72a48d4a7f7552667f297199d54e2c03ec192c6b3c1ef9a5b

See more details on using hashes here.

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

Hashes for cliex-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6f7674f56524426ece1ed6d2abdfdfd8074de8f73dc51c4eb499a83a1c5f1b4a
MD5 3dd8f64aa8654662894852fa0d23d406
BLAKE2b-256 cf744c2b2459361cd5c7cc04b7e570071e06990714c29c61446d4e0098d5b5fe

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page