Skip to main content

CLI tool for generating FastAPI boilerplate code using the Fastgear library

Project description

FastGear CLI

Supported Python Versions PyPi Version Tests codecov
A powerful CLI tool to bootstrap FastAPI projects powered by the FastGear library โ€” with best practices, pre-configured templates, and modern development tools out of the box.

๐ŸŽฏ What is FastGear CLI?

FastGear CLI is the official command-line companion for the FastGear library. It streamlines the creation of FastAPI projects by generating a complete, production-ready project structure with:

  • Pre-configured FastGear integration for accelerated API development
  • FastAPI application scaffolding with best practices
  • Modern Python project setup with type hints and validation

Note: Projects generated by FastGear CLI are designed to work seamlessly with the FastGear library, which provides utilities, patterns, and abstractions to supercharge your FastAPI development.

โœจ Features

  • ๐Ÿš€ FastAPI Project Setup - Create production-ready FastAPI projects in seconds
  • โšก FastGear Integration - Pre-configured to use the FastGear library
  • ๐Ÿณ Docker Support - Optional Docker configuration with Dockerfile and docker-compose
  • ๐Ÿค– AI Agent Tools - Integrate AI-powered development tools (GitHub Copilot)
  • ๐Ÿ”„ CI/CD Integration - Pre-configured CI/CD pipelines (GitHub Actions)
  • ๐Ÿ“ฆ Modern Dependencies - Uses uv for fast, reliable dependency management
  • ๐Ÿ” Dry-Run Mode - Preview files before creation
  • โœ… Type-Safe - Full type hints and Pydantic models
  • ๐Ÿงช Test Coverage - Comprehensive test suite with pytest

๐Ÿ“‹ Requirements

  • Python 3.13+
  • uv (recommended for dependency management)

๐Ÿ”ง Installation

Using uv (recommended)

uv pip install fastgear-cli

Using pip

pip install fastgear-cli

From source

git clone https://github.com/hmarcuzzo/fastgear-cli.git
cd fastgear-cli
uv pip install -e .

๐Ÿš€ Quick Start

Create a new project in the current directory:

fg init

Create a project in a specific directory:

fg init /path/to/project

Preview what files would be created (dry-run):

fg init --dry-run
# or
fg init -n

๐Ÿ“– Usage Examples

Basic Project Creation

$ fg init

? Project name: my-awesome-api
? Project title: My Awesome API
? Use Docker? Yes
? Use AI agent tools? No
? Use CI/CD pipeline? Yes
? Select CI/CD provider: GitHub Actions

๐Ÿ“ฆ Generating uv.lock...
๐ŸŽ‰  Project 'my-awesome-api' created successfully!

Your new FastAPI project is ready with FastGear pre-configured!

Dry-Run Mode

Preview the project structure before creating files:

$ fg init --dry-run

? Project name: my-awesome-api
? Project title: My Awesome API
? Use Docker? Yes

๐Ÿ” Dry run mode - no files created

Files that would be created:
โ””โ”€โ”€ ๐Ÿ“ my-awesome-api
    โ”œโ”€โ”€ ๐Ÿ“ docker
    โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ Dockerfile
    โ”‚   โ””โ”€โ”€ ๐Ÿ“„ docker-compose.yml
    โ”œโ”€โ”€ ๐Ÿ“ src
    โ”‚   โ””โ”€โ”€ ๐Ÿ“ my_awesome_api
    โ”‚       โ”œโ”€โ”€ ๐Ÿ“„ __init__.py
    โ”‚       โ””โ”€โ”€ ๐Ÿ“„ main.py          # FastAPI app with FastGear
    โ”œโ”€โ”€ ๐Ÿ“ tests
    โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ __init__.py
    โ”‚   โ””โ”€โ”€ ๐Ÿ“„ test_main.py
    โ”œโ”€โ”€ ๐Ÿ“„ .dockerignore
    โ”œโ”€โ”€ ๐Ÿ“„ .gitignore
    โ”œโ”€โ”€ ๐Ÿ“„ pyproject.toml           # Includes FastGear dependency
    โ””โ”€โ”€ ๐Ÿ“„ README.md

Total: 12 file(s)

Custom Directory

Create a project in a specific location:

fg init ~/projects/new-api

Add Components to an Existing Module

Create an entity:

fg add entity user --path src/modules/user

Create a service and inject a repository explicitly:

fg add service user --path src/modules/user \
  --repository-path src.modules.user.repositories.UserRepository

Create a repository and choose interactively whether to inject an entity:

fg add repository user --path src/modules/user

Create a full module and choose components interactively:

fg add module user --path src/modules

Create a module non-interactively:

fg add module user --path src/modules \
  --module-components entity,repository,service,controller

Preview created files without writing:

fg add module user --path src/modules --module-components service,controller --dry-run

๐ŸŽฏ Commands

init

Initialize a new FastAPI project with FastGear.

Usage:

fg init [DIRECTORY] [OPTIONS]

Arguments:

  • DIRECTORY - Target directory (default: current directory)

Options:

  • --dry-run, -n - Show what files would be created without creating them
  • --help - Show help message

Interactive Prompts:

  1. Project name - The name of your project (used for directory and package names)
  2. Project title - Human-readable project title
  3. Use Docker? - Include Docker configuration files
  4. Use AI agent tools? - Include AI development tools configuration
  5. Use CI/CD pipeline? - Include continuous integration/deployment setup
  6. Select CI/CD provider - Choose your CI/CD platform (if enabled)

add

Add components to an existing project/module.

Usage:

fg add [ELEMENT_TYPE] [ELEMENT_NAME] [OPTIONS]

Element types:

  • entity
  • repository
  • service
  • controller
  • module

Arguments:

  • ELEMENT_TYPE - Component type to generate
  • ELEMENT_NAME - Component/module name (normalized to snake_case)

Common options:

  • --path, -p - Base directory where files are generated (default: current directory)
  • --use-folders/--no-use-folders - Generate in folders (entities/, services/, etc.) or flat files
  • --dry-run, -n - Preview output without writing files

Dependency options:

  • --entity-path - Entity import path used by repository
  • --repository-path - Repository import path used by service
  • --service-path - Service import path used by controller

Module option:

  • --module-components - Comma-separated list for module: entity,repository,service,controller

๐Ÿ“ License

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

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

fastgear_cli-0.4.3.tar.gz (104.5 kB view details)

Uploaded Source

Built Distribution

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

fastgear_cli-0.4.3-py3-none-any.whl (64.9 kB view details)

Uploaded Python 3

File details

Details for the file fastgear_cli-0.4.3.tar.gz.

File metadata

  • Download URL: fastgear_cli-0.4.3.tar.gz
  • Upload date:
  • Size: 104.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fastgear_cli-0.4.3.tar.gz
Algorithm Hash digest
SHA256 69f7a06c7eaed0789fafdb2fbbd6175c27d4ef615e3ea749c47aa79309b173c2
MD5 5a806d0e32146408892971be19bb2eb1
BLAKE2b-256 680d814dd80ae6850bcc50ff1997da4f58b44d83cf78022e31acf34d72dff8a1

See more details on using hashes here.

File details

Details for the file fastgear_cli-0.4.3-py3-none-any.whl.

File metadata

  • Download URL: fastgear_cli-0.4.3-py3-none-any.whl
  • Upload date:
  • Size: 64.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fastgear_cli-0.4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 242fa2dec0e9851107adc5c863a660d6f22ae8209bf402e6c1911a99b68aa4d4
MD5 a76509360e5c1c82a1c55a2c222f500e
BLAKE2b-256 50f353be33d274189dd7e1b8e68b9945a311d51bb60e97034bea7ebe6906a514

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