Trasformare l'app prototipale in un'applicazione Shiny modulare e user-friendly per:
- Autenticazione Microsoft
- Navigazione gerarchica SharePoint (Sito → Drive → Cartelle)
- Selezione multipla di video
- Assegnazione di titoli in batch
- Generazione SCORM in parallelo con feedback utente
- Moduli Shiny (
R/mod_*.R) per logica riutilizzabile - Utilities (
R/utils_*.R,R/fct_*.R) per funzioni di supporto - app.R come orchestratore principale
- config.yml per configurazioni multi-ambiente
- Login: Redirect OAuth Microsoft
- Navigazione SharePoint: Selezione sequenziale (Sito → Drive → Cartelle)
- Selezione Video: Caricamento multiplo di file .mp4
- Assegnazione Titoli: Form per ogni video selezionato
- Generazione SCORM: Batch processing con progress e notifiche
- Video scaricati in
tempdir() - SCORM generati in
tempdir() - Caricamento su SharePoint al completamento
- Pulizia automatica con
file.remove()
- Toast notifications: Conferme rapide, successi, avvertimenti
- Modal con progress bar: Operazioni lunghe (download, generazione, upload)
- Stato in tempo reale nella UI
scorm-builder/
├── app.R # App principale + UI
├── R/
│ ├── mod_auth.R # Modulo autenticazione
│ ├── mod_sharepoint_nav.R # Modulo navigazione SharePoint
│ ├── mod_video_selector.R # Modulo selezione video e titoli
│ ├── mod_scorm_generator.R # Modulo generazione SCORM
│ ├── fct_microsoft.R # Funzioni Microsoft365R
│ ├── fct_scorm.R # Funzioni SCORM (refactored da appunti.R)
│ ├── fct_validation.R # Validazioni
│ └── utils_ui.R # Helper UI (toast, modals, etc.)
├── config.yml # Configurazione OAuth
├── scorm_template/ # Template SCORM (presente)
└── .Renviron # Credenziali (presente)
- Creare struttura cartella
R/ - Refactor
appunti.R→R/fct_scorm.Rcon funzionemake_scorm()migliorata - Estrarre funzioni Microsoft325R →
R/fct_microsoft.R - Creare helper UI →
R/utils_ui.R
- mod_auth.R: Gestire token Azure, stato autenticazione
- mod_sharepoint_nav.R:
- Caricamento siti
- Selezione drive
- Navigazione cartelle
- Lista file .mp4
- mod_video_selector.R:
- Visualizzazione video disponibili
- Selezione multipla (checkbox)
- Form dinamico per assegnazione titoli
- Validazione nomi SCORM
- mod_scorm_generator.R:
- Orchestrazione generazione batch
- Modal progress bar
- Toast notifications
- Upload su SharePoint
- Tema bslib coerente (Bootstrap 5)
- Layout responsive
- Gestione errori e edge cases
- Test flusso completo
make_scorm(video_path, title, scorm_name, output_dir)
# + gestione errori
# + logging
# + validazione input- Caricamento lazy delle cartelle (non tutto in una volta)
- Caching dei siti per performance
- Gestione errori connessione
- DataTable reattivo con selezione
- Form dinamico per titoli
- Suggerimenti auto-compilati da nome file
- Sidebar con bslib: Steps (Autenticazione → SharePoint → Video → Titoli → Genera)
- Main panel: Contenuti dinamici
- Footer: Status e notifiche
- Autenticazione: Token memorizzato in
session$userData - Reattività:
reactive()per SharePoint tree,reactiveValues()per stato selezioni - Performance: Debounce/throttle per API calls
- Errori: Try-catch con notifiche user-friendly
- shiny, bslib
- AzureAuth, AzureGraph, Microsoft365R
- dplyr, purrr, tidyverse
- fs, zip
- log4r
Possibili aggiunte:
- shinyFeedback (validazione form)
- promises, future (operazioni async)
- Fase 1: 1h
- Fase 2: 2h
- Fase 3: 2h
- Fase 4: 2h
- Fase 5: 1h
- Totale: ~8h