# PurrCore — Sistema e-commerce PHP 8.3

E-commerce custom MVC para **purrcosas.com** (arena de tofu para gatos, Málaga).  
Desarrollado por **Fermortri Digital Services**.

---

## Requisitos

| Componente | Versión |
|---|---|
| PHP | 8.3+ |
| MySQL / MariaDB | 8.0+ / 10.6+ |
| Composer | 2.x |
| Extensiones PHP | pdo_mysql, openssl, mbstring, json, zlib, gd |
| Servidor web | Apache 2.4+ con `mod_rewrite` |

---

## Instalación

### Opción A — Wizard web (recomendado)
1. Sube el proyecto al servidor
2. Ejecuta `composer install` en la raíz
3. Accede a `https://tu-dominio.com/installer/`
4. Sigue los 6 pasos del wizard
5. **⚠️ Elimina `/installer/` del servidor tras instalar**

### Opción B — Manual
```bash
# 1. Clonar / subir archivos
# 2. Instalar dependencias
composer install

# 3. Configurar entorno
cp .env.example .env
# Editar .env con tus datos

# 4. Crear base de datos
mysql -u root -p -e "CREATE DATABASE purrcore CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

# 5. Importar schema y datos de ejemplo
mysql -u purrcore_user -p purrcore < database/schema.sql
mysql -u purrcore_user -p purrcore < database/seeds.sql

# 6. Crear cuenta admin
# Accede a /installer/?step=4 o inserta directamente en BD

# 7. Dar permisos de escritura
chmod 755 storage/ storage/logs/ storage/invoices/ storage/backups/
chmod 755 public/uploads/ public/uploads/products/
```

---

## Estructura del proyecto

```
purrcore/
├── app/
│   ├── Controllers/        # MVC Controllers (públicos + /Admin)
│   ├── Core/               # Router, DB, Auth, View, Session, Csrf, Validator
│   ├── Helpers/            # functions.php, Money, Slug, Pagination
│   ├── Middleware/         # Auth, Admin, Csrf
│   ├── Models/             # Product, Order, Customer, Invoice, Coupon…
│   ├── Services/           # Stripe, Email, Invoice, Backup, Newsletter…
│   └── Views/              # PHP templates + layouts
├── config/
│   └── routes.php          # Definición de rutas
├── database/
│   ├── schema.sql          # 28 tablas completas
│   └── seeds.sql           # Datos de ejemplo (productos, categorías)
├── installer/
│   └── index.php           # Wizard instalación 6 pasos (eliminar tras instalar)
├── public/
│   ├── index.php           # Bootstrap / Front controller
│   ├── .htaccess           # Rewrite rules
│   └── assets/             # CSS, JS, imágenes
├── storage/
│   ├── backups/            # Backups cifrados AES-256
│   ├── invoices/           # Facturas PDF generadas
│   └── logs/               # Error logs
├── artisan                 # CLI para backups y newsletter
├── composer.json
└── .env.example
```

---

## Funcionalidades incluidas

- ✅ **E-commerce completo** — Productos, variantes, precios por volumen
- ✅ **Pagos Stripe** — PaymentIntents, webhooks, reembolsos
- ✅ **Suscripciones recurrentes** — Integración Stripe Subscriptions
- ✅ **Sistema de facturas** — Auto por compra, manual, rectificativas por reembolso
- ✅ **Puntos de fidelización** — Acumulación y canje por cupones automáticos
- ✅ **Rastreo CTT Express** — URL pública + API opcional en tiempo real
- ✅ **Newsletter tipo MailPoet** — Campañas, doble opt-in, estadísticas
- ✅ **Backups automáticos** — BD + archivos cifrados AES-256, restauración web
- ✅ **SEO completo** — JSON-LD, Open Graph, sitemap.xml dinámico
- ✅ **Pedidos externos** — Importación CSV Amazon y TikTok Shop
- ✅ **GDPR/Cookies** — Banner configurable, registro de consentimientos
- ✅ **Panel admin completo** — Dashboard, pedidos, productos, clientes, stock…
- ✅ **Wizard de instalación** — 6 pasos, crea `.env` automáticamente

---

## Backups automáticos (cron)

```bash
# Backup completo diario a las 3:00 AM
0 3 * * * /usr/bin/php /ruta/al/proyecto/artisan backup:run >> /var/log/purrcore_backup.log 2>&1

# Limpieza mensual (elimina backups >30 días)
0 4 1 * * /usr/bin/php /ruta/al/proyecto/artisan backup:cleanup 30
```

---

## Stripe Webhooks

En el dashboard de Stripe, configura el endpoint:

```
https://purrcosas.com/stripe/webhook
```

Eventos a escuchar:
- `payment_intent.succeeded`
- `payment_intent.payment_failed`
- `invoice.paid`
- `invoice.payment_failed`
- `customer.subscription.deleted`
- `customer.subscription.updated`

---

## Variables de entorno clave

Ver `.env.example` para la lista completa.

---

© Fermortri Digital Services — Todos los derechos reservados
