← Zurück zu den Projekten

Jun 2025 ·Full-Stack-Entwickler

Todo App · PHP, jQuery und AJAX

Die erste Version entstand im Juni 2025 als technische Aufgabe im Auswahlverfahren von BlinkLearning, im Rahmen eines Vorstellungsgesprächs: Login, PHP-API und eine jQuery-Oberfläche. Im Oktober 2026 habe ich sie geprüft, ihre Sicherheitslücken behoben und sie mit automatischen Tests auf meinem eigenen Server als offene Demo veröffentlicht.

Screenshot von Todo App · PHP, jQuery und AJAX

Die ausführliche Fallstudie ist auf Spanisch verfügbar.

Logros

  • Cuatro fallos de seguridad de la versión inicial, corregidos
  • API REST con sesión, token CSRF y validación en servidor
  • 24 pruebas unitarias y 39 pruebas HTTP de extremo a extremo
  • Publicada en mi servidor Apache con un script de despliegue verificado

Contexto

El reto de BlinkLearning pedía una aplicación de tareas con login. La primera versión funcionaba en local, pero al revisarla para publicarla en internet comprobé que no era segura: la API aceptaba escrituras sin sesión, una tarea con código HTML se ejecutaba en el navegador de quien la viera, y el archivo de usuarios y el log (que guardaba la contraseña) se podían descargar por URL.

Mi rol

Desarrollé las dos versiones yo solo, del backend al despliegue. En la segunda usé Claude como asistente para la auditoría y las pruebas; las decisiones de arquitectura y la publicación en el servidor son mías.

Qué construí

Backend en PHP

API REST con los verbos GET, POST, PATCH, PUT y DELETE, respuestas JSON con códigos HTTP correctos y validación de longitud, tipo y codificación. El almacenamiento está detrás de una interfaz: hoy usa la sesión, para que cada visitante tenga sus propias tareas, y pasar a MySQL solo exige otra implementación.

Seguridad

Contraseñas con password_hash, sesión regenerada al entrar y limitada a la ruta de la app, token CSRF en todas las escrituras, Content-Security-Policy estricta y salida siempre escapada. El código y la configuración quedan fuera de la carpeta pública.

Interfaz en jQuery

Lista con detalle lateral, edición, tareas hechas, reordenación arrastrando con jQuery UI y avisos de error claros. Adaptada a móvil y usable con teclado. Sin peticiones a terceros: fuentes, iconos y librerías van incluidas.

Despliegue

  • Pruebas unitarias → respaldo → copia en solo lectura → Alias de Apache con configtest → 39 pruebas HTTP contra el servidor real

Resultado

  • Demo pública en patrickjoel.com/todo-app con cuenta de prueba
  • Imágenes reducidas de unos 2,8 MB a menos de 400 KB
  • Integración continua en GitHub Actions con PHP 8.0 y 8.3

Qué demuestra

  • Desarrollo backend en PHP sin framework, con API REST y sesiones
  • Criterio de seguridad web: XSS, CSRF, exposición de archivos y contraseñas
  • Revisión crítica de código propio antes de publicarlo
  • Despliegue y configuración de Apache en un servidor Linux propio

Nota

Es un proyecto deliberadamente pequeño: muestra cómo trabajo, no el tamaño de la aplicación.

Suchst du jemanden, der das in deinem Unternehmen umsetzt?