m23: un registro (promemoria_eventi_generati) ricorda i promemoria a 24 e 3 ore già generati, così eliminare la notifica non li fa rigenerare dal cron né riaccodare la mail a ogni giro. m24: la push dei promemoria, che nascono nel database, la manda il worker mailer/ con lo stesso modulo dell'app (coda notifiche_push_coda, esiti, backoff, iscrizioni scadute eliminate, push scartate oltre 3 ore). Il sondaggio pre-partita scrive anche notifiche_utente (tipo sondaggio_cacche): compare in-app e arriva per email. L'immagine del worker si costruisce dalla radice del repository per includere src/lib/webpush.server.ts. Test: 9 di integrazione per m23, 17 per la coda push, 6 per la route del sondaggio, nuovi casi unitari sul worker; prova end-to-end con un servizio push finto. Documentazione e catalogo delle notifiche aggiornati. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
29 lines
1.0 KiB
Bash
29 lines
1.0 KiB
Bash
# Copia in .env (permessi 600) e compila. Il .env non va mai committato.
|
|
|
|
# Progetto Supabase e chiave service role (salta la RLS: trattala come una password)
|
|
SUPABASE_URL=https://<project-ref>.supabase.co
|
|
SUPABASE_SERVICE_ROLE_KEY=
|
|
|
|
# Account Gmail dedicato con verifica in due passaggi e una password per app
|
|
SMTP_USER=crapp.notifiche@gmail.com
|
|
SMTP_PASS=
|
|
|
|
# Chiavi VAPID per la push dei promemoria (M24): le stesse VAPID_* dell'app su Vercel, altrimenti i
|
|
# dispositivi rifiutano la push. Vanno impostate insieme; se mancano il worker manda solo le email.
|
|
VAPID_PUBLIC_KEY=
|
|
VAPID_PRIVATE_KEY=
|
|
# VAPID_SUBJECT=mailto:tuo@indirizzo
|
|
|
|
# URL pubblico dell'app: base dei link «Apri CrAPP» nelle mail
|
|
APP_URL=https://<dominio-dell-app>
|
|
|
|
# Facoltative (valori di default)
|
|
# MAIL_FROM_NAME=CrAPP
|
|
# MAIL_FROM= # default: SMTP_USER
|
|
# POLL_SECONDI=30
|
|
# MAIL_LIMITE_GIORNO=400 # tetto delle ultime 24 ore, sotto i ~500 di Gmail
|
|
# MAIL_LOTTO=10
|
|
# SMTP_HOST=smtp.gmail.com
|
|
# SMTP_PORT=587
|
|
# SMTP_SECURE=false # true solo per la porta 465
|