Fastplate is a CLI tool that scaffolds production-ready FastAPI projects with Tailwind CSS, DaisyUI, and Jinja2 templates in seconds.
- ποΈ 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
uv add fastplatepip install fastplatepipx install fastplate# 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)# Create in a new directory
fastplate init ./my-app --name "My App"
cd my-app
# Start development
make dev
make npm-watchFastplate uses a command-based CLI structure.
| Command | Description |
|---|---|
init |
Initialize a new FastAPI + Tailwind CSS project |
Scaffolds a new project with the full FastAPI + Tailwind CSS stack.
fastplate init [OPTIONS] [PATH]
# or with uv
uv run fastplate init [OPTIONS] [PATH]| Argument | Description | Default |
|---|---|---|
PATH |
Directory to create the project in | . (current directory) |
| 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 |
# 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- Copies template - Scaffolds the full project structure into the target directory
- Replaces placeholders - Injects your project name into config files (
pyproject.toml, templates, etc.) - Installs Python deps - Runs
uv syncto install FastAPI and dependencies - Installs npm deps - Runs
npm installinfrontend/for Tailwind CSS
Use --skip-install if you want to handle dependency installation manually.
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
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 filesThe 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.
# Build and run with Docker Compose
make docker-up
# Or manually
docker build -t my-app .
docker run -p 8000:8000 my-app- Python 3.12+
- Node.js 18+ (for Tailwind CSS)
- uv (recommended) or pip
Contributions are welcome! Please feel free to submit a Pull Request.
MIT License - see LICENSE for details.