GithubHelp home page GithubHelp logo

elezioni's Introduction

Introduzione

Il progetto prevede un sistema di registrazione, di verifica dell'email e di login tramite apposito pin segreto inviato per email. Una volta autenticato tramite pin (che è possibile anche recuperare), si può votare selezionando il partito e fino a due candidati preferiti. Non è possibile effettuare il voto più di una volta. Successivamente al voto, si viene reindirizzati alla pagina del risultati, che per questioni di praticità sono sempre accessibili, e quindi aggiornabili in tempo reale man mano che gli utenti aggiungono il proprio voto. Il codice è stato pensato per funzionare con php 8.0 e CodeIgniter 4

Framework: CodeIgniter 4 (documentazione: https://codeigniter.com/user_guide/intro/index.html)

Il framework in questione permette di automatizzare una serie di tasks e di conseguenza organizzare il codice in modo tale da essere facilmente aggiornabile. E' basato sul modello MVC (Model View Controller), che prevede principalmente quattro attori:

  • Router: tutte le richieste vengono coinciliate in /public/index.php tramite i file .htaccess, e una classe Router si occupa di richiamare il controller e metodo giusti;
  • Model: nei modelli viene gestita tutta la logica applicativa, le interazioni col database e l'elaborazione dei dati.
  • View: non sono altro che le pagine html visualizzabili dall'utente.
  • Controller: si occupa di richiamare i modelli necessari per portare a termine le operazioni desiderate e di mostrare le view, passandogli gli eventuali dati elaborati dai modelli. Più nello specifico sono presenti anche altri elementi che permettono una facile gestione dei filtri da applicare per specifiche routes, come, ad esempio, il controllo dell'esistenza di una sessione per poter accedere alla pagina del voto.

Cartelle e files principali

  • All'interno della root del sito il file .env contiene tutte le credenziali e settaggi personalizzati per il funzionamento del sito. Il file in questione è escluso da ogni sistema di version control all'interno del file .gitignore, per questo ogni utente che desideri utilizzare una versione locale di questo progetto deve necessariamente rinominare il file "env" (aggiungedo un punto come prefisso) e di conseguenza inserire i propri dati.
  • All'interno di /app/ sono di maggiore rilievo le cartelle Config/, Controllers/, Filters/, Libraries/, Models/, Views/ e Validation/. In Config/Routes.php sono definiti i vari percorsi visitabili nel sito, in Config/Validation.php sono presenti le varie regole di validazione per la creazione di un account, login e votazione. Libraries/ contiene il codice utile per la visualizzazione di "view cells" (elementi html ripetuti per molte pagine, e quindi separabili in files più piccoli), come l'header e il footer, e il codice per la generazione di un pin unico e casuale.
  • in /public/, oltre all'unico index.php che gestisce tutte le richieste, contiene la cartella assets/ per tutti quegli elementi secondari come immagini, fogli di stile... (in questo caso è solo presente il file da includere tramite jQuery per la selezione dei candidati nella pagina del voto).

jQuery

La parte realizzata con jQuery è stata pensata per mostrare la lista dei candidati disponibile per un partito solo dopo che se ne seleziona uno, ed evitare che l'utente selezioni lo stesso candidato per entrambe le preferenze nella pagina del voto. La view contentente il codice jQuery si trova in app/Views/voting/Vote.php.

elezioni's People

Contributors

ciro23 avatar m-baratta avatar scolcipitato avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.