# Publicación V23 en MaxDominios

Este paquete está preparado para Laravel 13, PHP 8.3/8.4, MySQL y cPanel.

## Estructura segura

Extraer el paquete en:

```text
/home/USUARIO_CPANEL/sistema-supermercado
```

El dominio o subdominio debe apuntar exclusivamente a:

```text
/home/USUARIO_CPANEL/sistema-supermercado/public
```

Nunca se debe apuntar el dominio a la raíz completa del proyecto.

## 1. Base de datos

Desde **Asistente de bases de datos MySQL**:

1. Crear la base.
2. Crear el usuario.
3. Asignar **Todos los privilegios**.
4. Conservar privadamente los nombres completos con prefijo de cPanel.

## 2. Archivo de configuración

Desde la Terminal:

```bash
cd ~/sistema-supermercado
cp .env.maxdominios.example .env
```

Editar `.env` desde el Administrador de archivos con **Mostrar archivos ocultos**.

Completar:

- `APP_URL`
- `APP_KEY`
- `DB_DATABASE`
- `DB_USERNAME`
- `DB_PASSWORD`
- `MAIL_FROM_ADDRESS`

Si se importará la base local, copiar exactamente la `APP_KEY` del equipo local.
Si la instalación será completamente nueva, colocar exactamente:

```env
APP_KEY=GENERAR_NUEVA
```

El asistente generará la clave después de instalar Composer. No cambiarla después de comenzar a usar el sistema.

## 3. Instalación automática

```bash
cd ~/sistema-supermercado
bash instalar-maxdominios.sh
```

El asistente:

- comprueba PHP 8.3+;
- comprueba Composer;
- rechaza configuraciones inseguras;
- crea carpetas de almacenamiento;
- instala dependencias sin paquetes de desarrollo;
- aplica migraciones;
- crea el enlace de almacenamiento;
- optimiza Laravel.

## 4. Primer administrador

Solamente en una base nueva:

```bash
php artisan db:seed --class=AdminUserSeeder --force
```

No ejecutar el seeder si se importó una base que ya contiene usuarios.

## 5. SSL

En cPanel abrir **SSL/TLS Status** y ejecutar AutoSSL para el subdominio.
La aplicación móvil, cámara, fotografías y NFC requieren HTTPS.

## 6. Verificación

```text
https://sistema.TU_DOMINIO.com/up
https://sistema.TU_DOMINIO.com/login
```

Comprobar inicio de sesión, caja, venta, impresión, stock, fotografías y PWA.

## 7. Actualizaciones futuras

Antes de actualizar:

```bash
cp .env ../respaldo.env
```

No sobrescribir `.env`. Después de subir nuevos archivos:

```bash
composer install --no-dev --prefer-dist --optimize-autoloader --no-interaction
php artisan migrate --force
php artisan storage:link
php artisan optimize
```

## Nota de Composer

El paquete incluye `composer.json`, pero no dependencias `vendor`. MaxDominios debe permitir Composer 2 en Terminal/SSH. La primera ejecución puede crear `composer.lock` si aún no existe; ese archivo debe conservarse para las siguientes actualizaciones.
