Contribuire al progetto
XIQUIL e un progetto open source (core in licenza AGPL v3). Ecco come puoi contribuire.
Repository
Sezione intitolata “Repository”Il codice sorgente e diviso per responsabilita:
| Repository | Contenuto | Quando usarlo |
|---|---|---|
github.com/JustVitLab/xiquil | Core applicativo | Backend, frontend, modelli, API, UI, installazione |
xiquil-plugins | Plugin ufficiali | Plugin Marketplace, esempi, packaging .tar.gz |
xiquil-wiki | Documentazione | Guide utente, amministrazione, sviluppatori |
Il core e distribuito in licenza GNU Affero General Public License v3 (AGPL v3). Il backend e Python/FastAPI/SQLModel; il frontend e TypeScript/React/MUI.
Setup ambiente di sviluppo
Sezione intitolata “Setup ambiente di sviluppo”- Clona la repository:
git clone https://github.com/JustVitLab/xiquil.gitcd xiquil- Copia il file
.env.examplein.enve personalizza le variabili - Imposta la modalita sviluppo:
APP_TARGET=developmentDEBUG=True- Avvia:
docker compose up --buildIn modalita sviluppo:
- Il frontend usa Vite con Hot Module Replacement (le modifiche si vedono in tempo reale)
- Il backend ha il reload automatico al salvataggio dei file
- Swagger UI e disponibile su
https://localhost/api/docs
Per lavorare sui plugin:
- prepara il plugin nella repo
xiquil-plugins; - pacchettizza con
./package.sh nome_plugin; - abilita
PLUGIN_DEVELOPER_MODE=Trueoppure usa una licenza conplugin_developer=true; - installa il
.tar.gzda Marketplace plugin > Sviluppatore; - riavvia quando richiesto e verifica
/api/plugins/{nome_plugin}/ping.
Branching e Pull Request
Sezione intitolata “Branching e Pull Request”| Branch | Scopo |
|---|---|
main | Produzione stabile |
beta | Pre-release per testing |
develop | Sviluppo attivo |
Per contribuire:
- Crea un fork della repository
- Crea un branch dal
develop:git checkout -b feat/mia-feature develop - Implementa le modifiche
- Fai commit con Conventional Commits:
git commit -m "feat(uscite): aggiungi filtro per categoria"- Apri una Pull Request verso
develop
Code style
Sezione intitolata “Code style”Backend (Python)
Sezione intitolata “Backend (Python)”- Formattato con ruff
- Type hints dove possibile
- Commenti in inglese
- Entity names in italiano (dominio)
Frontend (TypeScript)
Sezione intitolata “Frontend (TypeScript)”- Lintato con ESLint
- Componenti funzionali con hooks
- MUI per i componenti UI
- Commenti in inglese
- Manifest sorgente
plugin.source.jsonper upload Hub;plugin.jsonruntime generato e firmato dall’Hub - Metadata, tier, versione pubblica e compatibilità Core si impostano nel form Hub, non nel pacchetto sorgente
- Route FastAPI sotto
/api/plugins/{name} - Tabelle con prefisso
plugin_{name}_ - Migrazioni idempotenti in
on_startup - Frontend come
frontend/bundle.jssenza bundlare React o MUI - Pacchetti OS dichiarati in
system_packages
Come segnalare un bug
Sezione intitolata “Come segnalare un bug”- Vai su github.com/JustVitLab/xiquil/issues
- Clicca New Issue
- Usa il template “Bug Report”
- Includi:
- Versione di XIQUIL
- Passi per riprodurre il problema
- Comportamento atteso vs comportamento effettivo
- Screenshot se possibile
- Log rilevanti (
docker compose logs app)
Come proporre una feature
Sezione intitolata “Come proporre una feature”- Apri una Issue con il template “Feature Request”
- Descrivi il problema che vuoi risolvere
- Proponi una soluzione
- Discuti con i maintainer prima di implementare
Domande frequenti
Sezione intitolata “Domande frequenti”Devo firmare un CLA? No. Il progetto e sotto AGPL v3 e non richiede Contributor License Agreement.
Questa regola riguarda le contribuzioni al Core. Pubblicare un artefatto nel Marketplace è un’attività distinta e richiede l’accettazione del Publisher Agreement mostrato dall’Hub. Vedi Diventare Publisher Marketplace.
Posso usare XIQUIL nel mio progetto commerciale? Si, rispettando i termini della licenza AGPL v3: il codice derivato deve essere distribuito con la stessa licenza e il codice sorgente deve essere reso disponibile.
Come posso aiutare senza scrivere codice? Puoi contribuire segnalando bug, proponendo feature, migliorando la documentazione o aiutando altri utenti nelle discussioni.