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.