Fastplay es una aplicación web interactiva desarrollada para capitanes y jugadores de fútbol amateur en Ceuta. Permite estructurar equipos, organizar partidos amistosos, inscribirse en ligas, y llevar un registro pormenorizado de las estadísticas del plantel eliminando la fricción tradicional.
Tradicionalmente, las pachangas de fin de semana se coordinan a través de cadenas interminables de WhatsApp y hojas de cálculo. Fastplay centraliza este proceso y eleva el nivel de juego amateur en la Ciudad Autónoma de Ceuta.
Inscripción gratuita. Permite negociar partidos en directo entre capitanes de equipo, pactando la fecha, el campo, y las reglas del encuentro.
Modelo de suscripción integrado con Stripe. Acceso a calendario oficial estructurado por la administración, árbitros colegiados y premios físicos.
Carga de los principales campos de Ceuta (Alfonso Murube, Emilio Cózar, Benoliel, Pirri, etc.) con sus correspondientes localizaciones en mapas interactivos.
Control del plantel de juego: capitanes definen titulares y suplentes, mientras los jugadores confirman su disponibilidad directamente.
Para demostrar dominio en el desarrollo de aplicaciones web complejas, Fastplay evita el uso de frameworks pesados (como Laravel o Symfony), construyendo un núcleo a medida centrado en la seguridad defensiva.
El diseño de interfaz emula la atmósfera de un estadio iluminado artificialmente. La paleta combina fondos mate profundos, desenfoques en cascada (glassmorphism), acentos de neón deportivo y dorado Pro.
Estilos centralizados mediante variables nativas en :root, permitiendo overrides ágiles para temas claros/oscuros.
Estructura de navegación minimalista (floating nav capsule) adaptada de forma elástica a layouts móviles mediante flexbox y grid.
Revelado progresivo y dinámico de elementos a medida que el usuario hace scroll, gestionado con JavaScript nativo.
asset()
FIFA-Card de Stats interactiva
Fastplay soporta dos motores de base de datos de manera agnóstica: **SQLite 3** para el desarrollo ágil local con auto-migración y seeder integrado, y **PostgreSQL** para despliegues de producción sobre Docker/EasyPanel.
Almacena credenciales, flags de verificación de correo (`email_verified`), tokens hash de activación, rol de acceso (`admin/player`), estadísticas y perfil general del jugador local.
Gestionado por un Capitán. Controla la plantilla de jugadores, cuotas, solicitudes de unión entrantes (`team-join-request`) y registros en competiciones.
Competiciones divididas en Pro (dorado premium, inscripciones de pago) y Amistosas (gratuita). Registra históricos y tablas clasificatorias generadas al vuelo.
Encuentros deportivos vinculados a una liga y un Campo. Controla estados (`Pendiente`, `Confirmado`, `En Curso`, `Finalizado`) y la convocatoria del plantel.
Recintos deportivos físicos reservados por fecha y franja horaria. Almacena las coordenadas geográficas de los campos de Ceuta.
Salas por equipo y canales de negociación 1:1 entre capitanes para pactar retos amistosos. Sistema de gamificación con medallas desbloqueadas por hitos.
El proyecto sigue una distribución MVC estructurada y segura, aislando todo el código lógico fuera de la raíz pública accesible desde la web. Explora los directorios haciendo clic en ellos:
Nuestras iteraciones frontend y backend resuelven problemas del mundo real relacionados con compatibilidad gráfica en navegadores modernos y experiencia de usuario.
Corregimos el bug de texturas fantasmas de Chromium. El uso de backdrop-filter con desplazamientos tridimensionales desalineaba la sombra de los paneles. Lo solucionamos forzando contextos de composición de GPU independientes con translate3d(0, 0, 0).
Rediseñamos la vista de campos de fútbol locales. Ubica un mapa interactivo flotante y sticky en la izquierda (45%) mientras el usuario explora las tarjetas de campos en la derecha (55%). Convierte a modo apilado automáticamente en pantallas táctiles móviles.
Diferenciamos el registro: OAuth de Google (correo verificado externamente) genera una cuenta activa de inmediato. El registro normal requiere activación por correo y genera notificaciones internas y alertas en el panel de control del usuario.
Fastplay no es solo un gestor: es una comunidad. Combinamos mecánicas de juego, comunicación en tiempo real y retos entre capitanes para mantener a los jugadores enganchados temporada tras temporada.
Sistema de hitos desbloqueables: primer gol, racha de victorias, veteranía o fichajes. Cada logro otorga insignias visibles en el perfil del jugador.
Cada jugador posee una carta de estadísticas estilo FIFA que evoluciona con su rendimiento real: partidos jugados, goles, asistencias y valoración media.
Salas de mensajería en tiempo real por equipo, gestionadas con peticiones asíncronas JavaScript para coordinar alineaciones sin recargar la página.
Canal de negociación 1:1 donde los capitanes pactan amistosos en directo: fecha, campo y reglas. El reto aceptado genera el partido automáticamente.
Un vistazo cuantitativo al esfuerzo de ingeniería detrás de Fastplay: cobertura de pruebas, entidades de dominio y arquitectura construida íntegramente a medida.
Cero dependencias de framework: cada capa — router, ORM ligero, autenticación, seguridad y vistas — fue diseñada y verificada manualmente para demostrar dominio completo del stack web.
La estabilidad de Fastplay está respaldada por una amplia suite de pruebas unitarias locales automatizadas que verifican la lógica de negocio antes de integraciones y despliegues en producción.
Configuraciones analizadas con scripts de diagnóstico locales en EasyPanel garantizando cargas seguras y consistentes de las variables de Stripe, SMTP y Google callback.
Gracias por recorrer la arquitectura técnica del proyecto. Una aplicación web completa, segura y sin frameworks, construida desde cero.