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 install
Crea 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=development
npm run dev
# o
npm start
npm 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 build
npm 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 TypeScript
npm 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-app
El 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 HTTPapi/
: Cliente HTTP centralizado
-
Adaptadores: Estandarización de datos
adapters/
: Transformación de datos entre capasutils/
: Utilidades de manejo de APIs
-
Componentes: Lógica de negocio y presentación
components/
: Componentes reutilizableshooks/
: Custom hooksroutes/
: Sistema de enrutamientopages/
: Páginas de la aplicación
-
Models/State: Corazón de la aplicación
types/
: Interfaces y modelos TypeScriptcontext/
: Estado local con Context APIredux/
: 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