Skip to content

Latest commit

 

History

25 Commits

Folders and files

Repository files navigation

Gestionale Associazioni

Piattaforma SaaS multi-tenant per la gestione completa della vita di un'associazione: soci e tesseramento, eventi con prenotazioni online, quote e pagamenti, registro ufficiale e governance, comunicazione, economia, volontari e organizzazione interna. Ogni associazione ha il proprio mini-sito pubblico brandizzato dove i cittadini si iscrivono e prenotano gli eventi.

Costruita in Laravel 12 / PHP 8.4, con isolamento multi-tenant a livello di framework, un'area pubblica per ogni associazione, un'area riservata per i soci, API REST documentate e oltre 1.700 test automatici (PHPUnit + Playwright E2E).

Dashboard


Indice


Caratteristiche principali

  • 🏢 Multi-tenant — una sola installazione serve molte associazioni, con isolamento dei dati garantito da un global scope a livello di framework.
  • 🌐 Mini-sito pubblico per associazione — catalogo eventi, iscrizione soci, prenotazioni, area riservata, pagina trasparenza, sezione sostenitori, a /a/{slug}.
  • 🎫 Tesseramento — tessere con QR, verifica pubblica, rinnovi self-service, campagna rinnovi, stampa massiva, apertura anno sociale.
  • 🗓️ Eventi e prenotazioni — pubblicazione, capienza con lista d'attesa e promozione automatica, eventi a pagamento (Stripe/PayPal), check-in con QR, calendario, ricorrenze, feedback post-evento.
  • 👤 Account ospite e soci — registrazione pubblica, verifica email, area riservata ricca (prenotazioni, tessera, quote, GDPR), promozione a socio.
  • 💶 Economia — quote e ricevute numerate, prima nota con movimenti automatici, donazioni online, report economici, budget eventi.
  • 📋 Registro e governance — libro soci ufficiale, cessazioni formali, organi sociali, verbali numerati, riunioni del direttivo con votazioni e bozza verbale.
  • 🤝 Organizzazione — volontari e turni con registro ore, spazi e prenotazioni interne, inventario e prestiti, progetti con rendicontazione.
  • ✉️ Comunicazione — email brandizzate per tenant, template, newsletter, annunci, convocazioni assemblea, sondaggi, compleanni.
  • 🔐 Sicurezza — 2FA, ruoli e permessi granulari, audit trail, rate limiting, CSP, honeypot, backup pianificati.
  • 🔄 Aggiornamenti dalla dashboard — il super admin aggiorna l'applicazione con un clic, con backup automatico e rollback.

Screenshot

Dashboard amministrativa

Dashboard

Anagrafica soci

Soci

Eventi

Eventi

Statistiche annuali (l'anno in cifre)

Statistiche annuali

Prima nota economica

Prima nota

Mini-sito pubblico dell'associazione

Frontend pubblico

Login

Login


Funzionalità in dettaglio

Il sistema è stato costruito in round successivi. Ogni area è coperta da test automatici.

Base — gestione associativa

Anagrafica soci con campi personalizzati, tag, gruppi dinamici, filtri salvati, ricerca full-text, import/export Excel. Tessere con QR, template, PDF, verifica pubblica e scanner. Quote e pagamenti online (Stripe/PayPal). Eventi e partecipanti. Email per tenant (template, coda, log, SMTP dedicato). Documenti, verbali, scadenze. Gestione associazioni, sedi, amministratori, configurazioni. API REST v1 con Sanctum e documentazione OpenAPI.

Prenotazioni eventi (frontend pubblico)

Mini-sito brandizzato per ogni associazione: catalogo eventi, account ospite con verifica email, prenotazioni con capienza e lista d'attesa (promozione FIFO automatica), eventi a pagamento con Stripe/PayPal, biglietto con QR e PDF, check-in dallo scanner admin. Area riservata account completa: prenotazioni, storico, profilo, preferenze, export e cancellazione GDPR.

Iscrizioni e preiscrizioni

Form di iscrizione personalizzabile per ogni associazione (campi configurabili, validazione codice fiscale e telefono), aperto anche agli ospiti senza account. Modalità preiscrizione (con approvazione) o diretta. Preiscrizione anche alle prenotazioni evento. Gestione delle richieste lato admin con approvazione, tessera e quota automatiche.

Vita sociale (25 funzionalità)

Rinnovi self-service, campagna rinnovi, promemoria multi-step, apertura anno sociale. Calendario eventi con export ICS, eventi ricorrenti, feedback post-evento, eventi riservati ai soci. Libro soci ufficiale, cessazioni formali, organi sociali, verbali numerati. Layout email brandizzato, ricevute quote PDF, centro anteprime email. Slug editabile con QR di invito, documenti con scadenza, rilevazione duplicati, export multi-foglio.

Gestione semplificata (25 funzionalità)

Ricerca globale ⌘K, azioni in blocco sui soci, note interne, attività admin, registro modifiche. Bacheca annunci, newsletter, sondaggi, compleanni, contatti rapidi. Prima nota con movimenti automatici da quote e prenotazioni, report economico, donazioni online, solleciti quote, scadenzario unificato. Richieste modifica dati, nuclei familiari, kiosk check-in, soci minorenni con tutore. Onboarding, cestino unificato, audit accessi.

Organizzazione (25 funzionalità)

Volontari e turni con disponibilità, mansioni, auto-candidatura, registro ore e attestato PDF. Spazi con prenotazioni e rilevazione conflitti, inventario e prestiti attrezzature. Progetti con milestone, rendicontazione e report PDF. Riunioni del direttivo con ordine del giorno, votazioni e generazione bozza verbale, archivio decisioni, adempimenti ricorrenti. Mini-CRM contatti esterni, sponsor con sezione pubblica, referral porta-un-amico, galleria foto eventi, statistiche annuali con confronto anno-su-anno ed export PDF.

Convocazioni e trasparenza

Annunci di tipo convocazione assemblea (data, luogo, ordine del giorno, invio email ai soci) e sezione pubblica Trasparenza dove pubblicare bilanci, statuto e documenti per categoria.


Architettura

Aspetto Implementazione
Multi-tenancy Trait BelongsToAssociazione → global scope su associazione_id; middleware tenant; il super_admin opera sull'associazione selezionata
Chiavi UUID (HasUuids) su tutte le entità di dominio
Autenticazione Fortify + 2FA per gli admin (utenti); guard socio per l'area soci; guard account per il frontend pubblico; Sanctum per le API
Autorizzazione Policy + permessi granulari spatie/permission (ruoli super_admin, admin_associazione, operatore)
Audit spatie/activitylog su tutti i modelli
Frontend pubblico Per associazione su /a/{slug}, risolto da RisolviTenantPubblico senza sessione admin
Pagamenti Interfaccia Pagabile (quote, prenotazioni, donazioni) con dispatch webhook per tipo
Code & scheduler Driver database; scheduler in routes/console.php monitorato

Convenzioni: rotte per modulo in routes/modules/, controller in app/Http/Controllers/<Modulo>/, validazione via Form Request, viste sul design system condiviso (Bootstrap 5.3, tema chiaro/scuro, brand #FF7B11).

A colpo d'occhio: 68 modelli, 159 controller, 232 rotte, 58 migration, 1.716 test.


Stack e librerie

Laravel 12 · PHP 8.4 · MySQL 8 (test su SQLite in-memory).

Le 25 librerie principali: Fortify, Sanctum, Scout, spatie (permission, activitylog, backup, medialibrary, query-builder, data, settings, csp, honeypot, health, schedule-monitor), maatwebsite/excel, barryvdh/laravel-dompdf, chillerlan/php-qrcode, propaganistas/laravel-phone, robertogallea/laravel-codicefiscale, mews/purifier, dedoc/scramble, stripe/stripe-php, srmklive/paypal, larastan, debugbar.


Requisiti

  • PHP 8.3+ (consigliato 8.4) con pdo_mysql, mbstring, zip, gd, intl, curl, openssl
  • MySQL 8 (o MariaDB compatibile)
  • Composer 2, Node.js 20+ e npm
  • mysqldump nel PATH (per i backup)

Installazione

Installer web (consigliato)

git clone https://github.com/fabiodalez-dev/gestionale-associazioni.git
cd gestionale-associazioni
composer install --no-dev
cp .env.example .env

Apri /install nel browser: il wizard in 5 passi (requisiti → database → super admin → email → fine) genera l'APP_KEY, scrive il .env, migra lo schema e crea il primo super admin. Al termine l'installer si blocca da solo.

Installazione manuale (CLI)

composer install
cp .env.example .env
php artisan key:generate
# configura DB_* nel .env
php artisan migrate --seed
npm install && npm run build
php artisan storage:link

Avvio

php artisan serve            # applicazione
php artisan queue:work       # coda email e job (obbligatorio)
# cron: * * * * * php artisan schedule:run

Aggiornamenti in-app

Il super admin trova in /aggiornamenti una pagina che controlla le GitHub Releases e mostra versione installata vs ultima disponibile. Con un clic l'applicazione si aggiorna da sola: backup automatico del database, download della release con verifica SHA256, modalità manutenzione, sovrascrittura dei file (preservando .env e storage/), migrate, pulizia cache e riavvio della coda — con rollback automatico dei file in caso di errore e storico completo degli aggiornamenti.


Test

php artisan test            # ~1.716 test PHPUnit (SQLite in-memory)
npm run test:e2e            # 109 test E2E Playwright (DB dedicato, server automatico)
vendor/bin/pint             # code style
vendor/bin/phpstan analyse --memory-limit=1G   # analisi statica livello 5

Licenza

MIT.

About

Piattaforma SaaS multi-tenant per la gestione completa di associazioni: soci, tesseramento, eventi con prenotazioni online, quote, registro, governance e organizzazione. Laravel 12.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages