Última actualización: 1 de diciembre de 2025 — Plataforma completa de eCommerce con integración API real y sistema de ofertas dinámicas.
👉 https://nachovn12.github.io/huertohogar-react/
La aplicación está desplegada automáticamente en GitHub Pages con integración continua. Cada push a la rama
mainactualiza el sitio en producción.
HuertoHogar es una plataforma completa de eCommerce desarrollada con React 18 + TypeScript que conecta productores locales con consumidores. El proyecto integra una API real con sistema de fallback, gestión completa de productos, categorías, carrito de compras y panel de administración.
- ✅ Integración API Completa: Conectado a Railway con productos, categorías y usuarios reales
- ✅ Sistema de Ofertas Dinámicas: Gestión de descuentos con localStorage y cálculo automático de precios
- ✅ Búsqueda Inteligente: Filtrado en tiempo real con autocompletado y vista previa de productos
- ✅ Filtrado por Categorías: Navegación dinámica con conteo de productos por categoría
- ✅ Panel de Administración: CRUD completo de productos con gestión de ofertas y descuentos
- ✅ Carrito de Compras: Sincronizado con API y persistencia local
- ✅ Sistema Híbrido de Autenticación: API real con fallback automático a datos mock
- ✅ Roles de Usuario: Admin, Vendedor y Cliente con permisos diferenciados
- ✅ UI Responsive: Diseño moderno con Material UI + React Bootstrap
- ✅ TypeScript: Tipado fuerte en toda la aplicación para mayor seguridad
📧 Email: admin@admin.com
🔑 Password: admin
🎯 Panel: /admin/dashboard
✨ Permisos: Gestión completa de productos, usuarios, categorías y ofertas
📧 Email: vendedor@vendedor.com
🔑 Password: admin
🎯 Panel: /vendedor/dashboard
✨ Permisos: Gestión de productos y visualización de órdenes
📧 Email: cliente@cliente.com
🔑 Password: admin
🎯 Inicio: /productos
✨ Permisos: Navegación, compras y gestión de carrito
| Frontend | UI/UX | Backend Integration | Dev Tools |
|---|---|---|---|
| React 18 | Material UI 5 | Axios | TypeScript 4.9 |
| React Router 6 | React Bootstrap | Railway API | Create React App |
| Context API | Custom Hooks | LocalStorage | ESLint + Prettier |
| React Hooks | Responsive Design | CORS Proxy | Git & GitHub |
huertohogar-react/
├── public/
│ ├── img/ # Imágenes estáticas
│ └── index.html # HTML principal
├── src/
│ ├── components/ # Componentes React
│ │ ├── Admin/ # Panel de administración
│ │ ├── Blog.tsx # Blog de consejos
│ │ ├── Cart.tsx # Carrito lateral
│ │ ├── Categories.tsx # Categorías destacadas
│ │ ├── Navbar.tsx # Barra de navegación
│ │ ├── ProductCard.tsx # Tarjeta de producto
│ │ ├── ProductList.tsx # Lista de productos
│ │ └── ...
│ ├── context/ # Context API
│ │ ├── AuthContext.tsx # Autenticación
│ │ └── CartContext.tsx # Carrito de compras
│ ├── hooks/ # Custom Hooks
│ │ └── useApi.ts # Hooks para API
│ ├── service/ # Servicios
│ │ └── api.ts # Cliente API
│ ├── styles/ # Estilos CSS
│ │ └── App.css # Estilos principales
│ ├── types/ # Tipos TypeScript
│ │ └── index.ts # Definiciones de tipos
│ ├── data/ # Datos de fallback
│ │ ├── products.json # Productos mock
│ │ └── categories.json # Categorías mock
│ ├── App.tsx # Componente principal
│ └── index.tsx # Punto de entrada
├── package.json # Dependencias
├── tsconfig.json # Configuración TypeScript
└── README.md # Este archivo
Base URL: https://api-dfs2-dm-production.up.railway.app
- ✅
/api/huerto- Productos principales: listado, búsqueda y detalles (recurso principal del catálogo). - ✅
/api/productos- Endpoint complementario para operaciones puntuales sobre productos (usado por algunos adaptadores internos). - ✅
/api/categorias- Categorías de productos (navegación y filtros). - ✅
/api/usuarios- Gestión y autenticación de usuarios (login, registro, perfiles). - ✅
/api/carritos- Carrito de compras (persistencia y sincronización con backend cuando aplica). - ✅
/api/productos/:id/stock- Consulta/actualización de stock por producto. - ℹ️
/api/ordenes- Órdenes: en la versión actual se utiliza como mock/temporal desde el cliente; puede no estar disponible en todas las instancias de la API.
Versión de la API: 2.0.0 (Proveedor: "API para Alumnos - Huerto, Gaming, Pastelería")
Autor / Fuente: Profesor Sting Parra Silva (implementación desplegada en Railway)
npm installnpm starthttp://localhost:3000
- Email:
admin@admin.com - Password:
admin
- Deberías ver peticiones a la API
- Login exitoso con token generado
- Código base: React 18 + Create React App (
react-scripts@5) - TypeScript: Fijado a la serie
4.9.xpara compatibilidad conreact-scripts - Migración: Muchos componentes y contextos convertidos a
.tsx/.ts
- Entrada de la app:
src/index.tsx - Componentes:
src/components/ - Contexts:
src/context/ - Tipos:
src/types/ - Servicios:
src/service/ - Datos estáticos:
src/data/
- Node.js >= 16 (recomendado)
- npm >= 8
npm start # Desarrollo
npm run build # Build producción
npm test # Ejecutar tests- ✅ Integración con
/api/usuarios - ✅ Fallback automático a datos mock
- ✅ Manejo robusto de errores
- ✅ Tipos TypeScript correctos
- ✅ Productos desde
/api/huerto - ✅ Categorías desde
/api/categorias - ✅ Carrito desde
/api/carritos - ✅ Gestión de usuarios
- ✅ Navbar responsive con overlay móvil
- ✅ Fix de recursión en Login
- ✅ Navegación programática mejorada
src/App.tsxsrc/components/Navbar.tsxsrc/components/Login.tsxsrc/components/ProductList.tsxsrc/components/ProductCard.tsxsrc/components/ProductDetails.tsx
src/context/CartContext.tsxsrc/context/AuthContext.tsx
src/service/api.ts⭐ Sistema híbrido
src/types/index.ts
- TypeScript: Versión
4.9.5fijada para compatibilidad conreact-scripts@5 - Imports: Evita usar rutas con extensión
.tsxexplícita - Shims: Hay shims
.jstemporales para compatibilidad con CRA
- Tests: Disponibles en
src/__tests__/(Jest/RTL y Karma/Jasmine) - CI Recomendado: GitHub Actions con
npm ci,npm run buildynpm test
- Profesionalizar flujo: ESLint + Prettier, Husky + lint-staged
- Migrar tests a TypeScript (
.test.tsx) - Migrar
src/components/Admin/*a TypeScript - (Opcional) Evaluar migración de CRA a Vite
¡Las contribuciones son bienvenidas! Si deseas contribuir a HuertoHogar:
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add: nueva funcionalidad') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
- Ejecuta
npm testantes de hacer commit - Sigue las convenciones de código existentes
- Documenta nuevas funcionalidades
- Actualiza el README si es necesario





