BackAnt CLI
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
DBSessionfor easy database access. - Dockerized Environment: Comes with
Dockerfileanddocker-compose.ymlfiles 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:
--verboseor-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
- Clone the repository:
git clone https://github.com/backant-io/backant-cli.git
- Create a virtual environment:
python3 -m venv venv source venv/bin/activate
- Install the dependencies:
pip install -r requirements.txt
- 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)
| File | Size | Uploaded | |
|---|---|---|---|
| backant_cli-0.7.4.tar.gz | 29.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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