Come Contribuire
Fatturino e un progetto open source (AGPL v3) ospitato su Codeberg. Ogni contributo e benvenuto.
Segnalare un Bug
- Controlla che il bug non sia gia stato segnalato nelle Issues
- Apri una nuova issue descrivendo:
- Cosa ti aspettavi
- Cosa e successo
- Come riprodurre il problema
- Versione di Fatturino (vedi footer dell'app)
Proporre una Funzionalita
Apri una issue con il tag "feature request" e descrivi la funzionalita che vorresti vedere, il caso d'uso e perche sarebbe utile.
Inviare una Pull Request
- Fai un fork del repository su Codeberg
- Crea un branch dal main:
git checkout -b feature/nome-funzionalita - Scrivi il codice seguendo le convenzioni del progetto
- Aggiungi test per le nuove funzionalita
- Assicurati che tutti i test passino:
composer test - Apri la PR con una descrizione chiara delle modifiche
Convenzioni di Codice
- Lingua del codice: tutto in inglese (classi, metodi, variabili, tabelle, migration)
- Comunicazione: in italiano (issue, PR, documentazione)
- Nomi di file: kebab-case (es. invoice-service.php)
- Classi e componenti: PascalCase (es. InvoiceService)
- Funzioni piccole: ogni funzione deve avere una sola responsabilita
- Test: Pest, con nomi descrittivi in inglese
Architettura del Progetto
Struttura Principale
fatturino/
├── app/
│ ├── Enums/ # Enum PHP (FundType, SdiStatus, etc.)
│ ├── Contracts/ # Interfacce per il sistema plugin
│ ├── Livewire/ # Componenti Livewire (UI)
│ ├── Models/ # Eloquent models
│ └── Services/ # Logica di business
├── packages/ # Plugin (ogni plugin e un package)
├── resources/views/ # Blade templates
├── routes/ # Definizione route
└── tests/ # Test Pest
Principi Chiave
- Importi in centesimi: tutti gli importi sono salvati come interi (es. 10000 = 100,00 euro)
- Estensioni via plugin: le nuove funzionalita vanno nel sistema plugin quando possibile, il core apre solo extension point
- Livewire full-page: ogni pagina e un componente Livewire, gestito nelle route
- Mary UI: usa i componenti Mary UI per l'interfaccia
Ambiente di Sviluppo
# Clona il progetto
git clone https://codeberg.org/fatturino/fatturino.git
cd fatturino
# Installa dipendenze
composer install
npm install
# Configura ambiente
cp .env.example .env
php artisan key:generate
# Crea database SQLite per sviluppo
touch database/database.sqlite
php artisan migrate
# Avvia il server
composer dev
Eseguire i Test
# Tutti i test
composer test
# Un singolo test
./vendor/bin/pest --filter="nome del test"
Prossimi Passi
- Sistema Plugin - Crea un plugin per Fatturino
- Novità e Versioni - Vedi le ultime modifiche
- Codeberg - Vai al codice sorgente