Este proyecto es un boilerplate (plantilla base) muy simple de React diseñado para servir como punto de partida en el desarrollo de aplicaciones web modernas. Incluye una configuración mínima pero funcional con las herramientas esenciales para comenzar a trabajar de inmediato. El boilerplate es completamente responsive y se adapta automáticamente a diferentes tamaños de pantalla y dispositivos, desde móviles hasta pantallas de escritorio.
Un boilerplate es una plantilla de proyecto preconfigurada que incluye la estructura básica, dependencias y configuración necesarias para iniciar un nuevo proyecto sin tener que configurar todo desde cero. Este boilerplate te permite comenzar a desarrollar componentes y vistas de React inmediatamente.
Este proyecto utiliza las siguientes tecnologías principales:
-
React 19.2.0: Biblioteca de JavaScript para construir interfaces de usuario mediante componentes reutilizables. Permite crear aplicaciones interactivas de forma eficiente.
-
TypeScript: Extensión de JavaScript que añade tipado estático. Ayuda a detectar errores durante el desarrollo y mejora la mantenibilidad del código mediante tipos explícitos.
-
Vite: Herramienta de build y servidor de desarrollo extremadamente rápida. Proporciona Hot Module Replacement (HMR), lo que significa que los cambios en el código se reflejan instantáneamente en el navegador sin recargar la página completa.
-
React Router DOM 7.12.0: Biblioteca para manejar el enrutamiento en aplicaciones React de una sola página (SPA). Permite navegar entre diferentes vistas sin recargar la página.
-
ESLint: Herramienta de análisis estático que identifica problemas en el código JavaScript/TypeScript. Ayuda a mantener un código consistente y libre de errores comunes.
El proyecto está organizado de la siguiente manera:
src/
├── components/ # Componentes reutilizables
│ ├── Button/ # Componente de botón
│ ├── Card/ # Componente de tarjeta
│ ├── Layout/ # Componente Layout común
│ └── Paragraph/ # Componente de párrafo
├── views/ # Vistas/páginas de la aplicación
│ └── HomeView/ # Vista principal de ejemplo
├── App.tsx # Componente raíz con configuración de rutas
├── main.tsx # Punto de entrada de la aplicación
├── App.css # Estilos de la aplicación
└── index.css # Estilos globales y variables CSS
-
src/components/: Contiene componentes reutilizables que pueden ser utilizados en múltiples partes de la aplicación. Cada componente tiene su propia carpeta con el archivo TypeScript y su archivo CSS correspondiente. -
src/views/: Contiene las vistas o páginas principales de la aplicación. Cada vista representa una ruta diferente en la aplicación. Todas las vistas están automáticamente envueltas por el componente Layout. -
src/App.tsx: Es el componente raíz que configura el enrutamiento de la aplicación usando React Router. Define qué componente se muestra para cada ruta y envuelve todas las rutas con el componente Layout. -
src/main.tsx: Es el punto de entrada de la aplicación. Aquí se inicializa React y se renderiza el componente App en el DOM. -
src/index.css: Contiene los estilos globales y todas las variables CSS del sistema de diseño, incluyendo la paleta de azules, espaciado, tipografía, bordes y sombras.
El boilerplate incluye varios componentes que demuestran patrones básicos de desarrollo:
Componente que proporciona una estructura común para todas las páginas de la aplicación. Incluye un header con navegación, un área de contenido principal y un footer. Todas las vistas están automáticamente envueltas por este componente, garantizando una apariencia consistente en toda la aplicación.
Características:
- Header con fondo azul primario y navegación
- Área de contenido principal con contenedor centrado
- Footer con fondo azul oscuro
- Diseño completamente responsive: Se adapta automáticamente a móviles, tablets y escritorio
- Sin scroll horizontal: Control de overflow para evitar desbordes en cualquier dispositivo
- Navegación adaptativa: El menú se reorganiza según el tamaño de pantalla
El Layout se aplica automáticamente a todas las rutas definidas en App.tsx, por lo que no necesitas importarlo manualmente en tus vistas.
Componente de botón reutilizable que puede realizar dos acciones principales:
- Navegación a URLs: Puede redirigir a una URL interna o externa
- Ejecución de funciones: Puede ejecutar una función personalizada cuando se hace clic
Props disponibles:
text(requerido): Texto que se muestra en el botónurl(opcional): URL a la que navegar cuando se hace clicexternal(opcional): Si estrue, abre la URL en una nueva pestañaonClick(opcional): Función personalizada que se ejecuta al hacer clic
Ejemplo de uso:
<Button text="Abrir página de Google" url="https://www.google.es" external={true} />Componente de tarjeta reutilizable que proporciona un contenedor estilizado para agrupar contenido relacionado. Es ideal para mostrar información estructurada, formularios, o cualquier contenido que necesite ser destacado visualmente.
Características:
- Diseño completamente responsive: Se adapta automáticamente a diferentes tamaños de pantalla
- Estilos consistentes: Utiliza las variables del sistema de diseño (colores, espaciado, bordes, sombras)
- Fondo con borde azul primario y sombra para destacar el contenido
- Manejo de palabras largas: Incluye
overflow-wrapyword-wrappara evitar desbordes
Props disponibles:
children(requerido): Contenido que se mostrará dentro de la tarjetaclassName(opcional): Clases CSS adicionales para personalización
Ejemplo de uso:
<Card>
<Paragraph text="Contenido de la tarjeta" />
<Button text="Acción" url="/ruta" />
</Card>Componente simple para mostrar texto con formato. Útil para mantener consistencia en el estilo de los párrafos a lo largo de la aplicación.
Props disponibles:
text(requerido): Texto que se muestra en el párrafo
Ejemplo de uso:
<Paragraph text="src/views/HomeView/HomeView.tsx" />El proyecto incluye la siguiente funcionalidad básica:
-
Configuración de React Router: El enrutamiento está configurado en
App.tsxusandoBrowserRouter,RoutesyRoute. Actualmente hay una ruta configurada para la página principal (/). -
Layout común: Todas las páginas comparten un Layout consistente con header, área de contenido y footer, garantizando una apariencia uniforme en toda la aplicación.
-
Sistema de diseño con paleta de azules: El proyecto utiliza un sistema de diseño basado en tonalidades de azul, con variables CSS centralizadas para colores, espaciado, tipografía, bordes y sombras. Soporta modo claro y oscuro automáticamente.
-
Diseño responsive completo: El boilerplate está optimizado para funcionar perfectamente en todos los dispositivos. Incluye media queries para móviles (hasta 640px), tablets pequeñas (641px-768px), tablets (769px-1024px) y escritorio (1025px+). Todos los componentes, incluyendo el Layout, las cards y la navegación, se adaptan automáticamente al tamaño de pantalla.
-
Vista de ejemplo (HomeView): Una vista de demostración que muestra cómo utilizar los componentes Button, Card y Paragraph. Esta vista sirve como referencia para crear nuevas vistas y demuestra el diseño responsive en acción.
-
Hot Module Replacement (HMR): Gracias a Vite, cualquier cambio que realices en el código se reflejará automáticamente en el navegador sin necesidad de recargar manualmente la página.
-
TypeScript configurado: El proyecto está completamente tipado, lo que proporciona autocompletado y detección de errores en el editor.
El proyecto incluye los siguientes scripts npm para diferentes tareas:
-
npm run dev: Inicia el servidor de desarrollo de Vite. Abre la aplicación enhttp://localhost:5173(o el puerto que Vite asigne automáticamente). Este comando debe ejecutarse durante el desarrollo. -
npm run build: Compila el proyecto para producción. Ejecuta TypeScript para verificar tipos y luego construye una versión optimizada del proyecto en la carpetadist/. Esta versión está lista para ser desplegada. -
npm run lint: Ejecuta ESLint para analizar el código y detectar posibles problemas, errores o inconsistencias en el estilo del código. -
npm run preview: Previsualiza la build de producción localmente. Útil para verificar cómo se verá la aplicación una vez compilada antes de desplegarla.
Asegúrate de tener instalado Node.js (versión 18 o superior) y npm en tu sistema.
- Instala las dependencias del proyecto ejecutando:
npm installEste comando leerá el archivo package.json e instalará todas las dependencias necesarias en la carpeta node_modules/.
Una vez instaladas las dependencias, ejecuta:
npm run devEsto iniciará el servidor de desarrollo y podrás ver la aplicación en tu navegador. La URL se mostrará en la terminal (generalmente http://localhost:5173).
- Crea una nueva carpeta en
src/views/con el nombre de tu vista (por ejemplo,AboutView) - Crea los archivos
AboutView.tsxyAboutView.cssdentro de esa carpeta - Define tu componente en el archivo
.tsx. La vista se renderizará automáticamente dentro del Layout común - Agrega la ruta en
src/App.tsx:
import AboutView from './views/AboutView/AboutView'
// Dentro del componente App, dentro del Layout, agrega:
<Route path="/about" element={<AboutView />} />Nota: Todas las vistas se renderizan automáticamente dentro del Layout, por lo que no necesitas preocuparte por la estructura de header y footer. Solo enfócate en el contenido principal de tu vista.
- Crea una nueva carpeta en
src/components/con el nombre de tu componente - Crea los archivos
ComponentName.tsxyComponentName.css - Define la interfaz de props usando TypeScript
- Implementa el componente y expórtalo como default
- Importa y usa el componente donde lo necesites
El proyecto utiliza un sistema de diseño basado en tonalidades de azul con variables CSS centralizadas. Todas las variables están definidas en src/index.css y pueden ser utilizadas en cualquier componente. El sistema está completamente optimizado para ser responsive y funcionar en todos los dispositivos.
Modo oscuro:
- Azul primario:
#3b82f6(--blue-primary) - Azul hover:
#2563eb(--blue-hover) - Azul claro:
#60a5fa(--blue-light) - Azul oscuro:
#1e40af(--blue-dark) - Azul muy oscuro:
#1e3a8a(--blue-darker)
Modo claro:
- Azul primario:
#2563eb(--blue-primary) - Azul hover:
#1d4ed8(--blue-hover) - Azul claro:
#3b82f6(--blue-light) - Azul suave:
#dbeafe(--blue-soft)
El proyecto incluye variables para:
- Colores: Paleta de azules, fondos y textos
- Espaciado:
--spacing-xs,--spacing-sm,--spacing-md,--spacing-lg,--spacing-xl,--spacing-2xl - Tipografía: Tamaños de fuente y pesos
- Bordes: Radios y anchos
- Sombras:
--shadow-sm,--shadow-md,--shadow-lg - Transiciones:
--transition-fast,--transition-base,--transition-slow
Ejemplo de uso:
.mi-componente {
background-color: var(--blue-primary);
padding: var(--spacing-md);
border-radius: var(--border-radius);
box-shadow: var(--shadow-md);
}Este boilerplate está completamente optimizado para ser responsive y se adapta automáticamente a diferentes tamaños de pantalla. El diseño funciona perfectamente en:
- Móviles (hasta 640px): Layout apilado verticalmente, navegación en columna, tipografía optimizada
- Tablets pequeñas (641px - 768px): Transición entre móvil y tablet, elementos reorganizados
- Tablets (769px - 1024px): Layout híbrido con más espacio horizontal
- Escritorio (1025px+): Layout completo con máximo aprovechamiento del espacio
-
Breakpoints definidos: Variables CSS para breakpoints estándar (
--breakpoint-sm,--breakpoint-md,--breakpoint-lg,--breakpoint-xl) -
Tipografía fluida: Uso de
clamp()para tamaños de fuente que se adaptan automáticamente -
Layout adaptativo:
- Header que pasa de horizontal a vertical en móviles
- Navegación que se apila en pantallas pequeñas
- Contenedores con padding ajustado según el tamaño de pantalla
-
Cards responsive: Las cards se adaptan completamente, con padding y márgenes optimizados para cada dispositivo
-
Control de overflow: Prevención de scroll horizontal en todos los elementos mediante
overflow-x: hiddenymax-width: 100vw -
Box-sizing consistente:
border-boxaplicado globalmente para cálculos de ancho precisos
El proyecto utiliza media queries estándar para diferentes tamaños:
@media (max-width: 480px)- Móviles muy pequeños@media (max-width: 640px)- Móviles@media (max-width: 768px)- Tablets pequeñas@media (max-width: 1024px)- Tablets
Todas las vistas y componentes creados heredan automáticamente estas características responsive, por lo que cualquier nueva funcionalidad que agregues se adaptará automáticamente a diferentes dispositivos.
Este boilerplate es un punto de partida sólido. Puedes extenderlo agregando:
- Más componentes reutilizables
- Nuevas vistas y rutas
- Personalización del Layout (navegación, menús, etc.)
- Gestión de estado (Context API, Zustand, Redux, etc.)
- Peticiones HTTP (fetch, axios, etc.)
- Autenticación y autorización
- Tests unitarios y de integración
- Temas personalizados o modo oscuro/claro manual