Frontend de la tienda de la granja Wonder Farm, construido con React y Vite. Incluye catálogo de productos, carrito, compras con monedas y notificaciones globales.
Logo del juego:
Home de la tienda:
- Catálogo de productos con detalle.
- Filtro por categoría.
- Carrito de compras con persistencia en localStorage.
- Cálculo de totales e items.
- Notificaciones globales con Snackbar.
- Integración con Firebase/Firestore para datos.
- Node.js 18+ (recomendado)
- npm, pnpm o yarn
- Clonar el repositorio.
- Instalar dependencias:
npm install
- Crear el archivo de entorno
.enven la raíz (ver sección siguiente). - Iniciar el entorno local:
npm run dev
Este proyecto utiliza Vite, por lo que las variables deben tener el prefijo VITE_.
Ejemplo de .env:
VITE_FIREBASE_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxx
VITE_FIREBASE_AUTH_DOMAIN=xxxxxxxxxxxxxxxxxxxxxxxx
VITE_FIREBASE_PROJECT_ID=xxxxxxxxxxxxxxxxxxxxxxxx
VITE_FIREBASE_STORAGE_BUCKET=xxxxxxxxxxxxxxxxxxxxxxxx
VITE_FIREBASE_MESSAGING_SENDER_ID=xxxxxxxxxxxxxxxxxxxxxxxx
VITE_FIREBASE_APP_ID=xxxxxxxxxxxxxxxxxxxxxxxx
Si quieres trabajar sin Firebase, puedes usar el servicio mock local:
- Abrir src/data/dataService.js.
- Cambiar la constante
USE_SERVICEamockService. - Reiniciar el servidor de desarrollo.
Este modo evita llamadas a Firestore y usa datos locales definidos en src/data/mockService.js y src/data/products.js.
npm run dev: inicia el servidor de desarrollo.npm run build: genera el build de producción.npm run preview: previsualiza el build localmente.npm run lint: ejecuta ESLint.
src/
components/ # Componentes UI
context/ # Contextos (carrito, notificaciones, usuario)
data/ # Servicios y fuentes de datos
App.jsx
main.jsx
public/
imgs/
Para aplicaciones SPA con Vite, se utiliza un rewrite global para evitar errores al recargar rutas. Ya existe un vercel.json con esta configuración.
Además, debes configurar las variables de entorno en el panel de Vercel usando los mismos nombres del .env.
- ESLint configurado para mantener un estilo consistente.
- Contextos documentados en español.
- Crear un fork del proyecto.
- Crear una rama con el cambio:
feature/nombre-cambio. - Abrir un Pull Request con una descripción clara.

