iGat Shop

L’obiettivo del progetto iGat è la creazione di un e-commerce verticale. L’uso di uno strumento classico come Magento, Woocommerce o simili, non fornisce il giusto livello di flessibilità. Questo perché il requisito fondamentale è che lo shop sia un naturale continuo del gestionale interno, sviluppato col crescere dell’azienda committente, creato in ambito FileMaker.

L’ecommerce dev’essere strumento di lavoro day-by-day anzi minute-by-minute, sempre connesso alla supply chain produttiva aziendale. La gestione produttiva è complessa e particolare, difficilmente schematizzabile e standardizzabile con uno strumento preesistente.

iGat è un’azienda artigiana italiana, moderna e dinamica, specializzata nella produzione di targhe in alluminio.
Dal 1993 progetta e produce targhe per l’industria della premiazione e promozione a livello internazionale.
Il fiore all’occhiello è la gestione totale in azienda del ciclo produttivo:
design, modellazione e fresatura 3D, lavorazioni meccaniche, tranciatura, sbalzatura e stampa. iGat garantisce articoli in esclusiva e piccole produzioni personalizzate. Grazie al mix tecnologico tra nuovo e tradizionale, iGat e diventata professionista apprezzata nel settore dell’incisione, serigrafia e sublimazione.

Lo startup del progetto ha coinvolto diversi ruoli aziendali iGat e Bagubits, facendo incontrare un mix di competenze, a gestire un fiume di idee e di propositi, un brainstorming finalizzato. Ne sono derivati i punti salienti del software in progetto e le caratteristiche necessarie ed indispensabili e via via i punti al contorno.

A seguito il team Bagubits ha cercato la miglior soluzione possibile per poter risolvere al meglio il compito nato del costruire un ecommerce aziendale, su misura, da sartoria.

La natura molto complessa e completa del progetto ci ha fatto intraprendere interessanti soluzioni…

Front End

Il front end è importante quanto il backend. Un dualismo yin e yang: se l’interfaccia non funziona bene le persone – i clienti – non riesco ad ordinare i prodotti, o peggio ancora a trovare ciò che cercano. Se il backend ha lacune, il frontend poggia su pilastri non stabili.

Per il frontend abbiamo scelto un infrastruttura MVC – Model View Controller (in realtà MVW) fatta in Angular JS.

Conosciamo bene Angular JS e le sue doti. La pulizia del codice che ne deriva, la mantenibilità nel tempo e le possibili evoluzioni sono assolutamente una chiave vincente, oggi più che mai – in questo progetto più che mai.

Lo sviluppo ha quindi portato alla creazione di Models per ogni soggetto del progetto. E ogni Models relativo Controller e quindi relative View.

La prima parte è quindi stata di puro sviluppo hard-coded. I nostri obiettivi erano sempre la realizzazione di un codice sorgente pulito e chiaro, snello e veloce e soprattutto che potesse evolvere velocemente nel futuro, con le necessità del progetto e del cliente.

Ne è quindi nato un progetto di assoluto livello.

I punti chiave

Il frontend propone il filtering dei prodotti ricevendo i dati e i valori in real time. iGat può quindi introdurre nuovi prodotti in modo autonomo e indipendente – è la piattaforma che è flessibile e autoadattante. Viceversa può disabilitare prodotti e in realtime l’engine li inibisce.

Ancora più spinte sono le valorizzazioni delle categorie. Queste sono prese in realtime: ogni volta che modifiche ai dati sono inserite nel gestionale, lo stesso le comunica all’ecommerce scatenando dei processi che portano all’aggiornamento di tabelle dati, rinfrescamento di cache, di…

Il frontend è una SPA – Single Page Application per cui i dati sono caricati man mano quando servono e se servono.

I prodotti sono rappresentati in grigliati variabili per dare la possibilità all’utente di personalizzare l’interfaccia, di rendere proprio il sito.

Le interazioni sono studiate e tracciate. Il nostro obiettivo è fornire ad iGat uno strumento che sia tagliato sulle esigenze dei suoi clienti. E’ quindi necessario ed indispensabile avere strumenti di tracciamento attivi che ci forniscano dati di utilizzo. In questo processo iterativo, andiamo a migliorare tempo dopo tempo l’user interface.

Backend

Il backend di questo prodotto è la vera forza, il core. E’ stato sviluppato su una tecnologia in linguaggio PHP. Il database poggia invece su uno stabile MySQL.

Bagubits ha scelto di utilizzare Laravel: il framework MVC in ambiente PHP. Esistono diversi strumenti PHP come framework, librerie, etc. Il più che ci ha soddisfatto sia a livello di performance che di qualità è Laravel. Il suo sviluppo è portato avanti da una folta community.

Ogni parte del core è sviluppata con delle route, che istanziano un controller, che usa dei modelli per andare a renderizzare le view.

Il lifecycle di sviluppo è chiaro e preciso. Sviluppiamo ad oggetti, con una sintassi molto semplice ma al tempo stesso potente. Laravel ci permette di svincolarci dalla gestione dei compiti ripetitivi e meccanici come la gestione delle richieste, o la programmazione dei validatori. Laravel ci permette di concentrarci sul vero obiettivo: costruire un core veloce e sicuro, flessibile e potente.

Lo sviluppo è partito con uno sprint a istruire il sistema a gestire il routing delle richieste, verso i vari controller.

I controller, dove risiede la computazione e l’elaborazione poggiano su uno strato ORM che utilizza Eloquent. Uno sprint di programmazione ha definito e realizzato le classi di mapping verso i dati nel database e le loro funzionalità base.

La realizzazione di buoni modelli è fondamentale: l’applicazione dialoga in continuazione con il database per cui è indispensabile avere uno strato base solido e il più possibile error-free.

Le view in questo caso sono molto semplici perchè non hanno grafica UI, ma solo dati in formato JSON. Non abbiamo quindi Decorator che vanno a renderizzare, ma solamente array e gruppi di json che vengono mandati al frontend, pronti per essere rappresentati nella UI grazie ad Angular JS.

Vicendevolmente ad elaborare dati, la piattaforma ne fornisce al gestionale, in modo da essere sempre allineata.

Una separazione così netta tra Front End e Back end ci permette di far crescere le due componenti in modo indipendente. Il backend fornisce dati, è una sorta di blackbox che a richieste, fornisce risposte con dati. Il frontend è una piacevole copertina, un’interfaccia con cui i clienti operano.

La gestione delle lingue è interamente caricata da gestionale FileMaker. In questo modo iGat può creare nuove lingue per gestire nuovi clienti senza l’ausilio di tempo di sviluppo. Il sistema utilizza un meccanismo a vocabolario che ha molteplici vantaggi. Il primo la gestione centralizzata di tutte le stringe da tradurre, la seconda di poter avere un’interfaccia sempre uguale per ogni linguaggio, facilmente astraibile e quindi gestibile da FileMaker.

La gestione degli ordini è un ulteriore collante tra ecommerce e gestionale interno. Ogni ordine è subito propagato dal sistema verso il gestionale che ne ingesta il flusso.

Ogni prodotto facente parte dell’ordine, viene quindi gestito in modo indipendente dalle varie unità produttive dell’azienda. E ogni volta che le stesse unità aggiornano lo stato di produzione dell’ordine, questo viene propagato verso il sito. Il cliente sa esattamente a che punto è il suo ordine e quando sarà terminata la produzione, quando la merce verrà spedita, sarà possibile inserire il codice di tracciamento. Ovviamente l’unità a monte di tutto che è il magazzino di stoccaggio, verifica la presenza di prodotti già a magazzino e ne manda in produzione solo il quantitativo necessario.

Il futuro ci vede impegnati con iGat in un’importante speed up del progetto e della gestione totale: le previsioni. Tramite un’importante ed innovativa tecnologia AWS – Amazon Web Service che si chiama Machine Learning saremo in grado di prevedere gli ordini dei clienti e quindi di produrre in anticipo le loro richieste. Un post del blog di Bagubits analizzerà questa tecnologia con casi utili e reali.

Oggi siamo sempre più spesso portati ad adottare metodologie della catena produttiva JIT – Just in time. Questo però ha l’inconveniente che il cliente deve aspettare la merce per tempi più lunghi e se la stessa catena produttiva si inceppa i tempi dilatano. Se invece del JIT noi sapessimo qualche giorno in anticipo le future richieste, potremo iniziare la produzione o meglio ancora fare un attività di scheduling delle risorse umane produttive in modo da massimizzare la resa. Potremo creare un Gantt produttivo più efficace, man mano ottimizzato per la produzione. Ed è proprio li che iGat e Bagubits vogliono arrivare: sfruttare la tecnologia più avanzata per fornire le soluzioni migliori!