fastapi-scaffold is a CLI tool that generates a scalable FastAPI project template with advanced features including authentication, machine learning endpoints, background tasks, caching, rate limiting, and more.
Install the CLI tool via pip:
pip install fastapi-scaffold
To create a new project, run:
fastapi-scaffold create my_project
This command generates a new project with optional features:
--ml
→ Includes machine learning endpoints and model setup.--db
→ Adds database configuration and ORM setup.--auth
→ Includes authentication endpoints.--docker
→ Generates Dockerfile and docker-compose.yml for container support.
Example:
fastapi-scaffold create my_project --ml --db --auth --docker
After generating your project, navigate into the project directory and install dependencies:
fastapi-scaffold install
Alternatively, run:
pip install -r requirements.txt
To delete a project directory, use:
fastapi-scaffold delete my_project
A generated project will have the following structure:
my_project/
├── app/
│ ├── api/
│ │ ├── __init__.py
│ │ ├── users.py
│ │ ├── items.py
│ │ ├── admin.py
│ │ ├── ml.py
│ │ └── health.py
│ ├── schemas/
│ │ ├── __init__.py
│ │ ├── user.py
│ │ ├── item.py
│ │ ├── ml.py
│ │ └── stats.py
│ ├── models/
│ │ ├── __init__.py
│ │ ├── user.py
│ │ ├── item.py
│ │ └── ml_model.pkl
│ ├── crud/
│ │ ├── __init__.py
│ │ ├── user.py
│ │ ├── item.py
│ │ └── stats.py
│ ├── services/
│ │ ├── __init__.py
│ │ ├── auth.py
│ │ ├── tasks.py
│ │ └── ml.py
│ ├── utils/
│ │ ├── __init__.py
│ │ ├── dependencies.py
│ │ ├── cache.py
│ │ └── rate_limit.py
│ ├── middleware.py
│ ├── database.py
│ ├── auth.py
│ ├── logger.py
│ ├── config.py
│ └── main.py
├── tests/
│ ├── test_main.py
│ └── test_users.py
├── .env
├── requirements.txt
├── Dockerfile
├── docker-compose.yml
└── README.md
- Navigate to the project directory:
cd my_project
- Install dependencies:
pip install -r requirements.txt
- Start the FastAPI server:
uvicorn app.main:app --reload
The API will be available at http://127.0.0.1:8000.
Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.
This project is licensed under the MIT License. See the LICENSE file for details.