EZElectronics - Web app per negozio di elettronica
05/07/2024
EZElectronics è una web application e-commerce per un negozio di elettronica. L’ho sviluppata come piccolo sistema gestionale, in cui gli stessi dati di prodotto vengono usati in modi diversi da clienti, manager e amministratori.
Il centro del progetto è il ciclo di vita del prodotto. Gli articoli possono essere aggiunti al catalogo, filtrati per modello o categoria, aggiornati quando arrivano nuove unità, venduti tramite checkout, recensiti dai clienti e monitorati dal lato gestionale. Questo rende il progetto più interessante di una semplice CRUD app, perché disponibilità, carrelli, ordini e permessi dipendono l’uno dall’altro.
I clienti possono navigare il catalogo, gestire il carrello, completare acquisti, controllare ordini precedenti e lasciare recensioni. I manager si concentrano su attività operative come registrare arrivi, aggiornare quantità e gestire informazioni di prodotto. Gli amministratori hanno una vista più ampia del sistema, con funzioni per supervisione utenti e controllo della piattaforma.
Il client è stato costruito con React e TypeScript, usando React Router per la navigazione e Bootstrap per l’interfaccia. La UI doveva supportare aree diverse dell’applicazione senza far sembrare ogni ruolo un prodotto separato. Un cliente che acquista un prodotto e un manager che aggiorna lo stesso prodotto seguono flussi diversi, ma si basano su dati coerenti e schermate prevedibili.
Sul lato server, l’applicazione espone una REST API Express scritta in TypeScript e basata su SQLite. Gestisce sessioni, autenticazione con Passport Local, operazioni sui prodotti, logica del carrello, storico ordini, recensioni e controlli di accesso basati sui ruoli. La documentazione dell’API è stata una parte importante del progetto, perché molte funzionalità dipendono da contratti chiari tra frontend e backend.
La repository include anche documenti di requisiti, prototipi GUI, stima dell’effort, changelog e test report. I test non si limitano a funzioni isolate: la suite usa Jest e Supertest per coprire unit test, integration test, route test e comportamento funzionale, soprattutto intorno a utenti, prodotti, carrelli e recensioni.
Per il deploy, il progetto include una configurazione Docker che builda il client React, lo serve insieme al backend Express, mantiene il database SQLite in un volume persistente ed espone l’applicazione localmente in modo che possa girare dietro a un reverse proxy Nginx.