Cover Image

Forms Application

Una soluzione web moderna e multi-tenant, progettata per semplificare la raccolta di dati e feedback dagli utenti.

Web ApplicationMulti-TenantCloud-basedData Collection

Introduzione

Forms Application nasce dalla necessità di superare le limitazioni e le restrizioni imposte da strumenti come Google Forms, che, oltre a essere soggetti a blocchi da parte dei firewall aziendali, hanno come requisito l'accesso tramite un'email Google.

Destinatari del progetto

Biomedical Valley è un'associazione che promuove l'innovazione e la collaborazione nel settore biomedicale, coinvolgendo aziende, ricercatori e professionisti del settore.

TEDx Mirandola è un evento indipendente che fa parte del network TED, dedicato a diffondere idee innovative e ispiratrici attraverso conferenze e presentazioni di speaker locali e internazionali.

Finalità del progetto

Il progetto è stato realizzato per supportare gli eventi Biomedical Valley e TEDx Mirandola nella raccolta di informazioni dalle aziende partner.

Di che dati stiamo parlando? Ecco alcuni esempi:
- nome, ruolo aziendale e breve biografia dello speaker che salirà sul palco
- titolo e script del talk
- descrizione dell'azienda per la presentazione
- documenti e allegati

In passato, per raccogliere queste informazioni, veniva utilizzato Google Forms, tuttavia, questo strumento gratuito presenta alcune limitazioni.

I form spesso sono soggetti a blocchi da parte dei firewall aziendali, richiedono l'accesso tramite un account Google (operazione non sempre consentita su dispositivi e computer aziendali), sono poco personalizzabili in termini di layout, font, colori, inserimento di link o documenti scaricabili ed infine, è consentito fare l'upload di file solamente se già presenti su Google Drive.

Per ovviare a tutte queste limitazioni (e per mettermi alla prova) ho deciso di sviluppare da zero un'intera applicazione web con l'obiettivo principale di offrire una soluzione completamente custom e flessibile.

Gallery

Gli screenshot mostrati rappresentano un layout e un design volutamente minimalista, pensati per garantire chiarezza e funzionalità durante le prime fasi dello sviluppo. Tuttavia, l'applicazione è completamente personalizzabile, consentendo di adattare ogni elemento visivo (colori, font, layout) alle esigenze specifiche di ciascun progetto o evento.

🔍

Funzionalità principali

Le principali funzionalità offerte da Forms Application includono:

  • Creazione di form completamente personalizzati: Gli organizzatori possono configurare ogni aspetto del form, selezionando i campi da includere, definendo quali devono essere obbligatori e creando form distinti per diverse categorie di utenti o argomenti.
  • Possibilità di allegare foto e documenti: Gli utenti possono caricare direttamente file, immagini e documenti di vario tipo senza dover ricorrere a piattaforme esterne come Google Drive.
  • Invio email di conferma: Ogni form compilato genera un'email di riepilogo inviata automaticamente all'utente e/o agli amministratori, contenente tutte le informazioni inserite e i file allegati.
  • Personalizzazione completa del design: Layout, colori, font, e altri elementi visivi del form possono essere adattati alle esigenze specifiche di ogni evento o cliente.
  • UI responsiva e ottimizzata per mobile: L'interfaccia utente è progettata per adattarsi perfettamente a qualsiasi dispositivo, garantendo un'esperienza ottimale sia su desktop che su smartphone e tablet.
  • Supporto Multi-Tenant: L'applicazione è progettata per supportare più organizzazioni (tenant), permettendo a ciascuna di avere una configurazione personalizzata dei propri form, dati e layout, senza interferire con le altre, garantendo sicurezza e isolamento completo.

Soluzione Realizzata

Nel mondo dello sviluppo software, la progettazione dell'architettura e la scelta dello stack tecnologico sono fondamentali per il successo di un'applicazione.

Questo è lo schema dell'architettura che ho scelto e realizzato.

Forms application architettura

Architettura

L'architettura dell'applicazione è stata progettata seguendo un approccio client-server, in cui il frontend e il backend interagiscono tra loro attraverso un'API RESTful.

Questo approccio permette una chiara separazione delle responsabilità e una maggiore flessibilità nell'implementazione e nell'aggiornamento delle funzionalità dell'applicazione.

Frontend

Ho adottato Vue.js 2 come framework front-end principale. Vue.js è noto per la sua semplicità e flessibilità, offrendo un'esperienza di sviluppo piacevole e altamente performante.

Inoltre, ho integrato diverse librerie essenziali, tra cui Vuetify per il design dell'interfaccia utente, Vuex per la gestione dello stato dell'applicazione, Vue Router per il routing e Axios per la comunicazione con il backend.

Backend

Per quanto riguarda il backend, ho optato per un'architettura serverless utilizzando i servizi di cloud computing di AWS.

Questa scelta mi ha permesso di creare un'infrastruttura altamente scalabile e robusta, in grado di gestire carichi di lavoro variabili in modo efficiente ed economico.

Trasmissione e salvataggio dei dati

L'interazione tra il frontend e il backend avviene tramite un'API REST, esposta attraverso API Gateway di AWS.

Le richieste API vengono quindi indirizzate a funzioni Lambda, che elaborano i dati e li salvano su DynamoDB, un database NoSQL altamente performante e scalabile.

Forms application data management

DevOps e Version Control System

La gestione del codice avviene tramite GitHub, con il repository ospitato in una repo privata. Utilizzo GitHub Actions per automatizzare il processo di continuous integration e continuous deployment (CI/CD), garantendo un rilascio rapido e affidabile delle nuove versioni dell'applicazione.

Conclusioni

In sintesi, l'architettura dell'applicazione è stata progettata con cura per garantire prestazioni ottimali, scalabilità e affidabilità. L'utilizzo delle tecnologie Vue.js 2, Vuetify e AWS ha permesso di creare un'applicazione moderna e funzionale, in grado di soddisfare le esigenze degli utenti in modo efficace e intuitivo.

Scrivimi

Che tu stia cercando di sviluppare un MVP per testare un'idea, creare un'applicazione complessa o migliorare i processi aziendali, sono qui pronto per fare una chiacchierata!