Aplicación web para compra de dispositivos móviles, desarrollada con React y TypeScript.
- React 18
- TypeScript
- Vite - Herramienta de construcción
- React Router 6 - Enrutamiento
- Zustand - Gestión de estado
- React Query - Gestión de peticiones y caché
- Axios - Cliente HTTP
- Vitest - Framework de testing
- GitHub Actions - CI/CD
- Listado de productos con filtro en tiempo real
- Página de detalles del producto
- Añadir productos al carrito
- Caché de datos con caducidad de 1 hora
- Diseño responsive
- Navegación sin recargar página (SPA)
- Testing unitario y de integración
- Pipeline de CI/CD automatizado
Clona el repositorio:
git clone https://github.com/robertluiz/tienda-moviles.git
cd tienda-movilesInstala las dependencias:
npm install-
Desarrollo
npm start
Inicia el servidor de desarrollo en http://localhost:3000
-
Desarrollo (alternativo)
npm run dev
Alias para iniciar el servidor de desarrollo
-
Compilación
npm run build
Genera una versión optimizada para producción
-
Previsualización
npm run preview
Previsualiza la versión compilada
-
Pruebas
npm testEjecuta las pruebas automatizadas
-
Pruebas con cobertura
npm run test:coverage
Ejecuta las pruebas y genera informe de cobertura
-
Pruebas en modo watch
npm run test:watch
Ejecuta las pruebas en modo observador
-
Lint
npm run lint
Verifica problemas de código y estilo
src/
├── components/ # Componentes reutilizables
├── hooks/ # Hooks personalizados
├── pages/ # Páginas de la aplicación
├── services/ # Servicios de API
├── store/ # Gestión de estado (Zustand)
├── styles/ # Estilos globales
├── types/ # Definiciones de tipos TypeScript
├── utils/ # Funciones de utilidad
└── __tests__/ # Tests de la aplicación
La aplicación consume datos de la API:
- Listado de productos:
GET /api/product - Detalles del producto:
GET /api/product/:id - Añadir al carrito:
POST /api/cart
URL base: https://itx-frontend-test.onrender.com/
- Utilizamos Zustand para gestionar el estado global de la aplicación de forma sencilla y eficiente
- React Query para gestionar peticiones a la API, incluyendo caché e invalidación
- Hemos implementado un sistema de caché con caducidad de 1 hora para mejorar el rendimiento
- Los datos se almacenan localmente para reducir las peticiones a la API
- Pruebas unitarias y de integración con Vitest y Testing Library
- Mocking de peticiones HTTP con MSW (Mock Service Worker)
- Generación de informes de cobertura de código
- Aplicación de principios SOLID y Clean Code
- Componentes con responsabilidad única
- Separación clara de lógica de negocio y presentación
- Estructura de proyecto organizada y escalable
- Node.js 16+
- npm 7+
Para contribuir al proyecto:
- Haz un fork del repositorio
- Crea una rama para tu funcionalidad (
git checkout -b feature/nueva-funcionalidad) - Haz commit de tus cambios (
git commit -m 'Añadir nueva funcionalidad') - Sube los cambios a tu fork (
git push origin feature/nueva-funcionalidad) - Abre un Pull Request
Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para más detalles.
El proyecto utiliza GitHub Actions para la integración y despliegue continuos:
- Integración Continua: Cada push y pull request ejecuta los tests y el linting
- Despliegue Continuo: Los cambios en la rama principal (main/master) se despliegan automáticamente a GitHub Pages
- Entorno de Previsualización: La aplicación desplegada está disponible en
https://[username].github.io/tienda-moviles/ - Gestión de Dependencias: El workflow usa
npm installpara asegurar la sincronización entre package.json y package-lock.json
Para más detalles, consulta el archivo de configuración en .github/workflows/test-and-deploy.yml.