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.