Scopri in 2 minuti tutti i bonus e le agevolazioni a cui hai diritto — gratuito, anonimo, open source.
bonusperme.it — nessuna registrazione, nessun dato salvato
Ogni anno in Italia oltre 2 miliardi di euro in bonus e agevolazioni restano non richiesti. Le informazioni sono frammentate tra INPS, Agenzia delle Entrate, MEF, Regioni e Comuni. Capire a cosa si ha diritto richiede ore di ricerca su decine di siti diversi.
BonusPerMe centralizza tutto: rispondi a 4 domande, ricevi la lista completa dei bonus compatibili con importi calcolati sulla tua situazione, requisiti e istruzioni passo-passo. Stampa il report e portalo al CAF.
- 20+ bonus nazionali e 20+ bonus regionali aggiornati alla Legge di Bilancio 2026
- Calcolo importo personalizzato basato su ISEE, reddito e composizione familiare
- Upload ISEE PDF — estrazione automatica del valore ISEE dal documento
- Report PDF scaricabile con fonti normative e riferimenti ufficiali
- Calendario scadenze esportabile in formato .ics (Google Calendar, Apple Calendar)
- Simulatore ISEE — scopri quali bonus otterresti con un ISEE diverso
- Profilo condivisibile — codice BPM-* per condividere la propria situazione
- Pagina dedicata per i CAF — con registrazione e dati Open Data API
- 7 lingue — Italiano, English, Francais, Espanol, Romana, العربية, Shqip
- Scraper automatico che aggiorna i dati da fonti istituzionali ogni 24h
- Link checker che verifica la raggiungibilita dei link ufficiali
- Validity checker che rileva bonus scaduti o modificati
- Zero cookie, zero tracking, zero database — GDPR compliant by design
Cloudflare (DNS + CDN + WAF)
|
| HTTPS (Full mode, Origin Certificate)
v
AWS Elastic Beanstalk (Docker on Amazon Linux 2023)
|
| Nginx reverse proxy (:443 SSL -> :8080)
v
Container Go (single binary, ~15 MB)
|
|-- Matcher engine (matching profilo -> bonus)
|-- Scraper (INPS, AdE, MEF, editoriali)
|-- Link checker (verifica URL ogni 24h)
|-- Validity checker (scadenze, stato bonus)
|-- PDF generator (report per CAF)
|-- i18n (7 lingue, ~150 chiavi ciascuna)
v
Nessun database — tutto in memoria + file statico
| Componente | Tecnologia |
|---|---|
| Backend | Go 1.25+ (net/http, zero framework) |
| Frontend | HTML/CSS/JS vanilla (singolo file, zero dipendenze JS) |
| gofpdf | |
| ISEE parser | ledongthuc/pdf |
| HTML scraper | golang.org/x/net/html |
| Error tracking | Sentry (opzionale) |
| Anti-bot | Cloudflare Turnstile |
| Database | Nessuno |
git clone https://github.com/nogarasimone/bonusperme.git
cd bonusperme
cp .env.example .env # configura le variabili (opzionale)
go run main.go # http://localhost:8080docker build -t bonusperme .
docker run -p 8080:8080 bonuspermedocker-compose up -dIl container gira come utente non-root, filesystem read-only, con limite 256 MB RAM e health check integrato.
bonusperme/
├── main.go # Entry point, routing, middleware chain
├── internal/
│ ├── config/config.go # Configurazione da .env / variabili ambiente
│ ├── handlers/
│ │ ├── handlers.go # API: match, stats, parse-isee
│ │ ├── extra.go # API: calendar, simulate, report PDF
│ │ ├── opendata.go # API: /api/bonus (Open Data)
│ │ ├── profile.go # API: encode/decode profilo condivisibile
│ │ ├── infra.go # SEO: sitemap, robots.txt, pagine bonus
│ │ ├── index.go # Template index.html con GTM injection
│ │ ├── layout.go # Layout condiviso (topbar, header, footer, CSS)
│ │ ├── percaf.go # Pagina /per-caf
│ │ ├── contact.go # Pagina /contatti + handler POST
│ │ ├── counter.go # Contatore persistente (counter.json)
│ │ ├── ratelimit.go # Rate limiter per IP (token bucket)
│ │ ├── turnstile.go # Verifica Cloudflare Turnstile
│ │ └── errors.go # Handler 404/500 personalizzati
│ ├── matcher/
│ │ ├── matcher.go # Engine di matching + 20 bonus nazionali
│ │ └── regionals.go # 20+ bonus regionali (tutte le regioni)
│ ├── models/models.go # Struct: UserProfile, Bonus, MatchResult
│ ├── scraper/
│ │ ├── sources.go # Lista sorgenti (INPS, AdE, MEF, editoriali)
│ │ ├── parsers.go # Parser HTML per ogni tipo di fonte
│ │ ├── enricher.go # Merge dati scraped con dati hardcoded
│ │ ├── scheduler.go # Scheduler 24h + cache thread-safe
│ │ └── regional.go # Scraper bonus regionali
│ ├── datasource/
│ │ ├── datasource.go # Manager sorgenti dati ufficiali
│ │ ├── inps.go # Fetcher INPS
│ │ ├── ade.go # Fetcher Agenzia delle Entrate
│ │ ├── mise.go # Fetcher MISE
│ │ ├── gu_rss.go # Fetcher Gazzetta Ufficiale RSS
│ │ └── opendata.go # Fetcher OpenData PA
│ ├── i18n/translations.go # 7 lingue, ~150 chiavi ciascuna
│ ├── middleware/middleware.go # Recovery, Security Headers, Gzip
│ ├── linkcheck/linkcheck.go # Verifica link ufficiali ogni 24h
│ ├── validity/
│ │ ├── validity.go # Controllo scadenze e stato bonus
│ │ ├── checker.go # Logic di validazione
│ │ ├── alerts.go # Sistema alert bonus scaduti
│ │ ├── news.go # Monitoraggio novita normative
│ │ └── admin.go # API admin (protetta da API key)
│ ├── logger/logger.go # Logger strutturato
│ ├── sentry/sentry.go # Integrazione Sentry
│ └── telegram/bot.go # Bot Telegram (coming soon)
├── static/
│ ├── index.html # Frontend completo (single file)
│ ├── privacy.html # Privacy policy
│ ├── cookie-policy.html # Cookie policy
│ ├── fonts/ # DM Sans, DM Serif Display, JetBrains Mono
│ ├── sw.js # Service Worker (PWA)
│ └── manifest.json # Web App Manifest
├── Dockerfile # Multi-stage build (Go + Alpine)
├── docker-compose.yml # Deploy con limiti e health check
├── .ebextensions/ # AWS Elastic Beanstalk (security group SSL)
├── .platform/ # Nginx config + predeploy hooks
└── .github/workflows/ci.yml # CI: vet, build, test
| Metodo | Path | Descrizione |
|---|---|---|
POST |
/api/match |
Calcola bonus compatibili (richiede Turnstile) |
POST |
/api/simulate |
Simula con ISEE diverso |
POST |
/api/parse-isee |
Estrai ISEE da PDF (max 5 MB) |
POST |
/api/report |
Genera report PDF |
GET |
/api/calendar?bonuses=id1,id2 |
Calendario scadenze .ics |
GET |
/api/translations?lang=it |
Dizionario traduzioni |
GET |
/api/stats |
Contatore verifiche e statistiche |
GET |
/api/health |
Health check dettagliato |
GET |
/api/status |
Stato server e ultimo aggiornamento |
GET |
/api/scraper-status |
Stato fonti scraper |
| Metodo | Path | Descrizione |
|---|---|---|
GET |
/api/bonus |
Lista completa bonus (nazionali + regionali) |
GET |
/api/bonus/{id} |
Dettaglio singolo bonus |
Formato JSON, CORS abilitato, cache 1 ora, rate limit 60 req/min.
| Metodo | Path | Descrizione |
|---|---|---|
POST |
/api/encode-profile |
Genera codice BPM-* da un profilo |
GET |
/api/decode-profile?code=BPM-* |
Decodifica profilo da codice |
| Metodo | Path | Descrizione |
|---|---|---|
GET |
/api/admin/alerts |
Alert bonus scaduti/modificati |
GET |
/api/admin/bonus-status |
Stato validita di ogni bonus |
Tutte le impostazioni sono in variabili d'ambiente (o file .env):
| Variabile | Default | Descrizione |
|---|---|---|
PORT |
8080 |
Porta server |
BASE_URL |
https://bonusperme.it |
URL base per SEO e OG tags |
GTM_ID |
(vuoto) | Google Tag Manager (vuoto = disattivato) |
SENTRY_DSN |
(vuoto) | Sentry DSN per error tracking |
SCRAPER_ENABLED |
true |
Abilita scraper automatico |
SCRAPER_INTERVAL |
24h |
Intervallo tra scrape |
RATE_LIMIT_RPS |
30 |
Richieste al secondo per IP |
RATE_LIMIT_BURST |
60 |
Burst massimo per IP |
LINKCHECK_ENABLED |
true |
Verifica link ufficiali |
GZIP_ENABLED |
true |
Compressione Gzip |
TURNSTILE_SITE_KEY |
(vuoto) | Cloudflare Turnstile (anti-bot) |
TURNSTILE_SECRET_KEY |
(vuoto) | Cloudflare Turnstile secret |
WEB3FORMS_ACCESS_KEY |
(vuoto) | Web3Forms per form contatti |
VALIDITY_CHECK_ENABLED |
true |
Controllo scadenze bonus |
NEWS_CHECK_ENABLED |
false |
Monitoraggio novita normative |
ADMIN_API_KEY |
(vuoto) | API key per endpoint admin |
Il matcher usa dati hardcoded verificati manualmente + arricchimento automatico da:
| Fonte | Tipo | Dati |
|---|---|---|
| INPS | Istituzionale | Assegno Unico, Bonus Nido, ADI, Bonus Mamme |
| Agenzia delle Entrate | Istituzionale | Detrazioni casa, Ecobonus, Bonus Mobili |
| MEF | Istituzionale | Carta Dedicata a Te, misure fiscali |
| Gazzetta Ufficiale | Istituzionale | RSS aggiornamenti normativi |
| Fonti editoriali | Secondaria | Verifiche incrociate (Ti Consiglio, Fisco e Tasse) |
Se una fonte non e raggiungibile, il sistema usa i dati verificati piu recenti (fallback hardcoded).
- Nessun database
- Nessun cookie di profilazione (solo consenso cookie tecnico)
- Nessun tracking (GTM opzionale e disattivabile)
- I dati inseriti esistono solo nella sessione browser — cancellati al refresh
- Server in Unione Europea (AWS eu-west-1)
- Codice sorgente aperto e verificabile
- Conforme GDPR
L'applicazione gira su AWS Elastic Beanstalk (Docker, single instance, eu-west-1) con Cloudflare davanti (DNS, CDN, WAF, SSL Full mode).
.ebextensions/01-ssl.config # Security group per porta 443
.platform/hooks/predeploy/ # Hook: copia cert SSL, configura nginx
.platform/nginx/conf.d/ # Nginx: HTTPS termination + proxy
ssl/origin-cert.pem # Cloudflare Origin Certificate (non committato)
ssl/origin-key.pem # Cloudflare Origin Key (non committato)
Per deployare:
zip -r ../bonusperme.zip . -x ".git/*" -x ".claude/*" -x "__MACOSX/*" -x ".DS_Store"
# Upload bonusperme.zip su Elastic BeanstalkLe contribuzioni sono benvenute. Leggi CONTRIBUTING.md.
Aree dove serve aiuto:
- Aggiunta bonus regionali mancanti
- Nuove lingue
- Segnalazione bonus errati o importi non aggiornati
- Test di accessibilita
- Miglioramento parser per nuove fonti istituzionali
AGPL-3.0 — puoi usare, modificare e ridistribuire liberamente, a condizione che il codice derivato resti open source. Se lo usi come servizio web, devi rendere disponibile il sorgente.
BonusPerMe is a free, open-source tool that helps families in Italy discover government benefits (bonuses, tax deductions, subsidies) they're entitled to. It supports 7 languages and covers 40+ national and regional benefits. The stack is pure Go with a single-file vanilla HTML/CSS/JS frontend — zero JS frameworks, zero npm dependencies. See CONTRIBUTING.md to get started.
Segnala un problema · Richiedi una feature · Segnala un bonus errato