FastAPI project scaffolder CLI tool
Project description
FastAPI Project Scaffolder
A command-line tool to generate FastAPI project scaffolds with various database, message broker, and deployment options.
Read the full article on DEV.
Link to the pyPI package: scaffold-fastapi
Features
- Database Support: PostgreSQL, MongoDB, SQLite
- Message Broker: Redis, RabbitMQ
- Deployment Stacks: Minimal, Full (AWS ECS), Serverless
- Production-Ready: Docker, Terraform, Helm charts
- Dependency Management: Uses
uv
for virtual environments and package installation
Installation
# Install from PyPI
pip install scaffold-fastapi
# Or using uv
uv pip install scaffold-fastapi
# Or using Docker
docker run --rm -it ghcr.io/kenmwaura1/scaffold-fastapi:latest --help
Usage
# Basic usage
scaffold-fastapi my-project --db=postgresql --broker=redis --stack=full
# Interactive mode (will prompt for missing options)
scaffold-fastapi my-project
# Using Docker with volume mount to create project in current directory
docker run --rm -it -v $(pwd):/workspace -w /workspace ghcr.io/kenmwaura1/scaffold-fastapi:latest my-project
Command Options
--db
: Database type (postgresql, mongodb, sqlite)--broker
: Message broker (redis, rabbitmq)--stack
: Deployment stack (minimal, full, serverless)
Project Structure
The generated project will have the following structure:
my-project/
├── app/
│ ├── api/
│ │ └── v1/
│ ├── core/
│ ├── db/
│ ├── models/
│ ├── schemas/
│ └── main.py
├── tasks/
│ ├── celery_app.py
│ └── sample_tasks.py
├── infra/
│ ├── docker/
│ ├── terraform/
│ └── helm/
├── tests/
├── .env
├── .env.example
├── Dockerfile
├── docker-compose.yml
└── requirements.txt
Development
# Clone the repository
git clone https://github.com/KenMwaura1/scaffold-fastapi.git
cd scaffold-fastapi
# Install development dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Format code
black .
isort .
CI/CD
This project uses GitHub Actions for:
- Python Tests: Runs tests on Python code, including formatting, linting, and unit tests
- Docker Compose Testing: Validates and tests the generated Docker Compose files
- Container Publishing: Builds and publishes Docker images to GitHub Container Registry
- PyPI Publishing: Automatically publishes to PyPI when pushing to main or creating a tag
- Dependency Updates: Weekly checks and updates dependencies
Publishing to PyPI
To publish this package to PyPI, you need to:
- Create a PyPI API token (see pypi_instructions.md)
- Add the token to GitHub Secrets as
PYPI_API_TOKEN
- Push to main or create a tag starting with
v
(e.g.,v0.1.0
)
Using the Docker Image
The Docker image is published to GitHub Container Registry and can be used as follows:
# Pull the latest image
docker pull ghcr.io/kenmwaura1/scaffold-fastapi:latest
# Create a new project
docker run --rm -it -v $(pwd):/workspace -w /workspace ghcr.io/kenmwaura1/scaffold-fastapi:latest my-project
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
License
MIT
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
Built Distribution
File details
Details for the file scaffold_fastapi-0.1.7.tar.gz
.
File metadata
- Download URL: scaffold_fastapi-0.1.7.tar.gz
- Upload date:
- Size: 10.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
ec43ba50f80ad0c015166c628863d8897dbe0a92dca5434055765ab0abfdfd77
|
|
MD5 |
e7d832a2173f7278fc8ea551430add19
|
|
BLAKE2b-256 |
169648a35b54795267f44963fcf651bb582043ff6d07b52c19fa00719a3c5c53
|
File details
Details for the file scaffold_fastapi-0.1.7-py3-none-any.whl
.
File metadata
- Download URL: scaffold_fastapi-0.1.7-py3-none-any.whl
- Upload date:
- Size: 20.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
133b85f352f3e90214ea961c4890742d5f8479b1a265abb86daff9e46035b32e
|
|
MD5 |
640cdca210914e8c518a595022ac46a8
|
|
BLAKE2b-256 |
cd74c521bbf7dc65435ea481933b77bed2860b6afd04fe876c0fa05c7fce0abd
|