Skip to main content

A powerful CLI tool for generating production-ready FastAPI applications with SQLAlchemy and MongoDB support

Project description

FastAPI Template

A powerful CLI tool for generating production-ready FastAPI projects with best practices, integrated authentication, and flexible ORM options.

Features

  • ๐Ÿš€ Production Ready: Pre-configured with security, logging, and deployment best practices
  • ๐Ÿ” Integrated Authentication: FastAPI-Users integration with JWT authentication
  • ๐Ÿ—„๏ธ Flexible ORM: Choose between SQLAlchemy (PostgreSQL) or Beanie (MongoDB)
  • ๐Ÿณ Docker Support: Complete Docker setup with docker-compose
  • ๐Ÿ“ฆ Celery Integration: Background task processing (fullstack projects)
  • ๐Ÿงช Testing Ready: Pre-configured testing setup
  • ๐Ÿ“Š API Documentation: Auto-generated OpenAPI/Swagger documentation
  • ๐ŸŽฏ CLI Driven: Simple command-line interface for project generation

Quick Start

Installation

pip install fastapi-template-cli

Create a New Project

# Create an API-only project with SQLAlchemy
fastapi-template new my-api --orm sqlalchemy --type api

# Create a fullstack project with MongoDB
fastapi-template new my-app --orm beanie --type fullstack

# Create with custom description
fastapi-template new my-project --orm sqlalchemy --type fullstack \
  --description "My awesome FastAPI project" --author "Your Name"

Project Types

API-Only Projects

  • Lightweight FastAPI backend
  • Database integration (SQLAlchemy or Beanie)
  • FastAPI-Users authentication
  • No frontend or background tasks

Fullstack Projects

  • Complete backend with FastAPI
  • Database integration
  • FastAPI-Users authentication
  • Celery for background tasks
  • Redis for caching and task queue
  • Docker setup with docker-compose

ORM Options

SQLAlchemy (PostgreSQL)

  • Database: PostgreSQL
  • ORM: SQLAlchemy 2.0 with async support
  • Migrations: Alembic
  • Connection: asyncpg driver

Beanie (MongoDB)

  • Database: MongoDB
  • ODM: Beanie (async MongoDB ODM)
  • Driver: Motor
  • Schema: Pydantic-based documents

Usage

Basic Commands

# List available templates
fastapi-template list-templates

# Create a new project
fastapi-template new myproject

# Show version
fastapi-template version

Project Structure

Generated projects follow a clean architecture:

myproject/
โ”œโ”€โ”€ app/
โ”‚   โ”œโ”€โ”€ api/
โ”‚   โ”‚   โ””โ”€โ”€ v1/
โ”‚   โ”‚       โ”œโ”€โ”€ api.py
โ”‚   โ”‚       โ””โ”€โ”€ endpoints/
โ”‚   โ”‚           โ””โ”€โ”€ users.py
โ”‚   โ”œโ”€โ”€ core/
โ”‚   โ”‚   โ”œโ”€โ”€ config.py
โ”‚   โ”‚   โ””โ”€โ”€ security.py
โ”‚   โ”œโ”€โ”€ db/
โ”‚   โ”‚   โ”œโ”€โ”€ session.py (SQLAlchemy) or mongo.py (Beanie)
โ”‚   โ”‚   โ””โ”€โ”€ base_class.py (SQLAlchemy)
โ”‚   โ”œโ”€โ”€ models/
โ”‚   โ”‚   โ””โ”€โ”€ user.py
โ”‚   โ”œโ”€โ”€ schemas/
โ”‚   โ”‚   โ””โ”€โ”€ user.py
โ”‚   โ”œโ”€โ”€ users.py (FastAPI-Users config)
โ”‚   โ””โ”€โ”€ main.py
โ”œโ”€โ”€ docker/
โ”‚   โ”œโ”€โ”€ Dockerfile
โ”‚   โ””โ”€โ”€ docker-compose.yml (fullstack only)
โ”œโ”€โ”€ alembic/ (SQLAlchemy only)
โ”œโ”€โ”€ workers/ (fullstack only)
โ”œโ”€โ”€ pyproject.toml
โ”œโ”€โ”€ .env
โ””โ”€โ”€ .gitignore

Development

SQLAlchemy Projects

  1. Setup Database

    cd myproject
    pip install -e .
    alembic upgrade head
    
  2. Run Development Server

    uvicorn app.main:app --reload
    
  3. Create Database Migration

    alembic revision --autogenerate -m "Add new table"
    

Beanie Projects

  1. Setup MongoDB

    cd myproject
    pip install -e .
    # MongoDB will auto-initialize on first connection
    
  2. Run Development Server

    uvicorn app.main:app --reload
    

Fullstack Projects (Docker)

  1. Start All Services

    cd myproject
    docker-compose up -d
    
  2. Access Services

Configuration

Environment Variables

Create a .env file in your project root:

# Database
DATABASE_URL=postgresql+asyncpg://user:pass@localhost/dbname  # SQLAlchemy
MONGODB_URL=mongodb://localhost:27017/myproject  # Beanie

# Security
SECRET_KEY=your-secret-key-here
ACCESS_TOKEN_EXPIRE_MINUTES=30

# Redis (fullstack)
REDIS_URL=redis://localhost:6379/0

# Email (optional)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASSWORD=your-password

Database Configuration

SQLAlchemy (PostgreSQL)

# Install PostgreSQL
# Create database
createdb myproject

# Set DATABASE_URL
export DATABASE_URL=postgresql+asyncpg://user:password@localhost/myproject

Beanie (MongoDB)

# Install MongoDB
# MongoDB will create database on first connection
export MONGODB_URL=mongodb://localhost:27017/myproject

API Endpoints

Generated projects include these endpoints:

Authentication

  • POST /auth/jwt/login - User login
  • POST /auth/jwt/logout - User logout
  • POST /auth/register - User registration
  • POST /auth/forgot-password - Request password reset
  • POST /auth/reset-password - Reset password

Users

  • GET /users/me - Get current user
  • PATCH /users/me - Update current user
  • GET /users/{id} - Get user by ID
  • GET /users - List users (admin only)

Health Check

  • GET /health - API health status
  • GET / - Welcome message

Testing

Generated projects include testing setup:

# Run tests
pytest

# Run with coverage
pytest --cov=app tests/

# Run specific test file
pytest tests/test_users.py

Deployment

Docker Deployment

For fullstack projects:

# Build and run
docker-compose up -d --build

# View logs
docker-compose logs -f

# Stop services
docker-compose down

Production Deployment

  1. Environment Variables

    export SECRET_KEY=your-production-secret
    export DATABASE_URL=your-production-db-url
    
  2. Gunicorn/Uvicorn

    gunicorn app.main:app -w 4 -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000
    
  3. Nginx Reverse Proxy

    server {
        listen 80;
        server_name your-domain.com;
        
        location / {
            proxy_pass http://localhost:8000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    

Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature-name
  3. Make your changes
  4. Add tests for new functionality
  5. Run tests: pytest
  6. Commit your changes: git commit -am 'Add feature'
  7. Push to the branch: git push origin feature-name
  8. Submit a pull request

License

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

Support

Changelog

v1.0.0

  • Initial release
  • SQLAlchemy and Beanie support
  • API-only and fullstack project types
  • FastAPI-Users integration
  • Docker support
  • CLI tool

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

fastapi_template_cli-1.2.5.tar.gz (11.7 kB view details)

Uploaded Source

Built Distribution

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

fastapi_template_cli-1.2.5-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file fastapi_template_cli-1.2.5.tar.gz.

File metadata

  • Download URL: fastapi_template_cli-1.2.5.tar.gz
  • Upload date:
  • Size: 11.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for fastapi_template_cli-1.2.5.tar.gz
Algorithm Hash digest
SHA256 11986f62cadfeccc415f801bca040320d6bfcfa4400b7b03f5f77dd6e468b1b4
MD5 1bda4b24b750653c937f390c1993b49d
BLAKE2b-256 dc9a9e416a8a8e33e849198e04e59e5bff876ea1da98e6c6be504cc3289c9186

See more details on using hashes here.

File details

Details for the file fastapi_template_cli-1.2.5-py3-none-any.whl.

File metadata

File hashes

Hashes for fastapi_template_cli-1.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 8b12718ac638e50a76937f5e6ca5684273f4781490bbfcc2ebf1557351c8ab7d
MD5 c46cb32416c3319b06f88d705d2693c4
BLAKE2b-256 819a26bcd1718c7a48e7e345531728168d434b72b5fe6c76a345dcdda5cd5a1d

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