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

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.1.tar.gz (13.9 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.1-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dreipc_python-1.0.1.tar.gz
  • Upload date:
  • Size: 13.9 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.1.tar.gz
Algorithm Hash digest
SHA256 576f933750ccec57257ce7866f7e21911d228e6bdb7ca2ca7d2d5d7b37d554de
MD5 12d9faafbc898406fe27582bd4b652b1
BLAKE2b-256 483561fedf820941d7ccebffbd011be264c87698a61b90dc7e97671133544f7d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dreipc_python-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 14.3 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d01ca2e02c51e0bffcf846e50c036d3147c149e267d35cc0912cc6b26d2c9946
MD5 a2ae4b2b2ac0e05b9ac022596f1716e5
BLAKE2b-256 2f8130c4a6cf621f20f9f2c55512d487205e2c12bc5e3c324f1ce48b068feaf0

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