Cómo configurar FastAPI con Tailwind CSS

Gráfico mostrando los logos de FastAPI y Tailwind CSS combinados

Introducción

Actualizado Septiembre 2025: Este post ha sido actualizado para incluir las instrucciones más recientes de configuración de Tailwind CSS v4.0 junto con el tutorial original de v3.0.

En este post te comparto cómo configurar FastAPI (mi framework web favorito) con Tailwind CSS (mi framework CSS favorito).

Enlaces útiles

Actualización para Tailwind CSS v4.0: Un tutorial de YouTube que he hecho para v4.0 puede encontrarse en YouTube: FastAPI con Tailwind CSS v4.0.

Obsoleto (para Tailwind CSS v3.0): Un tutorial de YouTube que he hecho para v3.0 puede encontrarse en YouTube: FastAPI con Tailwind CSS v3.0.

El repositorio de GitHub con el código fuente completo está disponible como referencia. Siéntete libre de contactarme en x(twitter) si tienes alguna pregunta.

Instrucciones

1.- Configura tu proyecto FastAPI

Necesitas instalar:

FastAPI

pip install fastapi

Servidor ASGI

pip install "uvicorn[standard]"

Motor de plantillas

Para este ejemplo usaremos Jinja2.

pip install Jinja2

2.- Devuelve HTML desde tu ruta de FastAPI

Crea una carpeta “templates” en tu proyecto

Necesitas crear una nueva carpeta “templates” y crear un archivo “base.html” dentro.

mkdir templates && touch templates/base.html

ahora agregaremos algo de HTML básico.

<!DOCTYPE html>
<html lang="es">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Documento</title>
  </head>
  <body></body>
</html>

Agrega TemplateResponse a la respuesta de tu ruta

Ahora necesitamos configurar Jinja2Templates con nuestra carpeta “templates” y devolver un TemplateResponse en nuestra ruta index.

from fastapi import FastAPI, Request
from fastapi.templating import Jinja2Templates

app = FastAPI()

templates = Jinja2Templates(directory="templates")

@app.get("/")
async def index(request: Request):
    return templates.TemplateResponse("base.html", {"request": request})

3.- Crea una carpeta “tailwindcss” en tu proyecto

Aquí agregaremos los archivos de TailwindCSS.

mkdir tailwindcss

4.- Instala TailwindCSS

Inicia una nueva terminal dentro de la carpeta de tu proyecto y cambia el directorio de trabajo a la carpeta “tailwindcss”.

cd tailwindcss

y luego ejecuta el siguiente comando, con el gestor de paquetes que prefieras usar.

npm

npm install -D tailwindcss @tailwindcss/cli

pnpm

pnpm install -D tailwindcss @tailwindcss/cli

yarn

yarn add -D tailwindcss @tailwindcss/cli

5.- Crea una nueva carpeta “styles” dentro de tu carpeta tailwindcss

Aquí agregaremos nuestros estilos personalizados.

Para eso necesitamos crear una nueva carpeta “styles” dentro de nuestra carpeta “tailwindcss”.

mkdir styles

ahora necesitamos crear un nuevo archivo “app.css” dentro de esta carpeta.

touch styles/app.css

luego agrega las siguientes directivas.

@import "tailwindcss";
@source "../../templates";

6.- Ejecuta el proceso de compilación CLI de TailwindCSS

Este proceso generará un archivo “app.css” dentro de una nueva carpeta “static/css”.

La bandera “—watch” se asegurará de que los estilos se actualicen cada vez que hagas un cambio en tus archivos.

npx @tailwindcss/cli -i ./styles/app.css -o ../static/css/app.css --watch

7.- Agrega la hoja de estilos de TailwindCSS a tu archivo base.html

Monta la carpeta static

Para montar esta carpeta necesitamos agregar las siguientes líneas a nuestro archivo main.py.

Importa los archivos estáticos.

from fastapi.staticfiles import StaticFiles

Agrega la carpeta static a tu aplicación.

app.mount("/static", StaticFiles(directory="static"), name="static")

Ahora podemos agregar la hoja de estilos a nuestro archivo base.html.

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

8.- Sirviendo archivos comprimidos con el middleware GZip

Para servir archivos comprimidos necesitamos importar el middleware.

agrega el middleware a tu aplicación.

app.add_middleware(GZipMiddleware)

Script para ejecutar el proceso de compilación CLI de TailwindCSS

Podemos crear un script en el archivo package.json para ejecutar el proceso de compilación CLI de TailwindCSS.

"scripts": {
    "dev": "npx @tailwindcss/cli -i ./styles/app.css -o ../static/css/app.css --watch"
},

Y luego simplemente ejecutar.

npm

npm run dev

pnpm

pnpm dev

yarn

yarn dev

para ejecutar el proceso de compilación de Tailwind CSS.

Ahora tienes Tailwind CSS v4.0 configurado en tu proyecto FastAPI.

Acerca del autor:

Victor Sejas Photo

Victor Sejas

Ingeniero Civil Estructural | Ingeniero de Software Senior Contractor en Bentley Systems Inc.