Learningby CodeLevel39

LRS xAPI · formazione con valore legale

Ogni minuto di formazione, dimostrato.

Learning non si fida del browser. Registra ogni evento in una catena di hash non alterabile, ricalcola tempi e coperture con il proprio orologio e verifica che dall'altra parte ci sia davvero una persona. Così l'attestato regge davanti a un ispettore.

  • Statement xAPI
  • Catena SHA-256
  • Marca temporale RFC 3161
  • Multi-organizzazione
  • xAPIstatement standard, verbi ADL
  • SHA-256una catena per ogni iscrizione
  • 6 controllidi presenza, a caso nel tempo
  • RFC 3161marca temporale di un ente terzo
Il principio

Il client racconta, il server giudica.

Il browser manda solo eventi grezzi: pagina aperta, video in riproduzione, scheda in primo piano. Tempi, coperture ed esiti li ricalcola il server, con il suo orologio, e per ogni verdetto scrive anche il motivo. Un client manomesso può mentire, ma non può convincere il server.

Cosa manda il browser
  • experienced · pagina 410:02:11
  • visibility-changed · nascosta10:02:40
  • video-sample · 2,0×10:05:03
  • completed10:09:58
  • progressed · orario dal futuro11:30:00
Cosa decide il server
  • Pagina 4 letta per 29 ssopra il minimo di permanenza della regola
  • Scheda nascosta: tempo non accreditatoconta solo la pagina visibile e con il focus
  • Velocità 2,0× oltre il massimoquel tratto di video non copre nulla
  • Statement con orario nel futuroanomalia registrata, non conta
verdetto: incompletomotore v1 · motivi salvati
Funzioni

Pensato per chi deve dimostrarlo, non solo dirlo.

Ogni funzione risponde alla stessa domanda: se domani qualcuno contesta un attestato, quali prove abbiamo?

Controlli di presenza

In momenti casuali il corso chiede una piccola prova: un codice disegnato, una somma, una domanda sul contenuto, un clic sulla figura giusta. La scadenza la fissa il server: chiederla tardi non dà più tempo.

Video visti davvero

La copertura è l'unione dei tratti guardati a velocità ammessa e con posizione coerente con il tempo trascorso. Salti in avanti e riproduzioni accelerate non contano.

Catena di hash non alterabile

Ogni evento contiene l'impronta del precedente. Le tabelle sono in sola aggiunta e la verifica di integrità ricontrolla anelli, definizione del corso e verdetti. Provate voi: cambiate un evento.

#1
#2
#3
#4
#5
Integrità verificata

Marca temporale esterna

Ogni giorno le teste delle catene diventano un albero di Merkle e la radice riceve una marca RFC 3161 da un ente terzo. Riscrivere la storia non basta più: la radice è fuori da Learning.

Ogni organizzazione a casa sua

Un indirizzo per organizzazione e dati separati a ogni livello, dal token al database. Un'organizzazione non vede mai i dati di un'altra.

Accesso dal vostro portale

Il vostro server chiede un ticket monouso con una chiave API firmata; l'utente entra con un clic, senza un'altra password.

Regole su misura

Permanenza minima per pagina, copertura video, velocità massima, frequenza dei controlli: valori dell'organizzazione, ritoccabili per singola unità e congelati nella versione pubblicata.

Audit per gli ispettori

L'auditor sfoglia la cronologia completa di ogni iscrizione, lancia la verifica di integrità e rifà il verdetto con lo stesso motore che l'ha emesso. Le correzioni non cancellano: annullano, con motivo e autore.

Versioni immutabili dei corsi

Un corso pubblicato non cambia più: struttura, regole e domande sono congelate nella versione, con la loro impronta. Anni dopo si sa ancora con quali regole è stato giudicato ogni partecipante.

Standard aperti

Parla xAPI, dall'inizio.

Il cuore di Learning è un Learning Record Store: ogni azione è uno statement xAPI con verbi ADL dove esistono. I dati non restano chiusi in un formato proprietario.

  • Idempotente e atomicoLo stesso statement rimandato non crea doppioni; un lotto entra tutto o niente.
  • Identità dal token, mai dal corpoUn actor diverso da chi è autenticato viene rifiutato.
  • JSON canonicoOgni statement è salvato in forma canonica (RFC 8785), così l'impronta è sempre ricalcolabile.
POST/api/statements
{  "id": "0192f7c4-5b1e-7a3d-9c2f-4e8b1d6a0f37",  "actor": { "account": { "name": "u-7f3a…" } },  "verb": { "id": "http://adlnet.gov/expapi/verbs/experienced" },  "object": {    "id": "https://learning.codelevel39.it/xapi/units/…"  },  "context": {    "registration": "7f3a…",    "extensions": { // stato del player      "…/ext/page": 4, "…/ext/visible": true    }  },  "timestamp": "2026-10-17T10:02:11.482Z"}
200 registrato200 già presente409 stesso id, contenuto diverso
Per chi

Quando la formazione deve valere.

Enti e associazioni

Volontariato, protezione civile, pubblica amministrazione: personale da formare e abilitare, con prove da conservare.

  • Organizzazione con il suo indirizzo
  • Ruoli per amministratori e auditor

Aziende

Formazione obbligatoria e compliance: sapere chi ha seguito cosa, per quanto e con quali regole.

  • Regole di fruizione configurabili
  • Verifica di integrità in un clic

Enti di formazione

Corsi venduti a terzi che pretendono la prova della fruizione: date ai committenti un audit che possono verificare da soli.

  • Una organizzazione per cliente
  • Prove esportabili e verificabili

Software house

Avete già un portale? Learning ci si aggancia: SSO a ticket firmati e statement xAPI, senza rifare gli utenti.

  • Chiavi API per portale
  • Firma HMAC con percorso e nonce
Sicurezza e privacy

Solo i dati che servono, protetti come si deve.

  • IP e browser solo se li volete. Si attivano per organizzazione, stanno fuori dalla catena e si cancellano dopo il periodo scelto.
  • Sessioni brevi. Token di accesso di 15 minuti in memoria, rinnovo in cookie protetto, revoca immediata al cambio password.
  • Account protetti. Password cifrate, blocco dopo tentativi falliti con avviso, link di reset monouso.
  • Segreti mai in chiaro. Token, ticket e chiavi sono salvati solo come impronta.
Il percorso

Le fondamenta prima di tutto.

  • Record store e motore di validazioneCatena, sessioni, controlli di presenza, verdetti, audit.
  • Utenti, organizzazioni e SSOLogin, ruoli, accesso dai portali esistenti.
  • Ancoraggio esternoAlbero di Merkle e marca temporale RFC 3161.
  • In arrivoPlayer dei contenuti, editor dei corsi, quiz e attestati.
Parliamone

Formazione che si può dimostrare.

Raccontateci chi dovete formare e quali prove vi servono: vi mostriamo Learning sul vostro caso.

help@codelevel39.it · rispondiamo entro un giorno lavorativo