Template moderno de React con TypeScript completamente configurado con las mejores prácticas de desarrollo. Incluye autenticación, rutas protegidas, sistema de inactividad, y arquitectura escalable siguiendo principios SOLID.
- React 18 con TypeScript
- Vite como build tool (más rápido que CRA)
- TailwindCSS para estilos
- React Router DOM para navegación
- Redux Toolkit para estado global
- Context API para autenticación
- Sistema de autenticación con JWT
- Encriptación de tokens con CryptoJS
- Rutas protegidas por roles
- Hook de inactividad configurable
- Logout automático por inactividad
- Sistema de rutas organizadas por módulos (SOLID)
- Lazy loading de componentes
- Estructura de carpetas escalable
- Servicios API centralizados
- Hooks personalizados reutilizables
- ESLint con configuración Airbnb
- Prettier para formateo de código
- Husky para git hooks
- Commitlint para mensajes de commit
- Lint-staged para linting automático
- Docker con nginx para producción
- CI/CD con Azure Pipelines y GitLab
- Scripts de deploy automatizados
- Configuración de variables de entorno
git clone <tu-repo>
cd react-typescript-template-2023
npm installCrea un archivo .env basado en las siguientes variables:
# API Configuration
VITE_API_BASE_URL=http://localhost:3001/api
VITE_API_TIMEOUT=10000
# JWT Configuration
VITE_JWT_SECRET=your-jwt-secret-key
VITE_JWT_EXPIRES_IN=24h
# Feature Flags
VITE_ENABLE_INACTIVITY_TIMER=true
VITE_DEFAULT_INACTIVITY_TIME=300000
# Environment
VITE_ENVIRONMENT=developmentnpm run dev
# o
npm startnpm run build- Usa cualquier email y contraseña para la demo
- Automáticamente se generará un JWT mock
- Redirección automática al dashboard
- Área protegida que requiere autenticación
- Logout manual o automático por inactividad
- Interfaz moderna con TailwindCSS
src/
├── components/          # Componentes reutilizables
│   ├── routing/        # Componentes de enrutamiento
│   │   ├── ProtectedRoute.tsx
│   │   ├── InactivityWrapper.tsx
│   │   └── RouteRenderer.tsx
├── context/            # Context API providers
│   ├── AuthContext.tsx
│   ├── BaseContext.tsx
│   └── index.ts
├── hooks/              # Custom hooks
│   ├── useAsync.ts
│   ├── useInactivityTimer.ts
│   └── index.ts
├── pages/              # Páginas de la aplicación
│   ├── Login/
│   └── Dashboard/
├── routes/             # Sistema de rutas escalable
│   ├── types/
│   ├── routeConfigs/   # Configuraciones por módulo
│   └── allRoutes.ts    # Consolidador de rutas
├── services/           # Servicios de API
│   ├── api/
│   │   └── axiosConfig.ts
│   └── authService.ts
├── types/              # Definiciones TypeScript
├── utils/              # Utilidades
│   ├── encryption.ts
│   ├── jwt.ts
│   └── apiHelpers.ts
├── config/             # Configuraciones
│   └── env.ts
└── redux/              # Estado global (Redux)
npm run dev          # Iniciar servidor de desarrollo
npm run build        # Build para producción
npm run preview      # Preview del buildnpm run lint         # Ejecutar ESLint
npm run lint:fix     # Corregir errores automáticamente
npm run format       # Formatear código con Prettier
npm run type-check   # Verificar tipos TypeScriptnpm run test         # Ejecutar tests
npm run test:coverage # Tests con coverage- Configuración modular de rutas
- Lazy loading automático
- Metadata para SEO
- Timeouts de inactividad por ruta
- Redux Toolkit para estado global
- Context API para autenticación
- Hooks personalizados para lógica reutilizable
- JWT con encriptación AES
- Validación de tokens
- Refresh tokens automático
- Logout por inactividad
- Hot reload con Vite
- Type checking en tiempo real
- Git hooks automatizados
- Mensajes de commit estandarizados
docker build -t react-app .
docker run -p 3000:80 react-appEl template incluye configuración completa de Docker con nginx optimizado para producción.
Incluye configuración para:
- Azure Pipelines (azure-pipelines.yml)
- GitLab CI (.gitlab-ci.yml)
- GitHub Actions (opcional)
El proyecto sigue los principios de Clean Architecture adaptados para React:
- 
Servicios Externos: Conectan el dominio con APIs externas - services/: Configuración de Axios y servicios HTTP
- api/: Cliente HTTP centralizado
 
- 
Adaptadores: Estandarización de datos - adapters/: Transformación de datos entre capas
- utils/: Utilidades de manejo de APIs
 
- 
Componentes: Lógica de negocio y presentación - components/: Componentes reutilizables
- hooks/: Custom hooks
- routes/: Sistema de enrutamiento
- pages/: Páginas de la aplicación
 
- 
Models/State: Corazón de la aplicación - types/: Interfaces y modelos TypeScript
- context/: Estado local con Context API
- redux/: Estado global con Redux Toolkit
 
- Crear el componente en src/pages/
- Agregar configuración en src/routes/routeConfigs/
- Importar en src/routes/allRoutes.ts
- Crear archivo en src/hooks/
- Exportar en src/hooks/index.ts
- Usar en componentes
- Crear archivo en src/services/
- Usar el cliente Axios configurado
- Manejar errores correctamente
- Fork el proyecto
- Crear rama feature (git checkout -b feature/nueva-funcionalidad)
- Commit con formato (git commit -m 'feat: agregar nueva funcionalidad')
- Push a la rama (git push origin feature/nueva-funcionalidad)
- Crear Pull Request
Este proyecto está bajo la Licencia MIT.
Hecho con ❤️ para la comunidad de desarrolladores