Skip to main content

🚀 Fastplate

PyPI version Python 3.12+ License: MIT

Fastplate is a CLI tool that scaffolds production-ready FastAPI projects with Tailwind CSS, DaisyUI, and Jinja2 templates in seconds.

✨ Features

  • 🏗️ FastAPI backend with async support and automatic OpenAPI docs
  • 🎨 Tailwind CSS v4 + DaisyUI for beautiful, responsive UIs
  • 📄 Jinja2 server-side templating with component-based structure
  • 📦 uv for fast Python dependency management
  • 🐳 Docker & docker-compose ready for deployment
  • ⚡ Hot reload for both backend and CSS during development
  • 🔧 Makefile with common development commands

📦 Installation

With uv (recommended)

uv add fastplate

With pip

pip install fastplate

With pipx (global install)

pipx install fastplate

🚀 Quick Start

Using uv (recommended)

# Create a new project directory and add fastplate
mkdir my-app && cd my-app
uv init
uv add fastplate

# Initialize the project
uv run fastplate init --name "My App"

# Start development
make dev          # FastAPI server at http://localhost:8000
make npm-watch    # Tailwind CSS watcher (in another terminal)

Using pip/pipx

# Create in a new directory
fastplate init ./my-app --name "My App"
cd my-app

# Start development
make dev
make npm-watch

📖 CLI Reference

Fastplate uses a command-based CLI structure.

Commands

Command Description
init Initialize a new FastAPI + Tailwind CSS project

fastplate init

Scaffolds a new project with the full FastAPI + Tailwind CSS stack.

fastplate init [OPTIONS] [PATH]
# or with uv
uv run fastplate init [OPTIONS] [PATH]

Arguments

Argument Description Default
PATH Directory to create the project in . (current directory)

Options

Option Short Description
--name TEXT -n Project name (prompts if not provided)
--skip-install Skip automatic dependency installation
--force -f Overwrite existing project files
--help Show help message and exit

Examples

# Interactive mode - prompts for project name
uv run fastplate init

# Specify project name directly
uv run fastplate init --name "My Awesome App"

# Create in a specific directory
uv run fastplate init ./projects/my-app --name my-app

# Skip automatic dependency installation
uv run fastplate init --skip-install

# Overwrite existing project files
uv run fastplate init --force

# Short flags
uv run fastplate init -n "My App" -f

What it does

  1. Copies template - Scaffolds the full project structure into the target directory
  2. Replaces placeholders - Injects your project name into config files (pyproject.toml, templates, etc.)
  3. Installs Python deps - Runs uv sync to install FastAPI and dependencies
  4. Installs npm deps - Runs npm install in frontend/ for Tailwind CSS

Use --skip-install if you want to handle dependency installation manually.

📁 Generated Project Structure

my-app/
├── app/
│   ├── __init__.py
│   ├── main.py              # FastAPI application entry point
│   ├── api/                  # API routes (REST endpoints)
│   ├── core/
│   │   ├── config.py        # Settings & configuration
│   │   └── middleware.py    # Custom middleware
│   ├── models/              # Database models (SQLAlchemy, etc.)
│   ├── schemas/             # Pydantic schemas for validation
│   ├── services/            # Business logic layer
│   └── views/               # HTML view routes (Jinja2)
│       └── index.py
├── frontend/
│   ├── package.json         # npm dependencies (Tailwind)
│   ├── static/
│   │   └── css/
│   │       ├── input.css    # Tailwind source
│   │       └── output.css   # Compiled CSS
│   └── templates/
│       ├── base.html        # Base template with layout
│       ├── components/      # Reusable Jinja2 components
│       │   ├── card.html
│       │   └── navbar.html
│       └── pages/           # Page templates
│           └── index.html
├── Dockerfile
├── docker-compose.yml
├── Makefile                 # Development commands
├── pyproject.toml           # Python project config
└── README.md                # Project-specific docs

🛠️ Development Commands

The generated project includes a Makefile with these commands:

make dev          # Start FastAPI dev server with hot reload
make run          # Start production server
make npm-watch    # Watch & compile Tailwind CSS
make npm-build    # Build minified CSS for production
make docker-up    # Start with Docker Compose
make docker-down  # Stop Docker containers
make clean        # Remove generated files

🎨 Styling with Tailwind & DaisyUI

The template uses Tailwind CSS v4 with DaisyUI components.

Edit frontend/static/css/input.css to customize your styles:

@import "tailwindcss";
@plugin "daisyui";

/* Your custom styles here */

Run make npm-watch during development to auto-compile CSS changes.

🐳 Docker Deployment

# Build and run with Docker Compose
make docker-up

# Or manually
docker build -t my-app .
docker run -p 8000:8000 my-app

📋 Requirements

  • Python 3.12+
  • Node.js 18+ (for Tailwind CSS)
  • uv (recommended) or pip

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

📄 License

MIT License - see LICENSE for details.

Metadata

Release files for fastplate 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fastplate 0.1.0
File Size Uploaded
fastplate-0.1.0.tar.gz 74.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fastplate 0.1.0
File Interpreter ABI Platform
fastplate-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 118.2 kB

Release files / fastplate-0.1.0.tar.gz

Download URL fastplate-0.1.0.tar.gz
Size 74.5 kB
Tags Source
SHA-256 checksum
How to use checksums
0c79222faf3e55e7aa6820ef5c91cfdf1aa44ed13968f25342453be10604864c
BLAKE2b-256 checksum
How to use checksums
2d9fe427a917fca27a3e41781e36ecd5bcb1a06ed869e48bfc76827b43af255f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.5.10

Release files / fastplate-0.1.0-py3-none-any.whl

Download URL fastplate-0.1.0-py3-none-any.whl
Size 43.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4f31688723173282f11d0e66855aa8aad3fe2cb5f12272cfe62c1ed2d2966790
BLAKE2b-256 checksum
How to use checksums
a5f7ffa261ff1c3db226042c29c1ef63ea890d6f1a93f6ce6cff7980faf83074
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.5.10

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page