# Continuar mitienda en otra computadora

Este archivo es el contexto de entrega para la persona o instancia de Codex que continúe el desarrollo. Leer también `README.md` antes de modificar la aplicación. No hace falta reconstruirla desde cero ni disponer del historial del chat para comprender su estado técnico.

La guía principal para continuar el **desarrollo**, con decisiones, verificaciones y pendientes, es [CONTEXTO-DESARROLLO.md](CONTEXTO-DESARROLLO.md). Leer también [AGENTS.md](AGENTS.md). Este documento se concentra en trasladar y poner en marcha el entorno; conservar los tres archivos al copiar el proyecto.

## Qué llevar

1. La carpeta del proyecto `C:\xampp\htdocs\mitienda`, incluido este documento, `README.md`, archivos de código, `composer.lock`, `pnpm-lock.yaml`, `pnpm-workspace.yaml`, `public/images` y `storage/app/public` (fotografías subidas).
2. Una exportación SQL de la base `mitienda` si se quieren conservar productos, stock, usuarios, pedidos y configuración actuales. Copiar solo la carpeta del proyecto NO copia MariaDB. En phpMyAdmin: seleccionar la base mitienda, Exportar, formato SQL; en destino crear una base vacía e importar ese archivo. No importar sobre una base con datos que se quieran conservar.
3. La configuración privada `.env` y, si corresponde, el archivo privado de acceso `storage/app/private/LOCAL-ACCESS.txt`, por un medio privado. Adaptar las credenciales de base de datos al equipo de destino. El usuario de MariaDB del equipo anterior no se crea al importar las tablas.

Se pueden omitir `vendor` y `node_modules`: se reinstalan. También se pueden omitir `.tools`, `.bootstrap`, logs y cachés generadas. No copiar `storage/app/private/local-workers.json`: los identificadores de procesos pertenecen a la PC anterior. Si se copió, eliminar únicamente ese archivo antes de ejecutar los scripts de trabajadores. No subir `.env`, contraseñas, exportaciones SQL ni archivos privados a un repositorio público.

## Herramientas en la nueva PC

- PHP compatible con el proyecto (en esta PC: PHP 8.2 de XAMPP), Apache y MariaDB. Para desarrollo Windows, XAMPP es el entorno usado actualmente. Verificar las extensiones que requiere Composer; las pruebas usan SQLite en memoria.
- Composer para dependencias PHP.
- Node.js compatible con Vite 7 y pnpm. Usar los archivos lock para instalar versiones reproducibles; no ejecutar una actualización general de dependencias durante el traslado.
- Codex y un editor son herramientas para continuar el desarrollo, no servicios que la tienda necesite para funcionar.

## Puesta en marcha conservando los datos

Desde la carpeta copiada, con PHP, Composer, Node y pnpm disponibles en PATH:

```powershell
composer install
pnpm install --frozen-lockfile
```

Crear la base de datos y un usuario local con permisos sobre ella; importar el SQL. Adaptar en `.env` las variables `DB_*`. Mantener el `APP_KEY` original al trasladar la instalación. No ejecutar `key:generate` sobre la configuración copiada.

Para una primera comprobación sin configurar Apache, usar `APP_URL=http://127.0.0.1:8000`, `APP_ENV=local`, `STORE_DEMO=true`, `MAIL_MAILER=log` y `SESSION_SECURE_COOKIE=false`. Mantener las credenciales de pago productivas fuera del entorno de prueba. Después:

```powershell
php artisan optimize:clear
php artisan migrate
node node_modules/vite/bin/vite.js build
php artisan test --no-ansi
php artisan serve --host=127.0.0.1 --port=8000
```

Abrir http://127.0.0.1:8000 y acceder a `/ingresar`. Al importar la base se conservan los usuarios y sus contraseñas. La credencial inicial del archivo privado solo será válida si no se cambió después.

En terminales separadas, dejar activos:

```powershell
php artisan queue:work --sleep=2 --tries=3 --timeout=60
php artisan schedule:work
```

En Windows, `scripts/start-local.ps1` inicia ambos procesos ocultos; permite indicar otra ruta de PHP con `-Php`. No iniciar además los mismos trabajadores manualmente si el script ya los está ejecutando. Después de reiniciar la PC hay que volver a iniciarlos.

Si se desea conservar `http://mitienda.local/`, configurar el archivo hosts y un virtual host de Apache con DocumentRoot en la carpeta `public` del proyecto y restaurar `APP_URL=http://mitienda.local`. La configuración de Apache y hosts no viaja dentro del proyecto.

## Alternativa: empezar con datos de ejemplo

Solo si no se quiere conservar la base anterior: copiar `.env.example` a un nuevo `.env`, configurar una base vacía y ejecutar `php artisan key:generate`, `php artisan migrate` y `php artisan db:seed`. Se generan catálogo de muestra y una nueva credencial en `storage/app/private/LOCAL-ACCESS.txt`. No usar `migrate:fresh` ni sustituir `.env` sobre una instalación con datos a conservar.

## Estado del desarrollo al 17/09/2026

- Laravel 12, Blade, Livewire 3, Tailwind 4, Vite 7 y MariaDB. Laravel 12 se eligió por compatibilidad con PHP 8.2 de XAMPP.
- Tienda adaptable a móvil, catálogo con filtros, ficha con variantes, carrito, cupones, retiro/envío de tarifa fija y checkout.
- Panel con productos/fotos, variantes, stock, movimientos, alertas, pedidos, ventas manuales, clientes, reportes CSV, configuración y roles administrador/operador.
- Reservas de 30 minutos con transacciones y bloqueos de filas; descuento al confirmar el pago; liberación al cancelar o vencer. Campana de alertas con actualización cada 15 segundos y sonido opcional.
- Integración Checkout Pro implementada con firma de webhook, consulta autenticada, validación de importe/moneda/vendedor/referencia e idempotencia. Pagos tardíos y duplicados requieren tratamiento explícito. Reembolsos completos y contracargos se reciben; reposición física manual. Reembolsos parciales requieren conciliación manual.
- Actualmente modo demo local, correos en logs y credenciales de Mercado Pago sin configurar. No hubo un cobro real ni una prueba sandbox con credenciales.
- Catálogo e imágenes ilustrativos; el pedido MT-FEKYGKVG es una compra demo que descontó una Camisa Alba M. Excluido de ingresos reales.
- Última validación: 30 pruebas, 122 aserciones, todas aprobadas. Recorrido de compra demo sobre MariaDB y revisión de móvil en navegador. Las pruebas automáticas usan SQLite en memoria y simulaciones HTTP/cola; no constituyen prueba de conexión real a Mercado Pago.
- Pendiente para lanzamiento: catálogo y textos reales, contacto/envíos, hosting Laravel, dominio HTTPS, credenciales y pruebas sandbox/productivas de Mercado Pago, SMTP y operación permanente de colas/programador/copias de seguridad.
- No implementados: cotización y etiquetas de transportistas, facturación fiscal, sincronización automática de WhatsApp y cuentas de clientes. El seguimiento actual es por enlace privado o número de pedido y correo.

## Dónde está cada parte

- `routes/web.php`: rutas públicas y administrativas.
- `app/Http/Controllers`: tienda, autenticación y panel.
- `app/Services`: carrito, inventario, pedidos, alertas y Mercado Pago.
- `app/Models`, `database/migrations`: datos y estructura.
- `app/Jobs`: consulta de pagos y correos en cola.
- `app/Livewire`, `resources/views/livewire`: filtros y campana.
- `resources/views`: pantallas; `resources/css/store.css`: diseño; `resources/js/app.js`: interacciones.
- `routes/console.php`: vencimiento de reservas, revisión de stock y alta de administrador.
- `tests/Feature/StoreTest.php`: pruebas de negocio y acceso.

## Mensaje para darle a Codex

> Quiero continuar el desarrollo de mitienda desde donde quedó. Leé AGENTS.md y CONTEXTO-DESARROLLO.md para entender qué se hizo, qué se verificó y qué falta. Si hace falta ponerlo en funcionamiento en esta PC, seguí CONTINUAR-EN-OTRA-PC.md y README.md conservando los datos. Continuá sobre el código existente y actualizá el contexto cuando termines. Mi próximo objetivo es: [escribí aquí el cambio que querés].

El chat es contexto complementario; los archivos y la base son el trabajo que hay que trasladar. Si se usa un repositorio privado para mover el código, la base, las fotografías subidas y la configuración privada igualmente requieren traslado separado. No asumir que existen en la nueva PC.
