Porra Mundial 2026 es una aplicación web para crear y gestionar una porra (quiniela) entre amigos durante el Mundial de Fútbol FIFA 2026. Cada jugador elige 6 selecciones — una de cada bombo — y acumula puntos según el rendimiento real de sus equipos durante todo el torneo.
En resumen:
🏟️ Elige tus equipos → ⚽ Mira los partidos → 📈 Acumula puntos → 🏆 Gana la porra
Las 48 selecciones del Mundial están repartidas en 6 bombos según su ranking y potencial:
| Bombo | 🏷️ Nivel | Selecciones de ejemplo |
|---|---|---|
| 🥇 1 | Favoritas | Alemania, Argentina, Brasil, Francia, España, Inglaterra, Países Bajos, Portugal |
| 🥈 2 | Contendientes | Bélgica, Colombia, Croacia, Marruecos, Uruguay, Suiza |
| 🥉 3 | Competitivas | EEUU, México, Japón, Turquía, Ecuador, Noruega |
| 4️⃣ 4 | Emergentes | Australia, Canadá, Egipto, Irán, Chequia, Austria |
| 5️⃣ 5 | Sorpresa | Argelia, Costa de Marfil, Panamá, Sudáfrica, Uzbekistán |
| 6️⃣ 6 | Cenicienta | Arabia Saudí, Haití, Irak, Curazao, Nueva Zelanda |
💡 Estrategia: Elige bien en cada bombo — tus puntos dependen del rendimiento de todas tus selecciones.
Los puntos se acumulan automáticamente basándose en lo que hacen tus selecciones en la vida real.
| Evento | Puntos |
|---|---|
| ✅ Victoria | +3 |
| 🤝 Empate | +1 |
| ❌ Derrota | 0 |
| Evento | Puntos |
|---|---|
| 🔥 Marcar 3+ goles | +2 |
| 🧤 Portería a cero | +1 |
| 💪 Remontada | +1 |
| Logro | Puntos |
|---|---|
| ✅ Pasar la fase de grupos | +3 |
| 🏅 Octavos de final | +3 |
| 🥉 Cuartos de final | +4 |
| 🥈 Semifinal | +6 |
| 🏆 Final | +8 |
| 👑 ¡Campeón! | +12 |
| Premio | Puntos |
|---|---|
| ⭐ MVP del torneo | +3 |
| 👟 Bota de Oro (máximo goleador) | +2 |
| 🧤 Guante de Oro (mejor portero) | +2 |
| 🌱 Mejor jugador joven | +2 |
| Evento | Puntos |
|---|---|
| 🟡 Tarjeta amarilla | −0.2 |
| 🟡🟡 Doble amarilla | −1 |
| 🔴 Tarjeta roja | −2 |
| 💥 Encajar 3+ goles | −2 |
| 📉 Último del grupo | −1 |
📊 Tu puntuación total = suma de los puntos de tus 6 selecciones. ¡Consulta el leaderboard en tiempo real!
| ### 🖥️ Instalación sin CLI Asistente desde el navegador estilo WordPress — sin terminal, sin SSH, sin Composer en el servidor. Actualización automática de migraciones al subir una nueva versión. ### 👥 Usuarios por invitación - 🔗 Alta mediante **enlace de invitación** (válido 48 h) - 👤 Roles `user` / `admin` - 🗑️ Soft delete, edición y reset de contraseña ### 🔐 Autenticación multifactor - 📱 **TOTP** — QR + códigos de recuperación - 🔑 **WebAuthn** — Yubikeys, FIDO2, Windows Hello - ⚙️ Política configurable por tipo de usuario | ### ✉️ Comunicaciones SMTP - Servidores SMTP con cifrado (TLS/SSL) - Reply-to, email de prueba, plantillas - Fallback a archivos `.eml` sin SMTP ### 🛡️ Seguridad integral - 🤖 Captcha — reCAPTCHA v2/v3 · Turnstile - 🔒 CSRF en todos los formularios - 🔑 Hashing bcrypt - 🚫 Rate limit y bloqueo de cuentas - 🍪 Cookies seguras (Secure · HttpOnly · SameSite) - 📋 Log de auditoría ### 📊 Panel de administración - Gestión de partidos y resultados - Control de avances y premios del torneo - Bloqueo/desbloqueo de selecciones |
porra-mundial-2026/
├── 📂 app/ # Código fuente PHP
│ ├── Core/ # Núcleo (Router, Session, CSRF, DB…)
│ ├── Models/ # Modelos de datos
│ ├── Modules/
│ │ ├── Admin/ # Panel de administración
│ │ ├── Auth/ # Login, logout, MFA
│ │ ├── Game/ # Lógica de la porra
│ │ └── Install/ # Asistente de instalación
│ ├── bootstrap.php
│ └── routes.php
├── 📂 bin/ # Scripts CLI (build, upgrade)
├── 📂 config/ # Configuración (generada por el instalador)
├── 📂 database/ # Migraciones SQL
├── 📂 public/ # Document root del servidor web
├── 📂 storage/ # Logs, caché, emails
├── 📂 tests/ # Tests PHPUnit
└── 📂 docs/ # Documentación
🧩 Framework propio ligero — sin Laravel ni Symfony — optimizado para hostings compartidos con recursos limitados.
| Requisito | Versión mínima |
|---|---|
| 🐘 PHP | 8.1+ |
| 🗄️ MySQL / MariaDB | 5.7+ / 10.3+ |
| 🌐 Apache | mod_rewrite |
Extensiones PHP necesarias: pdo_mysql · openssl · mbstring · curl · sodium
775 en config/ y storage/Usa el workflow Deploy FTP (On-demand) para subir automáticamente por FTP/FTPS.
Configura estos secretos en Settings → Secrets → Actions:
| Secreto | Descripción |
|---|---|
FTP_SERVER |
Host FTP/FTPS |
FTP_USERNAME |
Usuario FTP |
FTP_PASSWORD |
Contraseña FTP |
FTP_SERVER_DIR |
Ruta remota |
FTP_PROTOCOL |
Protocolo (opcional, ftps por defecto) |
Sube la nueva release por FTP — las migraciones pendientes se detectan y aplican automáticamente:
/install/upgradephp bin/upgrade.php| 📖 Documento | Descripción |
|---|---|
docs/INSTALL.md |
🛠️ Guía de instalación paso a paso |
docs/UPGRADE.md |
🔄 Procedimiento de actualización y rollback |
Este proyecto está bajo la licencia MIT — consulta el archivo LICENSE para más detalles.