# 🐍 EJECUTAR DESDE PYTHON

Tienes **3 formas** diferentes de ejecutar la aplicación desde Python:

## OPCIÓN 1️⃣: Script Python (Recomendado para controlar Node.js)

**Para ejecutar la aplicación Node.js desde Python:**

```bash
python3 run.py
```

**Funcionalidades:**
- ✅ Verifica que Node.js esté instalado
- ✅ Verifica que MongoDB esté activo
- ✅ Verifica módulos npm
- ✅ Comprueba puerto disponible
- ✅ Inicia el servidor automáticamente

**Comandos adicionales:**
```bash
python3 run.py --verificar    # Solo verificar sin iniciar
python3 run.py --simple       # Iniciar sin verificaciones
python3 run.py --help         # Ver ayuda
```

---

## OPCIÓN 2️⃣: CLI Interactivo (Menú bonito)

**Interfaz de línea de comandos con menú:**

```bash
python3 cli.py
```

**Opciones del menú:**
- ▶️ Iniciar aplicación
- 🔍 Verificar setup
- 📚 Ver documentación
- 🧹 Limpiar node_modules
- 📦 Reinstalar dependencias
- 🌐 Abrir en navegador
- ❌ Salir

---

## OPCIÓN 3️⃣: Aplicación Python + Flask (Completamente en Python)

**Aplicación 100% en Python sin Node.js:**

### Instalar dependencias Python:
```bash
pip install flask pymongo python-dotenv
```

### Iniciar:
```bash
python3 app_flask.py
```

**Ventajas:**
- ✅ No necesitas Node.js
- ✅ Todo en Python
- ✅ Misma interfaz que la versión Node
- ✅ Conecta a la misma base de datos MongoDB

**URL:** `http://localhost:5000`

---

## COMPARACIÓN DE OPCIONES

| Feature | Opción 1 (run.py) | Opción 2 (cli.py) | Opción 3 (Flask) |
|---------|-------------------|-------------------|------------------|
| **Tecnología** | Node.js + Express | Node.js + Express | Python + Flask |
| **Facilidad** | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ |
| **Dependencias** | Node.js | Node.js | Python |
| **Menú interactivo** | No | ✅ Sí | No |
| **Verificaciones** | ✅ Sí | ✅ Sí | No |
| **Puerto** | 3000 | 3000 | 5000 |
| **Recomendado** | ✅ | ✅✅ | Si no tengo Node |

---

## 🚀 QUICK START

### FORMA MÁS RÁPIDA (cli.py - Recomendada):
```bash
# Terminal 1: Asegúrate que MongoDB está corriendo
sudo systemctl start mongod   # Linux
# o
brew services start mongodb-community  # macOS

# Terminal 2: Ejecutar CLI interactivo
python3 cli.py
# Selecciona opción 1: Iniciar aplicación
```

---

## 📋 REQUISITOS POR OPCIÓN

### Opción 1 & 2 (Node.js):
```bash
✅ Node.js 14+
✅ npm
✅ MongoDB
```

### Opción 3 (Flask):
```bash
✅ Python 3.7+
✅ pip
✅ MongoDB
✅ flask
✅ pymongo
✅ python-dotenv
```

---

## 🔧 INSTALACIÓN COMPLETA

```bash
# 1. Ir al directorio
cd "examen ismael"

# 2. OPCIÓN A: Usar Node.js existente
npm install
python3 cli.py

# OPCIÓN B: Usar solo Python/Flask
pip install flask pymongo python-dotenv
python3 app_flask.py
```

---

## 🐛 SOLUCIONAR PROBLEMAS

### "ModuleNotFoundError: No module named 'flask'"
```bash
pip install flask pymongo python-dotenv
```

### "Cannot connect to MongoDB"
```bash
# Iniciar MongoDB
sudo systemctl start mongod     # Linux
brew services start mongodb-community  # macOS
docker start mongodb            # Docker
```

### "Port already in use"
- Opción 1/2: Cambiar PORT en server.js
- Opción 3: Cambiar PORT en app_flask.py

---

## 📝 EJEMPLOS DE EJECUCIÓN

### Opción 1: Script simple
```bash
$ python3 run.py

🚀 Iniciando aplicación...
✅ Conectado a MongoDB
Servidor ejecutándose en puerto 3000
```

### Opción 2: CLI interactivo
```bash
$ python3 cli.py

╔════════════════════════════════════════╗
║   SISTEMA DE REGISTRO - APLICACIÓN    ║
║   Control desde Python                ║
╚════════════════════════════════════════╝

┌─ MENÚ PRINCIPAL ─────────────────────┐
│ 1. ▶️  Iniciar aplicación             │
│ 2. 🔍 Verify setup                    │
│ ...
```

### Opción 3: Flask
```bash
$ python3 app_flask.py

🚀 Iniciando aplicación Flask...
📝 URL: http://localhost:5000
```

---

## 🎯 MI RECOMENDACIÓN

**Para principiantes:** `python3 cli.py` ← Menú fácil de usar

**Para automatización:** `python3 run.py` ← Script automático

**Si odias Node.js:** `python3 app_flask.py` ← Solo Python

---

## 💡 TIPS

1. **Para desarrollo:** Usa `cli.py` con su menú interactivo
2. **Para producción:** Usa cualquiera, pero añade validaciones
3. **Para CI/CD:** Usa `run.py --simple` sin verificaciones
4. **Para aprender:** Lee `app_flask.py` para ver Flask + MongoDB

---

## ❓ PREGUNTAS FRECUENTES

**P: ¿Cuál es la diferencia de las 3 opciones?**
A: Opción 1/2 ejecutan Node.js. Opción 3 es 100% Python.

**P: ¿Puedo usar las 3 a la vez?**
A: No, necesitarían puertos diferentes. Modifica los puertos.

**P: ¿Qué necesito para Flask?**
A: Python 3.7+, Flask, PyMongo y .env sin MongoDB local (o con).

**P: ¿Dónde se guardan los datos?**
A: En MongoDB en ambas versiones (misma base de datos).

**P: ¿Puedo combinar Node.js frontend con Python backend?**
A: Sí, pero sería más complejo. Consulta si lo necesitas.
