# Desplegar en InterServer (cPanel) — paso a paso

Este documento asume que ya tienes `base-tienda/` en tu PC con:
- Laravel + mi framework fusionado encima
- la carpeta `vendor/` generada por Composer
- (opcional) Laravel Breeze instalado para el login del panel

## A. Antes de empaquetar (en tu PC)

### A1. Reemplaza los 3 archivos corregidos del instalador
Copia estos archivos de la nueva versión sobre `base-tienda`, reemplazando:
- `app/Http/Controllers/InstallerController.php`
- `app/Http/Middleware/RedirectIfNotInstalled.php`
- `routes/web.php`

(Traen el instalador robusto que funciona en el servidor sin dar error 500.)

### A2. Coloca el .env del servidor
Copia `.env.server` como `base-tienda/.env` y edita **APP_URL** con tu dominio real:

```
APP_URL=https://tudominio.com
```

Deja los `DB_*` en blanco: los completará el instalador web. NO borres la
línea `APP_KEY` (ya viene con una clave; es lo que permite que Laravel arranque).

### A3. (Si usas Breeze) compila los estilos
```powershell
npm install
npm run build
```
Esto genera `public/build/`. Si NO instalaste Breeze aún, puedes probar primero
solo la tienda + instalador y añadir el login después.

## B. Reorganizar para cPanel (mover "public" a la raíz)

En hosting compartido, `public_html` es la raíz web. El paquete que subirás debe
tener esta forma (todo junto en la raíz):

```
(raíz del zip)/
├── index.php        ← el index.php de mi paquete (usa __DIR__, ya adaptado)
├── .htaccess        ← el .htaccess de mi paquete
├── .env             ← el que preparaste en A2
├── vendor/
├── app/  bootstrap/  config/  routes/  resources/  database/  storage/
├── build/           ← contenido de base-tienda/public/build (si usaste Breeze)
├── js/              ← contenido de base-tienda/public/js (incluye builder.js)
└── (demás archivos que estaban en base-tienda/public/, p.ej. favicon)
```

Cómo lograrlo: parte de `base-tienda`, y **mueve el CONTENIDO de `public/` a la
raíz** (los assets: `build/`, `js/`, `favicon.ico`, etc.). El `index.php` y el
`.htaccess` de mi paquete ya están en la raíz y reemplazan a los de `public/`.
Luego puedes borrar la carpeta `public/` vacía.

## C. Empaquetar

Comprime el contenido de la raíz reorganizada en un `.zip`.
- SÍ incluir: `vendor/`, `.env`, todo el código.
- NO incluir: `node_modules/` (pesa mucho y no se usa en producción).

## D. Subir a InterServer

1. Entra al **cPanel → File Manager → public_html**.
2. Sube el `.zip` y **extráelo ahí** (que los archivos queden directamente en
   `public_html`, no dentro de una subcarpeta).
3. En **cPanel → MySQL Databases**: crea una base de datos y un usuario, asígnalo
   a la base con todos los privilegios. Anota: nombre de BD, usuario y contraseña.
   (En cPanel el host suele ser `localhost`.)
4. Permisos de escritura (File Manager → Permissions, o Terminal si tienes):
   - `storage/` y subcarpetas → 755 (o 775)
   - `bootstrap/cache/` → 755 (o 775)

## E. Instalar desde el navegador

1. Abre `https://tudominio.com/` → te redirige automáticamente a `/install`.
2. Completa el formulario:
   - Nombre de la tienda
   - **Base de datos**: host `localhost`, puerto `3306`, y el nombre/usuario/
     contraseña que creaste en el paso D3.
   - Datos del administrador (correo y contraseña).
3. El instalador prueba la conexión, corre migraciones + seeder, crea el admin y
   marca el sitio como instalado (`storage/app/installed`).
4. Al terminar verás la pantalla de éxito con enlaces a la tienda y al panel.

## F. Después de instalar

- Tienda: `https://tudominio.com/`
- Panel: `https://tudominio.com/admin` (entra con tu admin; requiere Breeze).
- PayPal: pega `PAYPAL_CLIENT_ID` / `PAYPAL_SECRET` en el `.env` del servidor.
- SUNAT: sube tu certificado a `storage/app/sunat/certificado.pem` y llena los
  `SUNAT_*` en el `.env`.

## Problemas comunes

- **Error 500 al abrir el sitio**: casi siempre son permisos de `storage/` y
  `bootstrap/cache/`. Ponlos en 775. Para ver el detalle, cambia temporalmente
  `APP_DEBUG=true` en el `.env`, recarga, y vuelve a `false` después.
- **"No application encryption key"**: falta la línea `APP_KEY` en el `.env`.
  Verifica que subiste el `.env` con la clave incluida.
- **El instalador no aparece y va directo a la tienda**: existe el marcador
  `storage/app/installed`. Bórralo para reinstalar.
- **Assets/estilos del panel rotos**: falta subir `build/` a la raíz, o no
  corriste `npm run build` antes de empaquetar.
