Vai al contenuto

Documentazione SchulyPlugins

Plugin ufficiali per il backend Schuly. Ogni plugin vive nella propria cartella sotto src/, ha come target .NET 10 e implementa ISchulyPlugin da Schuly.Plugin.Abstractions (usato come PackageReference NuGet). Il backend carica all'avvio le DLL dei plugin compilati e ne gestisce il ciclo di vita (ConfigureServices, ConfigureEndpoints, MigrateAsync), oltre a ogni IPluginBackgroundTask ricorrente. I plugin vengono compilati e distribuiti come DLL sul branch repo (distribuzione in stile Aniyomi) e collocati dagli operatori nella cartella /app/plugins/ del backend.

Struttura del repository

PercorsoRuolo
src/Schuly.Plugin.Example/Plugin di riferimento / scheletro. ISchulyPlugin minimale con endpoint in API minimale, route anonime e autorizzate, e una demo di vault dedicato al plugin.
src/Schuly.Plugin.Schulware/Integrazione con Schulnetz tramite SchulwareAPI. EF Core + Postgres, client generato con Kiota, task di sincronizzazione in background, controller MVC.
src/Schuly.Plugin.OdaOrg/Integrazione con OdaOrg (portale di tirocinio dell'ICT-BBAG). HttpClient + scraper AngleSharp, EF Core + Postgres, task di sincronizzazione in background.
.github/workflows/build_push.ymlIndividua ogni src/Schuly.Plugin.*/*.csproj, compila e pubblica DLL + indice sul branch repo.
.github/workflows/sync-version-on-release.ymlSincronizzazione della versione a ogni release.

Una cartella di plugin Schulware/OdaOrg è organizzata così:

CartellaContenuto
Controllers/Controller ASP.NET MVC - route HTTP (l'host registra l'assembly come ApplicationPart MVC, quindi vengono scoperte automaticamente).
Services/Task in background (IPluginBackgroundTask) e servizi di sincronizzazione/login a scope ridotto.
Dtos/ / Models/Un record per file.
Data/Entità EF Core, DbContext, factory design-time e Migrations/.
Infrastructure/Factory/helper per i client esterni.
Client/Client API generato con Kiota (solo Schulware).
config.ymlEsempio di configurazione a runtime (Schuly.Plugin.<Name>.yml nella cartella di configurazione dei plugin del backend).

Documenti

DocumentoContenuto
setup/development.mdPrerequisiti, compilazione di un plugin, esecuzione contro un backend attivo.
adding-a-plugin.mdCreazione dello scheletro di un nuovo plugin + il ciclo di vita di ISchulyPlugin.
migrations.mdMigrazioni EF Core per ciascun plugin e il database Postgres dedicato.
setup/kiota-client.mdRigenerare il client Kiota di Schulware.
setup/distribution.mdCome i plugin vengono compilati e distribuiti sul branch repo.
contributing.mdIl flusso obbligatorio issue → branch → PR → squash.