Skip to main content

A simple CLI tool for creating FastAPI projects with dependency injection

Project description

DreiPC Python CLI

A simple command-line tool for creating FastAPI projects with dependency injection and best practices.

Installation

From PyPI (when published)

pip install dreipc-python

From Source

git clone https://github.com/yourusername/dreipc-python.git
cd dreipc-python
pip install -e .

Usage

Create a new project

dreipc-python create my-awesome-api

Interactive mode

dreipc-python create my-api --interactive

With custom details

dreipc-python create my-api \
  --author "Your Name" \
  --email "your@email.com" \
  --description "My awesome FastAPI application"

Get help

dreipc-python --help
dreipc-python create --help

Generated Project Features

FastAPI with async/await support
Dependency Injection using dependency-injector
Pydantic Models for data validation
Structured Layout with separation of concerns
Testing Suite with pytest and pytest-asyncio
Code Quality tools (Black, isort, flake8, mypy)
Poetry for dependency management
Docker support with Dockerfile
Makefile with common development tasks
Environment Configuration with pydantic-settings
CORS Middleware preconfigured
API Documentation with FastAPI's built-in Swagger UI

Generated Project Structure

my-awesome-api/
├── app/
│   ├── api/
│   │   ├── endpoints/
│   │   │   ├── health.py      # Health check endpoints
│   │   │   └── users.py       # User CRUD endpoints
│   │   └── routes.py          # API router configuration
│   ├── core/
│   │   ├── config.py          # Application settings
│   │   └── container.py       # DI container setup
│   ├── dependencies/
│   │   └── container.py       # FastAPI dependencies
│   ├── models/
│   │   └── user.py            # Pydantic models
│   ├── services/
│   │   ├── base.py            # Base service class
│   │   └── user_service.py    # Business logic
│   └── main.py                # Application entry point
├── tests/
│   ├── unit/
│   │   └── test_user_service.py
│   ├── integration/
│   │   └── test_api.py
│   └── conftest.py
├── pyproject.toml             # Poetry configuration
├── Dockerfile                 # Docker configuration
├── Makefile                   # Development commands
├── .env.example               # Environment variables template
├── .gitignore                 # Git ignore rules
└── README.md                  # Project documentation

Quick Start After Project Creation

  1. Navigate to your project:

    cd my-awesome-api
    
  2. Install dependencies:

    poetry install
    
  3. Copy environment file:

    cp .env.example .env
    
  4. Run the application:

    make run
    # or
    poetry run uvicorn app.main:app --reload
    
  5. Visit the API documentation:

Available Make Commands

  • make run - Start the development server
  • make test - Run tests
  • make test-cov - Run tests with coverage report
  • make format - Format code (Black + isort)
  • make lint - Lint code (flake8 + mypy)
  • make clean - Remove cache files
  • make build - Build the package
  • make docker-build - Build Docker image
  • make docker-run - Run Docker container

Example API Usage

The generated project includes a complete user management API:

Create a user

curl -X POST "http://localhost:8000/api/v1/users/" \
  -H "Content-Type: application/json" \
  -d '{"name": "John Doe", "email": "john@example.com"}'

Get all users

curl "http://localhost:8000/api/v1/users/"

Get a specific user

curl "http://localhost:8000/api/v1/users/1"

Update a user

curl -X PUT "http://localhost:8000/api/v1/users/1" \
  -H "Content-Type: application/json" \
  -d '{"name": "Jane Doe"}'

Delete a user

curl -X DELETE "http://localhost:8000/api/v1/users/1"

Requirements

  • Python 3.8+
  • Poetry (for dependency management)

Development

To contribute to this project:

  1. Clone the repository
  2. Install development dependencies: pip install -e .[dev]
  3. Run tests: pytest
  4. Format code: black . && isort .
  5. Lint code: flake8 && mypy fastapi_cli/

License

MIT License - see LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

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

dreipc_python-1.0.0.tar.gz (12.5 kB view details)

Uploaded Source

Built Distribution

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

dreipc_python-1.0.0-py3-none-any.whl (13.4 kB view details)

Uploaded Python 3

File details

Details for the file dreipc_python-1.0.0.tar.gz.

File metadata

  • Download URL: dreipc_python-1.0.0.tar.gz
  • Upload date:
  • Size: 12.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for dreipc_python-1.0.0.tar.gz
Algorithm Hash digest
SHA256 3f47536564b1630040ad7143580a084e6afb582146f523bb3723318803bed2be
MD5 1c8bda16b0b95298be3c85f755850398
BLAKE2b-256 0f58e89f86b57eae3b5b4e24a591f11a887ddda044cf1f8403202589dcd075f2

See more details on using hashes here.

File details

Details for the file dreipc_python-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: dreipc_python-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 13.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for dreipc_python-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 377fc7a18928122155acc91b39566ced48c26894328ee9b993e2fb7e5a3e33d6
MD5 dbeec2eea7575ea959f2e6cf8847aeed
BLAKE2b-256 d9e6d49830f17929a3fad01310988464229a6e42914c9c465a88b69d41c9387e

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