# Gestor de inventario · PHP + MySQL

Aplicación CRUD responsive para gestionar el material de una pequeña empresa
(portátiles, monitores, periféricos, licencias...).

- `index.html` — página del proyecto con la demo. En el navegador funciona con
  `localStorage` mediante una capa JS que imita las respuestas de `api.php`.
- `api.php` — API REST (GET/POST/PUT/PATCH/DELETE) con PDO y sentencias preparadas.
- `db.php` — conexión PDO configurada con variables de entorno.
- `schema.sql` — tablas `categorias` y `articulos`, claves foráneas, índices y datos de ejemplo.

## Ejecutarlo en local

Requisitos: PHP 8.1+ con la extensión `pdo_mysql` y MySQL 8 (o MariaDB 10.6+).

```bash
# 1. Crear la base de datos con datos de ejemplo
mysql -u root -p < schema.sql

# 2. Configurar la conexión (opcional, estos son los valores por defecto)
export DB_HOST=127.0.0.1 DB_PORT=3306 DB_NAME=inventario DB_USER=root DB_PASS=

# 3. Arrancar el servidor integrado de PHP desde esta carpeta
php -S localhost:8000
```

En Windows (PowerShell) las variables se definen con `$env:DB_USER = "root"`.

## Probar la API

```bash
curl "http://localhost:8000/api.php?recurso=articulos&q=dell&orden=precio&dir=desc"
curl "http://localhost:8000/api.php?recurso=resumen"
curl -X POST "http://localhost:8000/api.php?recurso=articulos" \
     -H "Content-Type: application/json" \
     -d '{"sku":"PER-010","nombre":"Webcam Logitech C920","categoria_id":3,"estado":"disponible","stock":5,"stock_minimo":2,"precio":79.9}'
curl -X PATCH  "http://localhost:8000/api.php?recurso=articulos&id=1" -d '{"delta":-1}'
curl -X DELETE "http://localhost:8000/api.php?recurso=articulos&id=1"
```

Códigos HTTP: `200` OK, `201` creado, `204` eliminado, `400` petición mal formada,
`404` no encontrado, `405` método no permitido, `409` conflicto (SKU duplicado o
stock negativo), `422` validación, `500` error interno.

> Los datos son ficticios.
