| Riepilogo | Discourse Member Application ti consente di eseguire un processo di candidatura strutturato per i potenziali membri prima che si uniscano alla tua community di Discourse. | |
| Link Repository | GitHub - R23DPrinting/discourse-member-application · GitHub | |
| Guida all’installazione | Come installare i plugin in Discourse |
discourse-member-application — Un sistema di candidatura pre-invito per community private
discourse-member-application ti consente di eseguire un processo di candidatura strutturato per i potenziali membri prima che si uniscano alla tua community di Discourse. I candidati compilano un modulo pubblico personalizzabile su /apply, gli amministratori esaminano le candidature e le approvano o le rifiutano, e ai candidati approvati viene inviato automaticamente un link di invito privato.
GitHub: GitHub - R23DPrinting/discourse-member-application · GitHub
La Storia
Gestisco una community privata che utilizza la modalità solo su invito di Discourse. Stavamo gestendo le candidature per l’adesione manualmente: un Modulo Google, un foglio di calcolo, copia-incolla manuale dei link di invito. Funzionava, ma non era scalabile e sembrava disconnesso dalla community stessa.
Ho cercato un plugin di Discourse che potesse gestire le candidature pre-invito. Non ne ho trovato uno adatto. Quindi, l’ho costruito.
Demo
FunzionalitĂ
Modulo di Candidatura Personalizzabile
Il modulo è costruito interamente tramite una scheda Campi nel pannello di amministrazione, senza bisogno di codice. Tipi di campo supportati: testo, area di testo, sì/no, radio, gruppo di caselle di controllo e casella di controllo. I campi supportano etichette, suggerimenti, obbligatorio/facoltativo, abilita/disabilita e visibilità condizionale (mostra un campo solo quando un altro campo ha un valore specifico).
Dashboard Amministratore
Esamina e gestisci tutte le candidature da una pagina dedicata del plugin. Filtra per stato (In attesa / Approvato / Rifiutato / Riscatta), cerca per email o nome utente e impagina attraverso elenchi di grandi dimensioni. Visualizza i dettagli completi della candidatura, aggiungi note private dell’amministratore ed approva o rifiuta individualmente o in blocco.
Flusso di Approvazione
L’approvazione di una candidatura genera un invito di Discourse monouso e lo invia via email al candidato. Il rifiuto invia un’email di rifiuto personalizzabile con un feedback facoltativo. Quando il candidato riscatta il proprio invito e crea un account, lo stato della candidatura si aggiorna automaticamente a “Riscatta”. Ai membri approvati può essere facoltativamente aggiunto un gruppo di Discourse automaticamente.
Analisi
La scheda Analisi mostra statistiche riassuntive (candidature totali, tasso di approvazione, tempo medio di revisione), un grafico di tendenza a 12 settimane di invii rispetto ad approvazioni e un funnel di conversione da inviato → approvato → riscattato.
Notifiche Amministratore
Quando viene inviata una nuova candidatura, viene inviato un messaggio privato agli utenti configurati (o a tutti gli amministratori se lasciato vuoto).
UX Configurabile
- Testo introduttivo nella parte superiore del modulo (supporta markdown)
- Pagina di successo a
/apply/successdopo l’invio con un messaggio configurabile (supporta markdown) - Pulsante “Candidati per unirti” sulla pagina di accesso e sulla homepage che richiede l’accesso (attivabile/disattivabile)
- Scadenza della candidatura — rifiuta automaticamente le candidature in sospeso dopo un numero configurabile di giorni
Modelli Email Modificabili
Sia la conferma di invio che le email di rifiuto sono modificabili tramite Amministrazione → Personalizza → Modelli Email — non sono necessarie modifiche al codice.
Sicurezza
Limitazione di velocità (5 invii per IP all’ora), rilevamento duplicati (blocca il nuovo invio con email o nome utente pendenti/approvati, e blocca email/nomi utente già registrati) e inviti monouso.
Configurazione
Installazione
Aggiungi al tuo /var/discourse/containers/app.yml:
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/R23DPrinting/discourse-member-application.git
Quindi ricostruisci:
cd /var/discourse && ./launcher rebuild app
Impostazione del Modulo
Dopo l’installazione, vai su Amministrazione → Plugin → Member Application → Fields per creare il tuo modulo di candidatura.
Il plugin viene fornito con questi campi predefiniti (tutti modificabili o eliminabili):
- Nome utente desiderato
- Raccontaci qualcosa di te
- Come hai sentito parlare di noi?
- Fai attualmente parte di altre community online simili? (sì/no)
- Se sì, quali? (condizionale — mostrato solo se il precedente è Sì)
- Dichiarazioni dei fornitori (gruppo di caselle di controllo)
- Conferma di onestà (casella di controllo — campo di sistema, non può essere eliminato)
Usa il pulsante Add field per creare nuovi campi. Usa le frecce su/giù per riordinare. Per rendere un campo condizionale, modificalo e usa la sezione “Mostra solo quando” per selezionare un campo padre e il valore di attivazione.
Flusso di Lavoro
- Il potenziale membro visita il tuo sito e clicca su Apply to Join (o naviga direttamente a
/apply) - Compila il modulo e lo invia — non è richiesto alcun account
- Gli amministratori ricevono una notifica tramite messaggio privato
- L’amministratore esamina la candidatura in Amministrazione → Plugin → Member Application → Applications
- L’amministratore approva → il candidato riceve un’email di invito con un link monouso
- Il candidato riscatta l’invito, crea il proprio account e lo stato della candidatura si aggiorna a Redeemed
Impostazioni
| Nome | Descrizione |
|---|---|
member_application_enabled |
Abilita o disabilita il modulo di candidatura su /apply |
member_application_notify_usernames |
Nomi utente separati da virgole da notificare tramite PM alla nuova sottomissione. Lasciare vuoto per notificare tutti gli amministratori. |
member_application_invite_group |
Nome del gruppo da aggiungere all’invito al momento dell’approvazione (lasciare vuoto per saltare) |
member_application_expiry_days |
Rifiuta automaticamente le candidature in sospeso dopo questo numero di giorni (0 = mai) |
member_application_expiry_notify |
Invia email di rifiuto quando le candidature scadono automaticamente |
member_application_show_apply_button |
Mostra un pulsante “Candidati per unirti” sulla pagina di accesso e sulla homepage che richiede l’accesso |
member_application_apply_button_text |
Etichetta per il pulsante Candidati per unirti (predefinito: “Apply to Join”) |
member_application_intro_text |
Testo introduttivo mostrato nella parte superiore del modulo di candidatura. Supporta markdown. Lasciare vuoto per nasconderlo. |
member_application_success_message |
Messaggio mostrato sulla pagina /apply/success dopo l’invio. Supporta markdown. |
Note
- Agnostico rispetto alla community — tutto il testo dei campi predefiniti è configurabile tramite la scheda Campi
- Funziona con la modalitĂ
login_required/ solo su invito di Discourse - Licenza MIT
- Testato su Discourse 2026.3.0
Problemi, PR e richieste di funzionalitĂ sono benvenuti su GitHub.
GitHub - R23DPrinting/discourse-member-application · GitHub