Tomàs Puig i Font
Volver a proyectos

Trabajo seleccionado

FreshExpress

Proyecto académico adaptado para presentación pública, formado por una aplicación Astro con funcionalidades para clientes, repartidores y administradores, y una API REST complementaria con Express y MySQL.

Demostración en línea

La aplicación web está publicada como demostración de portafolio con un catálogo de prueba, imágenes locales, registro de clientes y base de datos MySQL. Se puede explorar sin iniciar sesión y crear una cuenta para probar los flujos de cliente. No es una tienda real: no se deben realizar compras ni introducir datos personales sensibles. La API Express se desarrolló para una parte específica de la práctica de clase y actualmente no está desplegada ni en funcionamiento.

Contexto y alcance

FreshExpress comenzó como una práctica de clase y después se adaptó para publicarlo como proyecto full-stack de portafolio. Simula una plataforma de compra y entrega de alimentos, con recorridos diferenciados para clientes, repartidores y administradores. El despliegue público prioriza la demostración y la seguridad, no la actividad comercial.

Aplicación web

La aplicación principal está construida con Astro y TypeScript y renderiza en el servidor. Incluye catálogo y búsqueda de productos, carrito, checkout, cuentas de usuario, historial y seguimiento de pedidos. También incorpora paneles para el flujo de reparto y para administrar productos, pedidos, usuarios y configuración.

  • Autenticación con JWT y contraseñas procesadas con bcrypt.
  • Acceso diferenciado para los roles de cliente, repartidor y administrador.
  • Capa de datos MySQL con pools de conexiones.

API REST complementaria

Como objetivo específico de la práctica de clase, desarrollé en un segundo repositorio una API REST con Node.js, Express y MySQL. El código incluye endpoints de salud, empresas activas y estadísticas. Sirvió para trabajar la separación entre el cliente web y un servicio HTTP independiente, pero la API no está desplegada ni forma parte de la demostración en línea.

Datos y despliegue

El repositorio web incluye una capa de consentimientos, anonimización y estadísticas, así como scripts SQL para crear la estructura y cargar un catálogo de prueba sin usuarios predefinidos. La demostración funciona con Astro y MySQL en contenedores, detrás de un servidor web con HTTPS. Los experimentos de predicción y recomendación no forman parte de este despliegue.

Mejoras futuras

El objetivo de la práctica era demostrar los flujos de compra y reparto, no operar una tienda real; por eso no era apropiado implementar cobros ni servicios comerciales externos. Si una empresa quisiera utilizar FreshExpress, habría que desarrollar y validar estas funciones antes de ponerlo en producción. Un primer paso sería verificar el correo durante el registro con un código de un solo uso enviado por un servicio de correo (por ejemplo, Gmail), con caducidad y límites de intentos y reenvíos; la cuenta solo se activaría tras validarlo.

  • Pagos reales con una pasarela de pago, sin almacenar datos de tarjetas en la aplicación, y gestión de cancelaciones y devoluciones.
  • Control de existencias, disponibilidad y precios actualizados antes de confirmar un pedido.
  • Restablecimiento seguro de la contraseña con un enlace temporal enviado al correo verificado y notificaciones del estado del pedido.
  • Pruebas de los flujos críticos y revisión de seguridad, privacidad y requisitos legales antes de cualquier uso comercial.