Tailwind CSS: Configuración y Fundamentos — Desarrollo PWA-Ready
URL: https://ruvebal.github.io/web-atelier-udit/lessons/es/tailwind/setup-and-fundamentals/
📋 Tabla de contenidos
- 🎭 Enfoque de Codificación Crítica
- Requisitos
- 🚀 Desarrollo PWA-Ready: Por qué importa
- S1 — Configuración y Fundamentos (Mobile-First, Utility-First)
- 🎓 Explicaciones Pedagógicas
- Preguntas Críticas del Atelier
- 🏗️ Scaffold Mínimo de Repositorio
- Inicializa Git y conecta con GitHub (HTTPS)
- Referencias
Tailwind CSS: Configuración y Fundamentos — Desarrollo PWA-Ready
Divulgación de asistencia IA: Esta lección se basa en experiencia docente desde septiembre 2024, con iteraciones de IA siguiendo ciclos investigación–práctica–investigación.
🎭 Enfoque de Codificación Crítica
Esta lección sigue la metodología del atelier (exploración → reflexión → conceptualización → producción → exhibición). Codificamos no para automatizar, sino para articular — dar forma al pensamiento mediante ritmo, reflexión y consistencia.
- Exploración: Experimentos prácticos de codificación guiados por teoría.
- Reflexión: Comprensión de lo que ocurre detrás del código.
- Conceptualización: Conexión del trabajo práctico con teoría y ética del diseño.
- Producción: Construcción de proyectos individuales con conciencia crítica.
- Exhibición: Publicación y discusión colectiva de resultados.
Requisitos
📚 Antes de comenzar
- Node.js LTS (20+): Runtime JavaScript para herramientas
- npm/npx: Gestor de paquetes y ejecutor (npx incluido desde npm v5.2+)
- HTML/CSS básico: Marcado semántico y fundamentos de estilos
- Línea de comandos: Familiaridad con terminal/comandos
- Editor de texto: VS Code con extensión Live Server recomendado
🚀 Desarrollo PWA-Ready: Por qué importa
Las Progressive Web Apps (PWAs) representan la convergencia entre experiencias web y nativas. A diferencia de sitios web tradicionales puramente server-rendered o SPAs básicas, las PWAs pueden:
- Funcionar offline mediante service workers
- Instalarse en dispositivos como apps nativas
- Enviar notificaciones push para engagement
- Acceder a APIs de dispositivo (cámara, GPS, etc.)
- Proporcionar rendimiento app-like con estrategias de caché
Nuestra configuración Tailwind + Vite crea una base PWA-ready que puede mejorarse con service workers, archivos manifest y estrategias de caché más adelante en el curso.
S1 — Configuración y Fundamentos (Mobile-First, Utility-First)
Esta sesión introduce utility-first CSS como enfoque de sistema de diseño donde clases como .bg-blue-500 o .p-4 aplican estilos únicos directamente en el marcado. Esto contrasta con CSS tradicional donde escribes clases y selectores personalizados.
Implementación paso a paso
-
Instala Node.js LTS (20+) y verifica:
node -v(debe mostrar 20.x.x) -
Crea proyecto Vite:
npm create vite@latest portafolio-tailwind -- --template vanilla cd portafolio-tailwind npm install npm run devEsto crea un proyecto moderno con servidor de desarrollo de Vite (típicamente
http://localhost:5173). -
Instala Tailwind CSS:
npm install -D tailwindcss postcss autoprefixer npx tailwindcss init -p -
Configura Tailwind:
// tailwind.config.js /** @type {import('tailwindcss').Config} */ export default { content: ['./index.html', './src/**/*.{js,ts,jsx,tsx}'], theme: { extend: {}, }, plugins: [], }; -
Habilita Tailwind en CSS:
/* src/style.css */ @tailwind base; @tailwind components; @tailwind utilities; -
Importa CSS en main.js:
// src/main.js import './style.css'; -
Construye sección hero con utilidades:
<!-- index.html --> <div class="min-h-screen bg-gradient-to-br from-blue-50 to-indigo-100"> <div class="container mx-auto px-4 py-8"> <header class="text-center"> <h1 class="text-4xl md:text-6xl font-bold text-gray-900 mb-4">Portafolio Moderno</h1> <p class="text-xl md:text-2xl text-gray-600 mb-8">Construido con Tailwind CSS & Vite</p> <a href="#proyectos" class="inline-block bg-blue-500 hover:bg-blue-600 text-white font-bold py-3 px-8 rounded-lg transition-colors"> Ver Proyectos </a> </header> </div> </div> -
Prueba responsividad: Redimensiona navegador o usa vista móvil en dev tools para ver comportamiento mobile-first.
-
Haz commit de tu trabajo:
git add . git commit -m "feat: S1 - Configuración Vite + Tailwind; sección hero mobile-first"
🎓 Explicaciones Pedagógicas
¿Por qué Utility-First CSS?
CSS tradicional separa estilos del marcado, creando desafíos de mantenibilidad a medida que los proyectos escalan. Los enfoques utility-first como Tailwind colocalizan estilos con componentes, reduciendo tamaño de archivos CSS y mejorando experiencia de desarrollo.
Contexto histórico: El movimiento utility-first evolucionó de:
- BASSCSS (2013): Framework utility temprano
- Tachyons (2014): Popularizó clases utility inmutables
- Tailwind (2017): Hizo las utilidades accesibles con nombres intuitivos
Ventajas clave:
- Bundles más pequeños: Utilidades no usadas se purgan en producción
- Desarrollo más rápido: Sin cambio de contexto entre HTML/CSS
- Diseño consistente: Utilidades refuerzan restricciones del sistema de diseño
- Responsive por defecto: Mobile-first con variantes de breakpoints
Posibles desventajas:
- Contaminación HTML: Muchas clases pueden hacer el marcado más difícil de leer
- Curva de aprendizaje: Requiere entender composición de utilidades
- Límites de personalización: Personalización pesada puede requerir
@applyo CSS personalizado
Preguntas Críticas del Atelier
Siguiendo nuestra metodología del atelier, reflexiona sobre estas preguntas:
Exploración
- ¿Qué aprendiste al componer con utilidades frente a escribir clases CSS personalizadas?
- ¿Cómo cambió el enfoque utility-first tu relación con el estilizado?
Reflexión
- ¿Qué decisiones con utilidades mejoraron la legibilidad? ¿Cuáles la perjudicaron?
- ¿Cómo afecta la colocalización de estilos con marcado a la mantenibilidad?
Conceptualización
- ¿Cómo se relaciona utility-first CSS con sistemas de diseño y tokens?
- ¿De qué maneras encarna este enfoque “diseño como código”?
Producción
- ¿Qué comunica tu mensaje de commit a colaboradores futuros?
- ¿Cómo podría escalar este enfoque para equipos o proyectos más grandes?
Exhibición
- ¿Cómo demostrarás el comportamiento responsive mobile-first en una presentación en vivo?
- ¿Qué enfoques alternativos de estilizado podrían lograr resultados similares?
🏗️ Scaffold Mínimo de Repositorio
Aquí tienes un punto de partida completo para tu proyecto Tailwind + Vite:
portafolio-tailwind/
├── index.html
├── src/
│ ├── main.js
│ └── style.css
├── tailwind.config.js
├── postcss.config.js
└── package.json
index.html:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Portafolio Tailwind</title>
<script type="module" src="/src/main.js"></script>
</head>
<body>
<div class="min-h-screen bg-gray-50">
<div class="container mx-auto px-4 py-8">
<!-- Tu contenido aquí -->
</div>
</div>
</body>
</html>
src/main.js:
import './style.css';
// Opcional: Añade interactividad básica
document.addEventListener('DOMContentLoaded', () => {
console.log('¡Portafolio Tailwind cargado!');
});
src/style.css:
@tailwind base;
@tailwind components;
@tailwind utilities;
/* Estilos personalizados pueden ir aquí */
@layer base {
body {
font-family: system-ui, -apple-system, sans-serif;
}
}
Inicializa Git y conecta con GitHub (HTTPS)
Versiona tu proyecto y publícalo en GitHub usando HTTPS (sin SSH).
- Inicializa el repo y crea un
.gitignorebásico
git init
printf "node_modules/\n.vite/\ndist/\n.env\n.DS_Store\n" >> .gitignore
- Configura tu identidad de Git (una vez por máquina)
git config --global user.name "Tu Nombre"
git config --global user.email "tu.email@ejemplo.com"
- Primer commit
git add -A
git commit -m "chore: inicializa proyecto con Tailwind + Vite"
- Crea un repo vacío en GitHub (interfaz web) y copia la URL HTTPS, por ejemplo:
https://github.com/<tu-usuario>/<tu-repo>.git
- Añade el remoto y haz push (usa un Personal Access Token cuando te lo pida)
git remote add origin https://github.com/<tu-usuario>/<tu-repo>.git
git branch -M main
git push -u origin main
Notas
- Si tienes 2FA, GitHub pedirá un Personal Access Token (classic) en lugar de contraseña: Settings → Developer settings → Personal access tokens → Generate new token (classic). Scope: repo.
- Para actualizar más adelante:
git add -A && git commit -m "feat: ..." && git push.
Referencias
- MDN - Fundamentos de gestión de paquetes
- Vite - Despliegue de sitio estático
- Tailwind CSS - Guía de instalación
- FreeCodeCamp - npm vs npx
- PostCSS - ¿Qué es PostCSS?
- Frameworks CSS utility-first
Siguiente: S2 - Ruteo SPA y Layout →