Skip to main content

Scaffold FastAPI projects in seconds, add features as you grow

Project description

๐Ÿชจ pedestal

License: MIT

Stop building the "basement" of your FastAPI project.

The Problem

Every new FastAPI project starts with the same 2-hour slog:

  • Wiring up SQLAlchemy with async drivers
  • Setting up config management
  • Creating folder structures that won't become a mess
  • Adding auth... then rewriting it when you change your mind

Boilerplate burnout is real.

The Solution

pedestal scaffolds production-ready FastAPI projects in 2 seconds, then lets you add features incrementally without breaking your code.

# Start with exactly what you need
pedestal init my-api --db postgres --auth jwt

# Change your mind later? No problem.
pedestal add redis
pedestal add auth-session

Why pedestal?

Without pedestal With pedestal
Copy-paste boilerplate from old projects Generate clean, consistent structure instantly
Fear of adding features mid-project Add/remove modules anytime safely
Hope your code injection doesn't break things AST-aware code modifications (LibCST)
Spend hours on setup Spend hours on features

Installation

From PyPI

pip install pedestal

Install with uv (Faster)

uv tool install pedestal

From Source

git clone https://github.com/cybertycoon/Pedestal.git
cd pedestal
pip install -r requirements.txt
pip install -e .

Quick Start

Create a Basic Project

pedestal init my-app
cd my-app
uv run uvicorn src.main:app --reload

Create with Database & Auth

pedestal init my-api --db postgres --auth jwt --redis

Add Features Later

cd my-api

# Add Redis caching
pedestal add redis

# Add JWT authentication
pedestal add auth-jwt

Commands

pedestal init <name> โ€” Create New Project

Scaffold a new FastAPI project with your chosen features.

# Basic project
pedestal init my-app

# With database and auth
pedestal init my-api --db postgres --auth jwt

# Full stack
pedestal init my-service --db postgres --redis --auth jwt

Options:

  • --db postgres|mysql|sqlite โ€” Add database support
  • --redis โ€” Add Redis caching
  • --auth jwt|session โ€” Add authentication

pedestal add <module> โ€” Add Features Later

Add modules to an existing project without breaking your code.

cd my-api

# Add Redis for caching
pedestal add redis

# Add JWT authentication
pedestal add auth-jwt

# Add database (if not added during init)
pedestal add postgres

pedestal remove <module> โ€” Remove Features

Cleanly remove a module and its code.

pedestal remove redis
pedestal remove auth-jwt

pedestal list โ€” See What's Available

Shows installed modules and available modules you can add.

pedestal list

pedestal doctor โ€” Check Project Health

Diagnoses issues with your pedestal project.

pedestal doctor

Available Modules

  • postgres/mysql/sqlite - Database with async drivers
  • redis - Caching & sessions
  • auth-jwt - JWT authentication
  • auth-session - Session-based auth

How It Works

pedestal doesn't just copy filesโ€”it understands your Python code using AST manipulation. When you run pedestal add redis, it:

  1. Injects Redis connection code into your main app
  2. Updates .env with Redis URL
  3. Adds dependencies to pyproject.toml
  4. Registers routes without touching your custom code

Your project stays clean, typed, and maintainable.

Project Structure

my-app/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ __init__.py       # Package initializer
โ”‚   โ”œโ”€โ”€ main.py           # FastAPI entry
โ”‚   โ”œโ”€โ”€ api/
โ”‚   โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”‚   โ””โ”€โ”€ v1/
โ”‚   โ”‚       โ”œโ”€โ”€ __init__.py
โ”‚   โ”‚       โ””โ”€โ”€ health.py
โ”‚   โ”œโ”€โ”€ core/
โ”‚   โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”‚   โ”œโ”€โ”€ config.py     # Pydantic settings
โ”‚   โ”‚   โ”œโ”€โ”€ database.py   # Database connection (if DB selected)
โ”‚   โ”‚   โ””โ”€โ”€ registry.py   # Auto-router registration
โ”‚   โ””โ”€โ”€ models/
โ”‚       โ””โ”€โ”€ __init__.py
โ”œโ”€โ”€ tests/
โ”‚   โ””โ”€โ”€ __init__.py
โ”œโ”€โ”€ .env.example          # Environment template
โ”œโ”€โ”€ .gitignore           # Git ignore rules
โ”œโ”€โ”€ .Pedestal.json         # Tracks installed modules
โ”œโ”€โ”€ pyproject.toml       # Dependencies
โ””โ”€โ”€ README.md            # Project readme

Documentation

License

MIT License

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

pedestal-1.0.0.tar.gz (33.7 kB view details)

Uploaded Source

Built Distribution

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

pedestal-1.0.0-py3-none-any.whl (34.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pedestal-1.0.0.tar.gz
  • Upload date:
  • Size: 33.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for pedestal-1.0.0.tar.gz
Algorithm Hash digest
SHA256 0f95e7869cf451fe858a7c06ed824390102b78fa2ef6b73db2c5ec249fbad1e6
MD5 f922738b2d6229c7ef712f2f39f1badd
BLAKE2b-256 b64016fb7c3729b4e46859c97f03467df900601ee5a2af9e47bb3b39296c78b0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pedestal-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 34.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for pedestal-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bf9d84084ff56131a0ede45074bb792e18bfd97d70635eea742d621662c449d6
MD5 f40260403eab7f0d1aa0c5533a5f71c1
BLAKE2b-256 8997ae576be125bf0dcfbbf7b46a9ff259876bd44984b5cd48fb501eb99461b2

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