|
| 1 | +# Frontend - Aplicación de TODOs en PHP |
| 2 | + |
| 3 | +Interfaz web en PHP que consume la API REST del backend. |
| 4 | + |
| 5 | +## 📋 Descripción |
| 6 | + |
| 7 | +Frontend construido con **PHP + HTML5 + CSS3** que consume la API del backend para mostrar una lista de TODOs. |
| 8 | + |
| 9 | +## 📁 Estructura |
| 10 | + |
| 11 | +- **index.php** - Código PHP principal que renderiza el HTML y consume la API |
| 12 | +- **styles.css** - Estilos CSS (diseño responsivo) |
| 13 | +- **app.js** - JavaScript adicional (si es necesario, puede ser opcional) |
| 14 | + |
| 15 | +## 🎨 Características |
| 16 | + |
| 17 | +- 📊 Mostrar estadísticas (total, completadas, pendientes) |
| 18 | +- 🔄 Botón para actualizar la lista (recarga la página) |
| 19 | +- 📱 Diseño responsivo (mobile-friendly) |
| 20 | +- 🎯 Interfaz moderna con gradientes |
| 21 | +- ⚠️ Manejo de errores visual |
| 22 | +- 💫 Animaciones suaves |
| 23 | +- **✅ Renderizado en servidor (PHP)** |
| 24 | + |
| 25 | +## 🚀 Requisitos |
| 26 | + |
| 27 | +- PHP 7.0 o superior |
| 28 | +- Backend accesible en `http://localhost:8001/api.php` (host) |
| 29 | +- Frontend expuesto en `http://localhost:8000` |
| 30 | + |
| 31 | +## 🔧 Configuración |
| 32 | + |
| 33 | +La URL de la API está configurada y autodetecta entorno en `index.php`: |
| 34 | + |
| 35 | +```php |
| 36 | +// Por defecto dentro de Docker: |
| 37 | +$api_url = 'http://host.docker.internal:8001/api.php'; |
| 38 | + |
| 39 | +// Si corre fuera de Docker (PHP built-in server): |
| 40 | +if (php_sapi_name() === 'cli-server' || strpos($_SERVER['HTTP_HOST'], 'localhost') === 0) { |
| 41 | + $api_url = 'http://localhost:8001/api.php'; |
| 42 | +} |
| 43 | +``` |
| 44 | + |
| 45 | +`host.docker.internal` permite que el contenedor acceda al backend expuesto por el host en macOS y Windows. En Linux puede requerir configuración adicional. |
| 46 | + |
| 47 | +## 📝 Flujo de la aplicación |
| 48 | + |
| 49 | +1. Al acceder a `index.php`, PHP realiza una petición GET al backend |
| 50 | +2. Se procesan los datos recibidos en servidor |
| 51 | +3. Se renderiza el HTML con los datos |
| 52 | +4. El usuario ve la lista de TODOs |
| 53 | +5. Al hacer clic en "Actualizar", se recarga la página y se repite el proceso |
| 54 | + |
| 55 | +## 🎯 Ventajas de usar PHP para el frontend |
| 56 | + |
| 57 | +- ✅ Renderizado en servidor (SSR) |
| 58 | +- ✅ No requiere JavaScript en cliente |
| 59 | +- ✅ SEO friendly (contenido generado en servidor) |
| 60 | +- ✅ Comparte la imagen base `php:8.2-apache` con el backend |
| 61 | +- ✅ Reutiliza las mismas capas de Docker |
| 62 | + |
| 63 | +## 📱 Responsive Design |
| 64 | + |
| 65 | +La aplicación se adapta a diferentes tamaños de pantalla: |
| 66 | +- Desktop: Grid de 3 columnas para estadísticas |
| 67 | +- Mobile: Grid de 1 columna para mejor legibilidad |
| 68 | + |
| 69 | +## 🐛 Debugging |
| 70 | + |
| 71 | +Para ver información de depuración, añade esto en PHP: |
| 72 | +```php |
| 73 | +ini_set('display_errors', 1); |
| 74 | +error_reporting(E_ALL); |
| 75 | +``` |
| 76 | + |
| 77 | +--- |
| 78 | + |
| 79 | +Para iniciar la aplicación, ver el README principal. |
0 commit comments