UserId:
Nome:
Cognome:
Iniziali:
Ruolo:
HasImage:
ImageUrl:

Specifiche Tecniche dell’Applicazione

Architettura generale

  • Framework: ASP.NET Core MVC con Razor Views
  • Linguaggio: C# (server-side) + HTML5, CSS3, JavaScript
  • Stile e layout: Bootstrap 5 e FontAwesome
  • Pattern architetturale: MVC + Entity Framework Core
  • Distribuzione: ambiente Production su hosting Windows (SmarterASP.NET)

Motore di Database

  • DBMS: Microsoft SQL Server 2022
  • Accesso ai dati: Entity Framework Core
  • Mapping: Fluent API tramite classe ModelConfiguration
  • Precisione date: datetime2(7) per coerenza e tracciabilità
  • Relazioni: configurate con chiavi esterne e comportamenti di cancellazione espliciti

Struttura del Database

Il database è organizzato in modo modulare tramite quattro schemi logici, ciascuno dedicato a un ambito funzionale distinto.

  • acn – gestione utenti, contatti e recapiti
  • ptm – tassonomia dei percorsi tematici (Aree, Categorie, Materie, Temi)
  • qtm – gestione delle domande e risposte dei quiz
  • tlg – log delle sessioni quiz e dei dettagli delle risposte

Schema acn – Account

  • Utenti: anagrafica completa, credenziali, stato, dati di accesso
  • Contatti: email, telefoni, social, note
  • Recapiti: indirizzi fisici e informazioni geografiche

Schema ptm – Percorsi Tematici

  • Aree: macro-sezioni tematiche
  • Categorie: suddivisioni interne alle aree
  • Materie: argomenti specifici
  • Temi: unità didattiche o concettuali

Schema qtm – Quiz Tematici

  • Domande: testo, livello, tema di appartenenza
  • Risposte: opzioni multiple con indicazione della risposta corretta

Schema tlg – Log delle attività

  • LogQuiz: sessioni quiz, punteggi, tempi, preferenze
  • LogQuizDettaglio: risposte date, tempi, punteggi per singola domanda

Configurazioni applicative

  • Connessione al database: stringa configurata in appsettings.json
  • Invio email: SMTP autenticato tramite dominio personalizzato
  • Ambienti: Development e Production con viste condizionali

Obiettivi progettuali

  • Struttura modulare e facilmente estendibile
  • Codice chiaro, documentato e manutenibile
  • Separazione rigorosa tra livelli (UI, logica, dati)
  • Ottimizzazione delle relazioni e degli indici per prestazioni elevate
Questa applicazione è stata progettata con attenzione alla chiarezza architetturale, alla coerenza dei dati e alla massima manutenibilità nel tempo.