Saltar al contenido

Reconstruir una plataforma de formación sin perder un solo dato

EDxcellent es una plataforma de formación online homologada para docentes. Cuando su theme comercial desapareció del mercado y la infraestructura se quedó sin soporte, la reescribí desde cero migrando 5.600 usuarios sin perder un dato.

Plataforma de formación online EDxcellent, caso de estudio de AsturWebs

Datos clave del proyecto

~5.600

usuarios migrados

11.000+

matrículas preservadas

400.000+

respuestas de examen

0

datos perdidos

El reto

Una plataforma que se caía a pedazos, pieza a pieza

EDxcellent llevaba seis años funcionando sobre un theme comercial comprado en ThemeForest. En 2026 ese theme ya no existía: el desarrollador lo retiró del mercado sin explicaciones ni plan de migración. Y como una dependencia tira de la siguiente, todo lo construido encima se fue rompiendo:

  • El theme base desapareció — sin actualizaciones, sin soporte, sin parches de seguridad.
  • El framework PHP quedó obsoleto — exigía PHP 7.3, roto por completo en PHP 8.4.
  • El plugin a medida quedó inservible — dependía del framework muerto, así que murió con él.
  • El servidor llegó a fin de vida — CentOS 7 sin soporte desde junio de 2024.

Cada actualización de WordPress rompía algo. Cada cambio en WooCommerce rompía otra cosa. El código era un castillo de naipes: tocar una pieza amenazaba con derribar las demás. Los parches ya no arreglaban nada, solo posponían el colapso.

La decisión

Reescribir de cero, no seguir parcheando

Cuando los cimientos desaparecen, parchear no es una opción. Tres caminos sobre la mesa:

Opción Problema real
Seguir parcheando Cada fix generaba dos bugs nuevos. Las dependencias rotas no se arreglan con parches, se reemplazan.
Child theme + page builder Rápido, pero heredas nuevas dependencias frágiles. En tres años, vuelta a empezar.
Reescribir desde cero ✓ Coste alto inicial, pero control total, cero dependencias rotas y un código que entendemos por completo.

Para una web de cinco páginas, un child theme basta. Para 37 cursos con lógica de matrícula temporal, certificación universitaria y reportes a medida, era como poner una tirita en una hemorragia. Elegí reescribir.

Antes y después

Del theme comercial obsoleto al desarrollo a medida

Seis años de parches sobre un theme retirado del mercado, frente a un desarrollo propio optimizado hasta el último byte.

EDxcellent versión legacy sobre el theme comercial Academy, antes de la reconstrucción
Antes Theme comercial Academy (retirado del mercado)
EDxcellent versión 2 reconstruida con tema custom de WordPress y Tailwind CSS v4
Después Tema custom + Tailwind v4 (43 KB de CSS)

La solución

Tema custom + plugin standalone, sin frameworks frágiles

Mi regla: depender solo de tecnologías mantenidas por comunidades grandes. Nada de frameworks oscuros que pueden desaparecer mañana.

Frontend

  • • Tema WordPress propio (sin page builders)
  • • Tailwind CSS v4 CSS-first (~43 KB minificado)
  • • Zero jQuery — solo JavaScript vanilla
  • • 12 templates a medida

Lógica de negocio

  • • Plugin edxcellent-core standalone
  • • Custom Post Types: course, lesson
  • • Matrícula temporal con vigencia y re-matrícula
  • • Reportes y exportación para universidades

Infraestructura

  • • Docker: Caddy + WordPress + MySQL 8.0
  • • VPS dedicado con red privada
  • • SSL automático (Let's Encrypt vía Caddy)
  • • Backups en tiempo real + fail2ban

Calidad

  • • PHP 8.4 + WordPress 7.0 + MySQL 8.0
  • • Sanitización, nonces y honeypot en formularios
  • • 30 checks automáticos de QA
  • • CI/CD con deploy automático

La parte delicada

Migrar 400.000 respuestas sin romper nada

Migrar no es copiar y pegar. Entre la base de datos antigua y la nueva había seis años de decisiones técnicas cuestionables: doble serialización en 2.230 registros, IDs de producto mezclados con IDs de curso, huso horario UTC frente a Madrid y un prefijo de tabla aleatorio. Un mysqldump directo habría corrompido todo.

Escribí scripts de transformación a medida, hice una migración delta (solo lo nuevo, sin pisar lo ya migrado) y verifiqué cada cuenta. Resultado:

2.230

registros reparados de doble serialización

0

datos inventados o perdidos

10-12

días de desarrollo intensivo

Resultados

Más rápido, más seguro, sin dependencias rotas

Antes (legacy)

  • • ~200 KB de CSS de page builder + theme + plugins
  • • jQuery cargado en cada página
  • • Framework PHP roto en versiones modernas
  • • Servidor sin soporte de seguridad
  • • Cada actualización rompía algo

Después (v2)

  • • 43 KB de Tailwind minificado (−78%)
  • • Zero jQuery, solo JS vanilla
  • • Plugin standalone, sin frameworks externos
  • • VPS dedicado con soporte hasta 2029
  • • Lighthouse: 99 rendimiento / 100 SEO / 100 accesibilidad

El modelo detrás

Anticiparse al desastre, no cruzar los dedos

No esperé a que la plataforma colapsara. Con el theme retirado del mercado, el servidor al final de su vida útil y el framework roto, la catástrofe era cuestión de tiempo: una caída que probablemente me habría costado el cliente. Reconstruí antes del desastre, no después, porque una relación de 14 años se protege antes de que se rompa.

También fue un reto personal: demostrarme que podía liderar una reescritura de esta escala con la IA como socia de desarrollo. Lo conseguí. Un proyecto de esta envergadura se cotiza en torno a 30.000€ en el mercado, y ahora sé que está dentro de mi capacidad de ejecución. Ese es el estándar que ofrezco a partir de ahora.

Hoy EDxcellent corre sobre código propio —sin themes comerciales que puedan retirarse del mercado ni dependencias frágiles— y el cliente siempre conserva sus datos: cursos, alumnos y pedidos. Sin cajas negras, sin código ofuscado. Esa transparencia es lo que sostiene relaciones que duran décadas.

Lecciones

Lo que este proyecto demuestra

El código propio es un seguro, no un gasto

El theme de 59€ que compras hoy puede desaparecer mañana y arrastrar tu negocio con él. El código que controlas es lo único que te queda cuando todo lo demás falla.

Migrar no es copiar y pegar

Mover cientos de miles de registros con IDs cambiados, encodings mezclados y husos horarios distintos requiere scripts de transformación, no un volcado de base de datos.

La relación gana al proyecto

Una web entregada y olvidada es un producto perecedero. Una iguala mensual con un responsable que conoce tu negocio es un activo que se revaloriza cada año.

Depende solo de lo que tiene futuro

WordPress, WooCommerce, Tailwind y Docker: comunidades enormes con actualizaciones garantizadas. Cero frameworks oscuros que un solo desarrollador pueda retirar.

¿Tu plataforma también necesita una reconstrucción?

Webs críticas, migraciones delicadas, plataformas a medida. Si me confías tu proyecto, lo trato como propio: lo cuido y lo actualizo antes de que algo falle. Cuéntame tu situación y te diré honestamente si puedo ayudarte.

Hablemos de tu proyecto