Skip to main content

BackAnt CLI

PyPI version License: MIT

BackAnt CLI is a powerful command-line interface designed to streamline the development of Flask-based REST APIs. It automates the generation of a complete and scalable project structure, allowing developers to focus on business logic rather than boilerplate code.

Key Features

  • Automated Project Scaffolding: Generate a new Flask API with a single command, including a well-organized directory structure.
  • Layered Architecture: The generated project follows a clean, layered architecture (Models, Repositories, Services, Routes) to promote separation of concerns and maintainability.
  • Database-Ready: Includes SQLAlchemy for database modeling and interaction, with a pre-configured DBSession for easy database access.
  • Dockerized Environment: Comes with Dockerfile and docker-compose.yml files for a consistent development and production environment.
  • Extensible by Design: Easily add new routes, services, and models using the provided CLI commands.
  • Pre-configured for Deployment: Includes a GitHub Actions workflow for building and pushing Docker images to Amazon ECR.

Installation

Ubuntu/Debian (Recommended)

Install the Backant CLI using the .deb package for Ubuntu/Debian systems:

# Download and install the .deb package
sudo dpkg -i backant-cli.deb

Alternative: Python Package

You can also install using pip:

pip install backant-cli

Getting Started

Generating a New API

To create a new Flask API project, use the generate api command:

ant generate api <your_project_name>

This will create a new directory named <your_project_name> with the complete project structure.

Generating API from JSON Specification

You can generate a complete API with routes and subroutes from a JSON specification using the --json option:

Using JSON String:

ant generate api my-project --json '{"routes": {"products": {"type": "GET", "subroutes": {"create": {"type": "POST"}}}}}'

Using JSON File:

ant generate api ecommerce --json api-spec.json

Additional Options:

  • --verbose or -v: Show detailed generation progress
  • --dry-run: Validate JSON specification without generating files

Examples:

# Generate API with verbose output
ant generate api shop --json api-spec.json --verbose

# Validate JSON specification without creating files
ant generate api test --json api.json --dry-run

JSON Specification Format:

The JSON specification should follow this structure:

{
  "routes": {
    "route_name": {
      "type": "GET|POST|PUT|DELETE",
      "mock": {},
      "subroutes": {
        "subroute_name": {
          "type": "GET|POST|PUT|DELETE",
          "mock": {}
        }
      }
    }
  }
}

Generating a New Route

Once you have a project, you can easily add new routes and their corresponding components (service, repository, model) with the generate route command:

ant generate route <your_route_name>

This command will automatically create:

  • A new route in api/routes/
  • A new service in api/services/
  • A new repository in api/repositories/
  • A new model in api/models/

Generating a Mock Route

You can also generate a route with mock data for testing and development purposes. Use the --mock option with a JSON string or a path to a JSON file.

Using a JSON String:

ant generate route <your_route_name> --mock '{"key": "value", "another_key": "another_value"}'

Using a JSON File:

ant generate route <your_route_name> --mock /path/to/your/mock_data.json

This will generate the same files as the standard generate route command, but the service will return the provided JSON data.

Project Structure

The generated project follows a structured and scalable architecture:

<your_project_name>/
├── api/
│   ├── apis/             # For third-party API integrations
│   ├── decorators/       # Custom decorators (e.g., for authentication)
│   ├── helper/           # Helper functions and utilities
│   ├── models/           # SQLAlchemy database models
│   ├── repositories/     # Data access layer
│   ├── routes/           # API endpoints (controllers)
│   ├── schemas/          # Data validation schemas
│   ├── services/         # Business logic layer
│   └── startup/          # Application startup and configuration
├── .github/
│   └── workflows/        # CI/CD workflows
├── .gitignore
├── docker-compose.yml
├── Dockerfile
└── requirements.txt

Telemetry

BackAnt CLI includes opt-in anonymous telemetry to help us improve the tool. On first run, you'll be asked if you want to participate.

Quick Disable

# Environment variable (permanent)
export DO_NOT_TRACK=1

# Per-command flag
ant --no-telemetry generate api my-project

# View telemetry settings
ant --privacy

We never collect file paths, project names, usernames, or any personally identifiable information. See docs/telemetry.md for full details.

Contributing

Contributions are welcome! If you have any ideas, suggestions, or bug reports, please open an issue or submit a pull request.

Development Setup

  1. Clone the repository:
    git clone https://github.com/backant-io/backant-cli.git
    
  2. Create a virtual environment:
    python3 -m venv venv
    source venv/bin/activate
    
  3. Install the dependencies:
    pip install -r requirements.txt
    
  4. Install the CLI in editable mode:
    pip install -e .
    

Now you can run the CLI locally using the ant command.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Metadata

Release files for backant-cli 0.7.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for backant-cli 0.7.4
File Size Uploaded
backant_cli-0.7.4.tar.gz 29.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for backant-cli 0.7.4
File Interpreter ABI Platform
backant_cli-0.7.4-py3-none-any.whl Python 3 none any Details

Total release size: 67.6 kB

Release files / backant_cli-0.7.4.tar.gz

Download URL backant_cli-0.7.4.tar.gz
Size 29.9 kB
Tags Source
SHA-256 checksum
How to use checksums
3a67064ba2bff109b7f9746fc76f874c7b6a7dd66bd04b69c052a5112374dc55
BLAKE2b-256 checksum
How to use checksums
f5f562af0dbfe20a97cbffb0a225ca15f3133c177ee1bb243e18fc621a001027
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release files / backant_cli-0.7.4-py3-none-any.whl

Download URL backant_cli-0.7.4-py3-none-any.whl
Size 37.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e96d2131e5d42f2a03485236e4e744864377fc7e0f0a63e99795a33af7d3f670
BLAKE2b-256 checksum
How to use checksums
d3e6306a05f5bc04433b163b819981f9c25af124dbad896ae916489563b42e47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 1, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.7.4 This release

2 release files

0.7.3

2 release files

0.7.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page