DB Area Personale
Portale interno unificato per il personale e gli studenti dell'IIS Cigna-Baruffi-Garelli. Plugin WordPress con SSO Google Workspace, anagrafica classi, dashboard widget, news interne, bacheca sindacale, approvazioni e notifiche.
by Davide Bertolino · github.com/dadebertolino/db-area-personale · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/dadebertolino/db-area-personale/archive/refs/heads/main.zipReadme
DB Area Personale
Plugin WordPress che fornisce un portale interno unificato per il personale e gli studenti dell'IIS Cigna-Baruffi-Garelli (Mondovì, CN).
Riferimento normativo interno: Documento di requisiti v1.2 (13 maggio 2026).
Cosa fa
Sostituisce, per i ruoli non amministrativi, la bacheca standard di
/wp-admin con un'interfaccia dedicata a /area-personale/ di tipo
dashboard a widget. Integra:
- SSO Google Workspace con mapping esplicito gruppi → ruoli e step-up TOTP per azioni sensibili.
- Anagrafica classi / studenti / docenti con import CSV e sync Google Workspace.
- News interne con CPT dedicato, tipi, capability granulari, workflow approvazione DS, selettore destinatari strutturato (per classe, anno, indirizzo, sede, ruolo, utente).
- Bacheca sindacale con visibilità per-post (interna o pubblica) e nessuna moderazione preventiva (art. 25 L. 300/1970).
- Comunicazioni del Dirigente come CPT separato.
- Sistema notifiche in-app + email (immediata/digest mattino/digest sera) con orari personalizzabili e granularità 15 minuti.
- PWA installabile su mobile e desktop.
- REST API estesa per dashboard widget, audience, classi, import, sistema.
- Cron architecture basata su Action Scheduler con system cron Unix.
Coesiste con il tema istituzionale Design Scuole Italia
sostituendo unicamente la modale di accesso e isolando i propri asset
(vedi docs/theme-coexistence.md).
Stato
1.0.0 — in sviluppo. Bootstrap pronto, sviluppo incrementale dei moduli in corso.
Roadmap (§9 documento requisiti):
- v1.0 — Rilascio iniziale.
- v1.2 — Push notifications, integrazione registro Argo, materiali didattici, statistiche DS, esportazione iCal.
- v2.0 — Apertura ai genitori (ruolo
cbg_genitore).
Requisiti
- PHP 8.1+
- WordPress 6.0+
- MySQL/MariaDB con InnoDB
- Cron Unix di sistema (WP-Cron disabilitato)
- SMTP transactional raccomandato (Google Workspace SMTP relay o equivalente)
- Plugin custom CBG: Segreteria Digitale, Moduli Scuola, GESTIONESCUOLA
- Tema istituzionale: Design Scuole Italia 2.16+ (consigliato come child theme)
Installazione (produzione)
- Scarica l'ultimo archivio da Releases.
- Carica la cartella
db-area-personalein/wp-content/plugins/. - Attiva il plugin da WordPress → Plugin.
- Disabilita WP-Cron in
wp-config.php:define( 'DISABLE_WP_CRON', true ); - Configura un cron Unix che chiami
/wp-json/cbg-ap/v1/cron/tickogni minuto con headerX-CBG-Cron-Keyimpostato al valore dell'optioncbg_ap_cron_secret. - Configura SSO Google Workspace e mapping gruppi → ruoli dal pannello Impostazioni → Area Personale.
- Importa anagrafica classi/studenti/docenti via CSV.
Documentazione completa: docs/deployment.md.
Installazione (sviluppo)
git clone https://github.com/dadebertolino/db-area-personale.git
cd db-area-personale
composer install
npm install
npm run build
Symlink della cartella in wp-content/plugins/ dell'installazione locale, quindi attiva.
Architettura
Il plugin segue il DB WordPress Plugin Development Standard dell'autore:
- Singleton + loader hook centralizzato.
- Prefisso
cbg_ap_per funzioni, option, user meta, post meta;CBG_AP_per classi. - Tabelle DB con prefisso
{$wpdb->prefix}cbg_ap_. - UI in italiano (text domain
cbg-ap). - Capability check su ogni endpoint REST, nonce su ogni mutazione.
$wpdb->prepare()su ogni query.
Struttura
db-area-personale/
├── db-area-personale.php Bootstrap, costanti, check ambiente, check tema
├── uninstall.php Cleanup completo
├── includes/ Backend PHP (auth, cpt, audience, classi, widgets, cron, rest, frontend, admin, integrations)
├── templates/ Template PHP frontend
├── assets/ Sorgenti e build (Tailwind + Alpine.js)
├── languages/ File .pot/.po/.mo
├── tests/ PHPUnit
└── docs/ Documentazione tecnica
Documentazione
docs/architecture.md— Architettura generaledocs/widget-development.md— Come scrivere un widget per la dashboarddocs/integration-guide.md— Integrazione con altri plugin customdocs/api-reference.md— REST APIdocs/database-schema.md— Schema DBdocs/audience-model.md— Modello destinatari newsdocs/import-format.md— Formato CSV import classi/studenti/docentidocs/deployment.md— Deployment, cron, SMTP, recoverydocs/theme-coexistence.md— Coesistenza col tema Design Scuole Italia
Contribuire
Vedi CONTRIBUTING.md.
Licenza
GPL v2 or later. © Davide Bertolino.
Il tema istituzionale Design Scuole Italia è distribuito sotto AGPL-3.0; sono opere separate che non si linkano staticamente.