AMEN CLI

AMEN CLI Wiki

A Laravel-inspired Python Web Application Scaffolding Tool

✨ Features

🛠️ Installation

Using pip (All platforms)

pip install amen-cli

Using uv

uv is a very fast Python package installer and resolver, written in Rust.

  1. Install uv:
    pip install uv
  2. Install amen-cli using uv:
    uv pip install amen-cli

uv utilizes the pyproject.toml file for resolving dependencies, ensuring a consistent and reproducible installation.

Debian/Ubuntu

# Install required dependencies
sudo apt-get update
sudo apt-get install python3-pip python3-venv

# Install AMEN CLI
pip3 install amen-cli

# Optional: Install system-wide (requires root)
sudo pip3 install amen-cli

Linux Post-Installation

Make sure the amen command is in your PATH:

export PATH="$HOME/.local/bin:$PATH"

Add this line to your ~/.bashrc or ~/.zshrc for permanent effect.

🚀 Quick Start

# Create a new project
amen create

# You can also use flags to specify the framework, type, and name:
amen create -f flask -t webapp -n myapp

# Available options:
# -f, --framework   Framework to use (flask, fastapi, bottle, pyramid)
# -t, --type        Type of application (webapp, api)
# -n, --name        Name of the application

# If flags are not provided, the interactive prompts will be used.

# Follow the interactive prompts to:
# 1. Select a framework
# 2. Choose application type (webapp/api)
# 3. Name your project
Flags:
  • -f, --framework Framework (flask, fastapi, bottle, pyramid)
  • -t, --type Application type (webapp, api)
  • -n, --name Project name
Additional Commands:
# Launch the web interface for project management
amen web [options]

# Available web interface options:
# -p, --port       Port to run the web interface on (default: 3000)
Additional Commands:
# Run your application
amen run <app_name>

# Example:
amen run myapp

# Run tests for your application
amen test <app_name>

# Example:
amen test myapp

# Check for updates to the CLI
amen update

# Manage project configuration
amen config <app_name>

# Example:
amen config myapp

# Run a security audit on your application
amen audit <app_name> [options]
# Options:
# -f, --format     Output format (txt, json, csv, xml; default: txt)
# -s, --severity   Filter issues by severity (low, medium, high)
# -o, --output     Save audit report to a specified file
# Example:
amen audit myapp -s high

# Monitor application status and resource usage in real time
amen monitor <app_name> [options]
# Options:
# -p, --port       Port to monitor
# -r, --refresh    Refresh rate in seconds (accepts decimal values; default: 0.1)
# --web            Run a web based monitor
# Example:
amen monitor myapp --port 5000 --refresh 0.5
amen monitor myapp --port 5000 -refresh 0.5 --web #Web based monitor

🏗️ Project Structure

your-app/
├── venv/                   # Virtual environment
├── your-app/               # Main application package
│   ├── api/                # API endpoints (endpoints.py)
│   ├── auth/               # Authentication (token.py, etc.)
│   ├── models/             # Models module
│   ├── static/             # Static files (CSS, JS, images)
│   │   ├── uploads/
│   │   ├── css/
│   │   └── js/
│   ├── templates/          # HTML templates (if webapp)
│   └── app.py / main.py    # Main application file (Flask: app.py, FastAPI: main.py)
├── tests/                  # Test files
├── docs/                   # Documentation
├── requirements.txt        # Python dependencies
├── .env                    # Environment variables (local)
├── .env.example            # Environment variables template
├── .gitignore              # Git ignore rules
├── run.py                  # Application runner
└── README.md               # Project documentation

- Flask: Uses app.py and registers a blueprint from api/endpoints.py. Token authentication is in auth/token.py.

- FastAPI: Uses main.py and includes a router from api/endpoints.py. Token authentication is in auth/token.py.

- Webapp: Includes HTML templates and static files. FastAPI mounts static and template directories.

- API: Generates only API endpoints and disables template/static mounting.

🎯 Framework Support

Framework Description Default Port Status
Flask Lightweight WSGI web framework 5000
FastAPI Modern, fast web framework 8000
Django High-level Python web framework 8000
Bottle Fast, simple micro framework 8080 🚧
Pyramid Flexible web framework 6543 🚧

Work in Progress

Currently implementing support for additional web frameworks:

These frameworks will enable:

Check back for updates or follow the project's issues for implementation progress. Contributions are welcome!

Note: For now, please use our stable implementations for Flask or FastAPI.

📖 Usage

# Create a new project
amen create

# Run your application
amen run <app_name>

# Run tests
amen test <app_name>

# Check for updates
amen update

# Manage project configuration
amen config <app_name>

🔧 Development

git clone https://github.com/taqsblaze/amen-cli.git
pip install -e .
pip install pytest pytest-cov
pytest
pytest --cov

🤝 Contributing

  1. Fork the repository
  2. Create your feature branch: git checkout -b feature/amazing-feature
  3. Make your changes
  4. Push to the branch: git push origin feature/amazing-feature
  5. Open a Pull Request

👥 Contact & Support

⭐ Credits

Created by Tanaka Chinengundu
Inspired by Laravel's elegant development experience