# 🚀 Guía de Inicio Rápido

## ⚡ Instalación en 5 pasos

### 1. Instalar dependencias
```bash
npm install
```

### 2. Configurar base de datos

**Opción A: Importar desde phpMyAdmin**
- Abre phpMyAdmin
- Importa el archivo `database/bd_restaurant_mysql.sql`

**Opción B: Desde terminal**
```bash
mysql -u root -p < database/bd_restaurant_mysql.sql
```

### 3. Importar Stored Procedures
```bash
mysql -u root -p barcoded_restaurant < database/sp_login.sql
```

### 4. Configurar variables de entorno
```bash
# Copia el archivo de ejemplo
cp .env.example .env

# Edita .env con tus datos
# Especialmente: DB_PASSWORD
```

### 5. Iniciar servidor
```bash
npm run dev
```

¡Listo! El servidor está corriendo en `http://localhost:3000`

---

## 🧪 Probar la API

### 1. Health Check
```bash
curl http://localhost:3000/api/health
```

### 2. Login (Postman/Thunder Client/curl)

**Request:**
```bash
curl -X POST http://localhost:3000/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "nombre_usuario": "admin",
    "contrasena": "admin123"
  }'
```

**Response esperada:**
```json
{
  "success": true,
  "message": "Login exitoso",
  "data": {
    "usuario": { ... },
    "accessToken": "eyJhbGc...",
    "refreshToken": "eyJhbGc..."
  }
}
```

### 3. Obtener perfil (usa el token del login)
```bash
curl -X GET http://localhost:3000/api/auth/me \
  -H "Authorization: Bearer TU_ACCESS_TOKEN_AQUI"
```

---

## 🔑 Credenciales por defecto

**Usuario:** `admin`  
**Contraseña:** `admin123`

⚠️ **IMPORTANTE:** Cambia estas credenciales en producción

---

## 📱 Probar con Postman

1. **Importa la colección** (si existe)
2. **Crea un nuevo request:**
   - Method: `POST`
   - URL: `http://localhost:3000/api/auth/login`
   - Body (JSON):
     ```json
     {
       "nombre_usuario": "admin",
       "contrasena": "admin123"
     }
     ```
3. **Envía el request**
4. **Copia el `accessToken` de la respuesta**
5. **Para endpoints protegidos:**
   - Headers: `Authorization: Bearer <access_token>`

---

## 🐛 Solución de Problemas Comunes

### Error: "Cannot find module"
```bash
npm install
```

### Error: "ER_ACCESS_DENIED_ERROR"
- Verifica `DB_USER` y `DB_PASSWORD` en `.env`
- Asegúrate que el usuario tenga permisos en MySQL

### Error: "ER_BAD_DB_ERROR"
- La base de datos no existe
- Importa el archivo SQL: `database/bd_restaurant_mysql.sql`

### Error: "EADDRINUSE"
- El puerto 3000 ya está en uso
- Cambia `PORT` en `.env` o cierra la aplicación que usa el puerto

### Error: "PROCEDURE does not exist"
- Los stored procedures no están creados
- Importa: `database/sp_login.sql`

---

## 📂 Estructura Rápida

```
restaurante-backend/
├── src/
│   ├── config/         # Configuraciones
│   ├── core/           # Lógica de negocio
│   ├── infrastructure/ # Implementaciones
│   ├── interfaces/     # API (routes, controllers)
│   └── shared/         # Utilidades
├── database/           # Scripts SQL
├── .env                # Variables de entorno
└── server.js           # Punto de entrada
```

---

## 🎯 Próximos Pasos

1. ✅ Cambiar contraseña del admin
2. ✅ Crear más usuarios (mozos, cajeros, etc.)
3. ✅ Agregar productos al menú
4. ✅ Implementar más endpoints (pedidos, mesas, etc.)
5. ✅ Conectar con frontend

---

## 💡 Tips

- Usa `npm run dev` para desarrollo (auto-reload)
- Revisa los logs en la consola para debugging
- Los endpoints están documentados en `README.md`
- Para producción, configura `NODE_ENV=production`

---

## 📞 Soporte

Si tienes problemas:
1. Revisa la consola para ver el error exacto
2. Verifica que MySQL esté corriendo
3. Confirma que todas las dependencias estén instaladas
4. Revisa el archivo `.env`

¡Feliz desarrollo! 🚀
