Scaffold FastAPI projects in seconds, add features as you grow
Project description
๐ชจ pedestal
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:
- Injects Redis connection code into your main app
- Updates
.envwith Redis URL - Adds dependencies to
pyproject.toml - 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
Release history Release notifications | RSS feed
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f95e7869cf451fe858a7c06ed824390102b78fa2ef6b73db2c5ec249fbad1e6
|
|
| MD5 |
f922738b2d6229c7ef712f2f39f1badd
|
|
| BLAKE2b-256 |
b64016fb7c3729b4e46859c97f03467df900601ee5a2af9e47bb3b39296c78b0
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf9d84084ff56131a0ede45074bb792e18bfd97d70635eea742d621662c449d6
|
|
| MD5 |
f40260403eab7f0d1aa0c5533a5f71c1
|
|
| BLAKE2b-256 |
8997ae576be125bf0dcfbbf7b46a9ff259876bd44984b5cd48fb501eb99461b2
|