Tomàs Puig i Font
Tornar als projectes

Treball seleccionat

FreshExpress

Projecte acadèmic adaptat per a presentació pública, format per una aplicació Astro amb funcionalitats per a clients, repartidors i administradors, i una API REST complementària amb Express i MySQL.

Demostració en línia

L'aplicació web està publicada com a demostració de portafolis amb un catàleg de prova, imatges locals, registre de clients i base de dades MySQL. Es pot explorar sense iniciar sessió i crear un compte per provar els fluxos de client. No és una botiga real: no s'hi han de fer comandes de compra ni introduir dades personals sensibles. L'API Express es va desenvolupar per a una part específica de la pràctica de classe i actualment no està desplegada ni en funcionament.

Context i abast

FreshExpress va començar com una pràctica de classe i després es va adaptar per publicar-lo com a projecte full-stack de portafolis. Simula una plataforma de compra i lliurament d'aliments, amb recorreguts diferenciats per a clients, repartidors i administradors. El desplegament públic prioritza la demostració i la seguretat, no l'operació comercial.

Aplicació web

L'aplicació principal està construïda amb Astro i TypeScript i renderitza al servidor. Inclou catàleg i cerca de productes, cistella, checkout, comptes d'usuari, historial i seguiment de comandes. També incorpora panells per al flux de repartiment i per administrar productes, comandes, usuaris i configuració.

  • Autenticació amb JWT i contrasenyes processades amb bcrypt.
  • Accés diferenciat per als rols de client, repartidor i administrador.
  • Capa de dades MySQL amb pools de connexions.

API REST complementària

Com a objectiu específic de la pràctica de classe, vaig desenvolupar en un segon repositori una API REST amb Node.js, Express i MySQL. El codi inclou endpoints de salut, empreses actives i estadístiques. Va servir per treballar la separació entre el client web i un servei HTTP independent, però l'API no està desplegada ni forma part de la demostració en línia.

Dades i desplegament

El repositori web inclou una capa de consentiments, anonimització i estadístiques, així com scripts SQL per crear l'estructura i carregar un catàleg de prova sense usuaris predefinits. La demostració funciona amb Astro i MySQL en contenidors, darrere d'un servidor web amb HTTPS. Els experiments de predicció i recomanació no formen part d'aquest desplegament.

Millores futures

L'objectiu de la pràctica era demostrar els fluxos de compra i repartiment, no operar una botiga real; per això no era adequat implementar-hi cobraments ni serveis comercials externs. Si una empresa volgués utilitzar FreshExpress, caldria desenvolupar i validar aquestes funcions abans de posar-lo en producció. Un primer pas seria verificar el correu durant el registre amb un codi d'un sol ús enviat per un servei de correu (per exemple, Gmail), amb caducitat, límit d'intents i de reenviaments; el compte només s'activaria després de validar-lo.

  • Pagaments reals amb una passarel·la de pagament, sense emmagatzemar dades de targetes a l'aplicació, i gestió de cancel·lacions i devolucions.
  • Control d'estoc, disponibilitat i preus actualitzats abans de confirmar una comanda.
  • Restabliment segur de la contrasenya amb un enllaç temporal enviat al correu verificat i notificacions de l'estat de la comanda.
  • Proves dels fluxos crítics i revisió de seguretat, privacitat i requisits legals abans de qualsevol ús comercial.