尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
🏦 BabyBanking — La Banca di Casa App online per gestire il "libretto di risparmio" di Arturo, Santiago e Sofia: tre salvadanai separati, depositi e prelievi, con lo storico completo di ogni movimento (data + descrizione). Gira su Vercel (ospita le pagine e la logica dell'app) e Supabase (il database dove sono salvati conti e movimenti) — entrambi gratuiti per un uso come questo.檢視完整 README ↗
App online per gestire il "libretto di risparmio" di Arturo, Santiago e Sofia: tre salvadanai separati, depositi e prelievi, con lo storico completo di ogni movimento (data + descrizione). Gira su Vercel (ospita le pagine e la logica dell'app) e Supabase (il database dove sono salvati conti e movimenti) — entrambi gratuiti per un uso come questo.
Password di partenza (cambiale subito dopo il primo deploy, vedi sotto):
12342026public/ — le pagine che vedono Arturo, Santiago e Sofia (HTML/CSS/JS, le
stesse di sempre, nessuna build richiesta).api/ + src/ — la logica del server (login, depositi, prelievi,
statistiche): su Vercel diventa automaticamente una funzione "serverless"
che gira solo quando serve.supabase/schema.sql — la struttura del database da creare una volta sola
su Supabase.babybanking), una password
per il database (salvala da parte, ma non ti servirà nell'uso quotidiano)
e una regione vicina a te (es. Frankfurt/EU). Piano Free.supabase/schema.sql di questo progetto, copia tutto il
contenuto, incollalo nell'editor e clicca Run. Questo crea le tabelle
per conti, movimenti e password, e inserisce i tre conti (Arturo,
Santiago, Sofia) con le password di partenza già pronte.https://xxxxx.supabase.co).anon/public!). È una chiave segreta con
accesso completo al database: non condividerla né pubblicarla mai,
andrà solo nelle variabili d'ambiente di Vercel (passo 3).Se il progetto è già su GitHub (come questo repository) puoi saltare questo passo. Altrimenti crea un repository su github.com e caricaci questo codice.
Vai su vercel.com e crea un account gratuito collegandoti con GitHub (così Vercel vede subito i tuoi repository).
Clicca Add New → Project, e scegli il repository di BabyBanking dalla lista.
Nella schermata di configurazione, apri Environment Variables e
aggiungi queste tre variabili (i valori di SUPABASE_URL e
SUPABASE_SERVICE_ROLE_KEY sono quelli copiati al Passo 1):
| Nome | Valore |
|---|---|
SUPABASE_URL | il Project URL di Supabase |
SUPABASE_SERVICE_ROLE_KEY | la chiave service_role di Supabase |
SESSION_SECRET | una stringa lunga e casuale (vedi sotto) |
Per generare SESSION_SECRET, apri un terminale (su Mac: app
"Terminale") e lancia:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
e incolla il risultato come valore. Se non hai Node.js a portata di mano, va bene anche una password lunga e casuale generata da un gestore di password: l'importante è che sia lunga (almeno 32 caratteri) e che tu non la condivida.
Clicca Deploy. Dopo un minuto circa Vercel ti darà un indirizzo tipo
https://babybanking-tuonome.vercel.app: è l'app, online, raggiungibile
da qualunque dispositivo connesso a internet (non solo a casa).
Non appena l'app è online, cambia subito le password di default. Il modo più semplice è farlo in locale (una volta), collegandoti allo stesso database:
.env.example in un
nuovo file chiamato .env.local e incolla gli stessi valori di
SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY e SESSION_SECRET usati su
Vercel.npm install
npm run set-pins
Da quel momento le nuove password valgono subito sull'app online, senza bisogno di un nuovo deploy.
L'app, se usata raramente, rischia due cose: Supabase mette in pausa i progetti gratuiti dopo 7 giorni senza richieste al database, e in generale è sempre meglio avere una copia di sicurezza dello storico a parte. Per questo l'app include due controlli automatici (due "Cron Job" di Vercel):
Per attivarli servono 4 nuove variabili d'ambiente su Vercel:
Genera una "Password per le app" di Google (serve per far inviare email al server a nome tuo, senza usare la password normale del tuo account):
abcd efgh ijkl mnop,
va bene anche con gli spazi)Su Vercel → Settings → Environment Variables, aggiungi:
| Nome | Valore |
|---|---|
CRON_SECRET | una stringa lunga e casuale (generala come hai fatto per SESSION_SECRET) |
GMAIL_USER | il tuo indirizzo Gmail |
GMAIL_APP_PASSWORD | il codice di 16 caratteri generato al punto 1 |
BACKUP_EMAIL_TO | l'indirizzo a cui vuoi ricevere il backup (può essere lo stesso di GMAIL_USER) |
Rifai il deploy (Vercel → Deployments → tre puntini sull'ultimo deploy → Redeploy) perché le nuove variabili vengano applicate.
Per controllare che funzioni: Vercel → scheda Cron Jobs del progetto mostra i due job programmati e, dopo che sono scattati almeno una volta, l'esito dell'ultima esecuzione. Puoi anche forzarne uno subito cliccandoci sopra invece di aspettare l'orario programmato.
Se preferisci non usare Gmail, puoi comunque esportare manualmente lo storico in qualsiasi momento da Supabase (vedi "Dati salvati" più sotto).
Con .env.local configurato come sopra (Passo 4.1), puoi lanciare l'app sul
tuo computer collegata allo stesso database di Supabase:
npm install
npm start
L'app parte su http://localhost:3000. Ogni modifica fatta in locale (un
deposito di prova, ecc.) è vera e visibile anche sull'app online, perché
condividono lo stesso database: usa questa modalità solo per test rapidi, o
crea un secondo progetto Supabase "di prova" se vuoi sperimentare senza
toccare i dati veri.
Basta fare push delle modifiche sul branch collegato a Vercel (di solito
main): Vercel rifà automaticamente il deploy in un minuto o due, senza
altri passaggi.
Conti e movimenti vivono nel database Supabase (non più in un file locale). Se hai configurato il Passo 5, ricevi già ogni domenica un CSV di backup via email. In più, Supabase fa backup automatici sul piano gratuito, e in qualsiasi momento puoi anche esportare le tabelle a mano da Table Editor → menu dei tre puntini → Export data in formato CSV.
api/index.js -> punto di ingresso per Vercel (funzione serverless)
server.js -> avvio del server in locale, per sviluppo/test
src/app.js -> app Express condivisa da locale e Vercel
src/store.js -> lettura/scrittura dati su Supabase
src/session.js -> login "senza server acceso 24/7" (cookie firmato)
src/routes.js -> API usate dal frontend
src/routes-cron.js -> endpoint dei due Cron Job (ping giornaliero, backup settimanale)
src/mailer.js -> invio dell'email di backup via Gmail
src/csv.js -> genera il file CSV dello storico transazioni
public/ -> interfaccia grafica (HTML/CSS/JS)
supabase/schema.sql -> struttura del database da eseguire su Supabase
scripts/set-pins.js -> script da riga di comando per cambiare le password
vercel.json -> configurazione del deploy e dei Cron Job su Vercel