Skip to main content

TailwindCSS integration for Starlette apps

Project description

Starlette Tailwind CSS

starlette-tailwindcss is a lightweight utility for Starlette that builds Tailwind CSS on startup with optional watch mode during development.

It integrates directly with your Starlette app and provides:

  • Builds CSS on startup.
  • Automatically rebuilds on changes in watch mode.
  • Optional tailwindcss CLI binary auto-installation.
  • Fully typed, following Starlette patterns.

Installation

uv add starlette-tailwindcss
# or
pip install starlette-tailwindcss

Example

from contextlib import asynccontextmanager
from pathlib import Path

from starlette.applications import Starlette
from starlette.routing import Mount
from starlette.staticfiles import StaticFiles

from starlette_tailwindcss import TailwindCSS

static_dir = Path(__file__).parent / "static"

tailwind = TailwindCSS(
    version="v4.2.2",
    input="src/acme/web/style.css",
    output=static_dir / "css" / "output.css",
)

@asynccontextmanager
async def lifespan(app: Starlette):
    async with tailwind.build(watch=app.debug):
        yield

routes = [
    Mount("/static", app=StaticFiles(directory=static_dir), name="static"),
]

app = Starlette(
    debug=True,
    routes=routes,
    lifespan=lifespan,
)

Use the generated CSS file in your templates:

<link rel="stylesheet" href="{{ url_for('static', path='css/output.css') }}" />

How it works

starlette-tailwindcss runs the Tailwind CLI alongside your app.

  • Builds CSS when the app starts.
  • Rebuilds CSS in watch mode during development.
  • Stops the process when the app shuts down.

Usage

You can use an existing Tailwind CSS CLI binary:

tailwind = TailwindCSS(
    bin_path="/usr/local/bin/tailwindcss",
    input="src/acme/web/style.css",
    output=static_dir / "css" / "output.css",
)

Or let the package download a release automatically:

tailwind = TailwindCSS(
    version="v4.2.2",
    input="src/acme/web/style.css",
    output=static_dir / "css" / "output.css",
)

bin_path and version are mutually exclusive.

Debug logging

To see Tailwind CSS CLI output:

import logging

logging.basicConfig(level=logging.INFO)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

starlette_tailwindcss-0.1.0.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

starlette_tailwindcss-0.1.0-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

Details for the file starlette_tailwindcss-0.1.0.tar.gz.

File metadata

  • Download URL: starlette_tailwindcss-0.1.0.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for starlette_tailwindcss-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e83416fa8dfe05775e78eb22f16dd4dc2a2ecb3771273d888cd4bae4d367ad60
MD5 aa693ecdddad34692368046b1ef1ac0a
BLAKE2b-256 aa0b650ca648b08cd19143bc98594b82edd24959a3a06416e1aad65982ca3708

See more details on using hashes here.

File details

Details for the file starlette_tailwindcss-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: starlette_tailwindcss-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for starlette_tailwindcss-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e5317a939536f7224f868c76e044c557de897994433bbabc4881cb81e7b26b28
MD5 ceaf72db679b9b70abb532981b92a169
BLAKE2b-256 a16c7bbc5d6bf6243531a980e53624b5b1e6c06c025896ac5b325f76e3ca88de

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page