django-tailwind-cli

The simplest way to integrate Tailwind CSS with Django ⚡
No Node.js required! This library provides seamless Tailwind CSS integration for Django using the standalone Tailwind CSS CLI. Inspired by the Tailwind integration for Phoenix, it eliminates the need for Node.js in your Django development workflow.
[!WARNING]
Version Compatibility: 4.2.x+ supports Tailwind CSS 4.x only. For Tailwind CSS 3.x, use version 2.21.1.
✨ Why django-tailwind-cli?
- 🚀 Zero Node.js dependency - No npm, webpack, or build tools required
- ⚡ Instant setup - Get Tailwind running in under 5 minutes
- 🔄 Hot reload - Watch mode with automatic CSS rebuilding
- 📦 Production ready - Optimized builds with automatic purging
- 🎨 DaisyUI support - Built-in component library integration
- 🛠️ Developer friendly - Rich CLI with helpful error messages and debugging tools
🚀 Quick Start
1. Install the package
pip install django-tailwind-cli
uv add django-tailwind-cli
poetry add django-tailwind-cli
2. Configure Django settings
Add to your settings.py
:
INSTALLED_APPS = [
"django_tailwind_cli",
]
STATICFILES_DIRS = [BASE_DIR / "assets"]
3. Set up your base template
Create or update your base template (e.g., templates/base.html
):
<!DOCTYPE html>
{% load tailwind_cli %}
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My Django App</title>
{% tailwind_css %}
</head>
<body class="bg-gray-50">
<div class="container mx-auto px-4">
{% block content %}{% endblock %}
</div>
</body>
</html>
4. Interactive setup (recommended for first-time users)
python manage.py tailwind setup
This will guide you through the complete setup process!
5. Start developing
python manage.py tailwind runserver
python manage.py tailwind watch
python manage.py runserver
🎉 You're ready to go!
Start adding Tailwind classes to your templates:
{% extends "base.html" %}
{% block content %}
<div class="max-w-4xl mx-auto py-12">
<h1 class="text-4xl font-bold text-gray-900 mb-8">
Welcome to Django + Tailwind!
</h1>
<p class="text-lg text-gray-600">
This text is styled with Tailwind CSS.
</p>
<button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded mt-4">
Click me!
</button>
</div>
{% endblock %}
📚 Next Steps: Check out the full documentation for advanced configuration and usage patterns.
🎯 Core Features
🏗️ Build System
- Automatic CLI download - No manual setup required
- Smart caching - Faster rebuilds with file change detection
- Production optimization - Automatic CSS purging and minification
- Force rebuild -
--force
flag for clean builds
🔧 Development Tools
- Interactive setup -
python manage.py tailwind setup
- Configuration viewer -
python manage.py tailwind config
- Template scanner -
python manage.py tailwind list_templates
- Troubleshooting guide -
python manage.py tailwind troubleshoot
🎨 Styling Features
- Tailwind CSS 4.x - Latest features and performance improvements
- DaisyUI integration - Pre-built components via tailwindcss-cli-extra
- Custom CSS support - Bring your own styles and configurations
- Template tag - Simple
{% tailwind_css %}
inclusion
⚡ Performance
- File change detection - Only rebuild when necessary
- Concurrent processing - Parallel build and server processes
- Progress indicators - Visual feedback during downloads and builds
- Verbose logging - Detailed diagnostics with
--verbose
🛠️ Management Commands
setup | Interactive setup guide | python manage.py tailwind setup |
build | Production CSS build | python manage.py tailwind build |
watch | Development file watcher | python manage.py tailwind watch |
runserver | Combined server + watcher | python manage.py tailwind runserver |
config | Show current configuration | python manage.py tailwind config |
troubleshoot | Debug common issues | python manage.py tailwind troubleshoot |
📋 Requirements
- Python: 3.10+
- Django: 4.0+
- Platform: Windows, macOS, Linux (automatic platform detection)
⚙️ Configuration Examples
Basic Configuration
STATICFILES_DIRS = [BASE_DIR / "assets"]
Advanced Configuration
TAILWIND_CLI_VERSION = "4.1.3"
TAILWIND_CLI_SRC_CSS = "src/styles/main.css"
TAILWIND_CLI_DIST_CSS = "css/app.css"
TAILWIND_CLI_USE_DAISY_UI = True
TAILWIND_CLI_PATH = "/usr/local/bin/tailwindcss"
TAILWIND_CLI_AUTOMATIC_DOWNLOAD = False
Production Settings
TAILWIND_CLI_VERSION = "4.1.3"
TAILWIND_CLI_AUTOMATIC_DOWNLOAD = False
TAILWIND_CLI_DIST_CSS = "css/tailwind.min.css"
🔍 Troubleshooting
Common Issues
CSS not updating?
python manage.py tailwind build --force
python manage.py tailwind troubleshoot
Configuration problems?
python manage.py tailwind config
python manage.py tailwind setup
Missing templates?
python manage.py tailwind list_templates --verbose
Performance Tips
- Use file watching:
python manage.py tailwind runserver
for automatic rebuilds
- Check template scanning: Ensure all template directories are included
- Optimize builds: Use
--force
only when necessary
- Monitor file changes: Use
--verbose
for detailed logging
🎨 DaisyUI Integration
Enable beautiful pre-built components:
TAILWIND_CLI_USE_DAISY_UI = True
<button class="btn btn-primary">Primary Button</button>
<div class="card bg-base-100 shadow-xl">
<div class="card-body">
<h2 class="card-title">Card Title</h2>
<p>Card content goes here.</p>
</div>
</div>
📚 Documentation & Resources
🔗 Related Projects
🤝 Contributing
We welcome contributions! This project uses modern Python tooling for development.
Prerequisites
- uv - Fast Python package manager
- just - Command runner (optional but recommended)
Quick Development Setup
git clone https://github.com/django-commons/django-tailwind-cli.git
cd django-tailwind-cli
just bootstrap
uv venv
uv sync --all-extras
Development Commands
just upgrade
just lint
just test
just test-all
uv sync --all-extras
uvx pre-commit run --all-files
uv run pytest
uvx --with tox-uv tox
Contribution Guidelines
- 🍴 Fork the repository
- 🌿 Create a feature branch (
git checkout -b feature/amazing-feature
)
- ✅ Test your changes (
just test
)
- 📝 Commit with conventional commits (
feat:
, fix:
, docs:
, etc.)
- 📤 Push to your branch (
git push origin feature/amazing-feature
)
- 🔄 Create a Pull Request
Code Quality
- Type hints for all new code
- Tests for new features and bug fixes
- Documentation updates for user-facing changes
- Conventional commits for clear history
License
This software is licensed under MIT license.