You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: harden fiscal calculations and release EasyPIVA 1.1.1 (#36)
Verified with npm ci, npm run ci, npm audit and gitleaks. Includes the INPS 2026 massimale correction, accessibility and quote hardening, crawler metadata, dependency security updates, and the product-first GitHub presentation.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+14Lines changed: 14 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,6 +6,20 @@ Tutte le modifiche rilevanti a EasyPIVA vengono tracciate in questo file.
6
6
7
7
Nessuna modifica in attesa di rilascio.
8
8
9
+
## [1.1.1] - 2026-08-08
10
+
11
+
- corretto il calcolo INPS 2026 per Artigiani e Commercianti distinguendo il massimale di 93.707€ per chi possiede anzianità contributiva al 31 dicembre 1995 dal massimale di 122.295€ applicabile negli altri casi, con scelta esplicita nei tre simulatori e nel confronto regimi;
12
+
- documentate le due fasce di massimale nell'ADR fiscale e nella pagina informativa, ora collegata direttamente alle fonti normative primarie;
13
+
- corrette la data predefinita del preventivo affinché usi il giorno locale e la persistenza dell'ultima modifica ancora in debounce alla chiusura della pagina;
14
+
- limitato l'upload del logo a PNG, JPEG e WebP entro 1 MB, sanificando anche le bozze già archiviate e mostrando messaggi accessibili in caso di errore;
15
+
- aggiunto un messaggio accessibile quando la generazione PDF fallisce;
16
+
- migliorata l'accessibilità con skip link, titoli documento per route, menu mobile modale con gestione nativa di focus ed Escape, etichetta testuale del grafico del calcolatore e contrasto corretto nella hero;
17
+
- eliminato il layout shift del primo caricamento rendendo eager la piccola home e mantenendo il lazy loading per le route applicative più pesanti;
18
+
- aggiunti test axe end-to-end sulle otto route pubbliche e test unitari per massimali INPS, data locale, logo e gestione errori;
19
+
- aggiunti `robots.txt`, `sitemap.xml` e `llms.txt` statici per rendere esplicite le route pubbliche e la natura informativa del progetto;
20
+
- riorganizzato il README in modo product-first, chiarito l'ambito delle issue e aggiunta una social preview GitHub dedicata con provenienza documentata;
21
+
- aggiornate le dipendenze transitive interessate dagli advisory npm; `npm audit` non rileva vulnerabilità note.
22
+
9
23
## [1.1.0] - 2026-08-02
10
24
11
25
- rimosse le devDependencies inutilizzate `@types/express` (nessun uso di Express nel progetto) e `autoprefixer` (il progetto non ha una pipeline PostCSS: Tailwind CSS v4 passa da `@tailwindcss/vite`), per un totale di 14 pacchetti in meno nell'albero di installazione;

7
7
8
-
EasyPIVA è una web app client-side per simulazioni fiscali indicative dedicate alla Partita IVA italiana. Copre regime forfettario, contributi INPS, confronto tra regimi, pianificazione dei ricavi e generazione di preventivi con export PDF.
8
+
EasyPIVA è una web app open source per simulazioni fiscali indicative dedicate alla Partita IVA italiana. Riunisce calcolo del regime forfettario, contributi INPS, confronto con il regime ordinario, pianificazione dei ricavi e generazione di preventivi con export PDF.
9
9
10
-
Tutti i calcoli vengono eseguiti localmente nel browser. Il progetto non richiede account e non usa un backend applicativo.
10
+
**[Apri EasyPIVA](https://easypiva.vercel.app)** · **[Consulta le fonti fiscali](https://easypiva.vercel.app/informativa)** · **[Leggi il changelog](CHANGELOG.md)**
- Tutti i calcoli vengono eseguiti localmente nel browser.
13
+
- Non richiede account, backend applicativo o telemetria.
14
+
- Le assunzioni fiscali 2026 sono centralizzate, testate e documentate con fonti primarie.
15
+
- Il codice è pubblico e distribuito con licenza MIT.
13
16
14
-

17
+
> I risultati sono stime indicative e non costituiscono consulenza fiscale, legale o contabile. Per decisioni professionali è necessario rivolgersi a un consulente abilitato.
15
18
16
-
## Branding e packaging
19
+
## Funzionalità
17
20
18
-
- Brand prodotto: `EasyPIVA`.
19
-
- Maintainer e autore del repository: `Michael Gasperini (Mikesoft)`.
20
-
- Packaging supportato: applicazione web statica buildata con Vite.
21
-
- Questo repository non è una VS Code extension: non usa `vsce`, non genera `.vsix` e non richiede icone separate per Activity Bar, sidebar o Marketplace.
21
+
- Calcolo del regime forfettario 2026.
22
+
- Confronto indicativo tra regime forfettario e ordinario.
23
+
- Simulazione dei contributi INPS per Gestione Separata, Artigiani e Commercianti.
24
+
- Calcolo inverso del fatturato necessario per raggiungere un netto obiettivo.
25
+
- Pianificazione mensile dei ricavi rispetto alle soglie del regime.
26
+
- Preventivo locale con anteprima A4, autosalvataggio nel browser ed export PDF.
22
27
23
-
## Release 1.1.0
28
+
## Attendibilità e limiti
24
29
25
-
- Allinea i contributi INPS 2026 (minimale, contributi fissi, aliquota aggiuntiva +1% e massimale) alle Circolari INPS 8/2026 e 14/2026.
26
-
- Migliora il confronto con il regime ordinario introducendo la detrazione per redditi di lavoro autonomo.
- Elimina la richiesta runtime a Google Fonts self-hostando i font nel bundle, in coerenza con l'architettura local-first.
29
-
- Ripulisce le dipendenze di sviluppo non utilizzate e allinea metadata, citazione e documentazione.
30
+
EasyPIVA rende verificabili le proprie assunzioni senza presentarsi come sostituto di un professionista:
30
31
31
-
Il dettaglio completo è nel [changelog](CHANGELOG.md).
32
+
- soglie, aliquote e coefficienti sono centralizzati in `src/lib/fiscal-data.ts`;
33
+
- la logica fiscale è isolata in funzioni pure sotto `src/lib/calculations/`;
34
+
- le assunzioni e le fonti normative sono documentate nell'[ADR fiscale](docs/ADRs/0001-fiscal-assumptions.md) e nell'[informativa pubblica](https://easypiva.vercel.app/informativa);
35
+
- test unitari, UI ed end-to-end proteggono i principali casi di regressione;
36
+
- ogni cambiamento fiscale richiede aggiornamenti coordinati di codice, test, documentazione e copy pubblica.
32
37
33
-
## Funzionalità principali
38
+
## Privacy
34
39
35
-
- Calcolatore del regime forfettario 2026.
36
-
- Confronto tra regime forfettario e ordinario.
37
-
- Simulatore contributi INPS per Gestione Separata, Artigiani e Commercianti.
38
-
- Calcolo inverso del fatturato necessario per raggiungere un netto obiettivo.
39
-
- Pianificazione mensile dei ricavi rispetto alle soglie del regime.
40
-
- Preventivo locale con anteprima A4, autosalvataggio della bozza nel browser ed export PDF.
40
+
Il progetto segue un'architettura local-first: non invia a un server i valori inseriti nei simulatori o nel preventivo. Tema, consenso al disclaimer e bozza del preventivo possono essere salvati nel `localStorage` del browser. Il dettaglio è in [Privacy e storage locale](docs/privacy-and-storage.md).
41
+
42
+
## Release 1.1.1
43
+
44
+
La versione corrente del repository è `1.1.1`.
45
+
46
+
- Corregge la scelta del massimale INPS 2026 per Artigiani e Commercianti in base all'anzianità contributiva.
47
+
- Rafforza accessibilità, navigazione da tastiera e gestione del menu mobile.
48
+
- Rende più robusti upload del logo, autosalvataggio ed export PDF del preventivo.
49
+
- Aggiunge controlli axe end-to-end, metadata per i crawler e aggiornamenti di sicurezza delle dipendenze.
50
+
51
+
Il dettaglio completo è nel [changelog](CHANGELOG.md).
41
52
42
53
## Stack
43
54
44
-
- React 19, React Router 8, TypeScript 6, Vite 6.
55
+
- React 19, React Router 8, TypeScript 6 e Vite 6.
45
56
- Tailwind CSS v4 e componenti shadcn/ui.
46
-
- Zustand per lo stato client-side.
47
-
-React Hook Form e Zod per i form.
48
-
-Recharts, motion e jsPDF per visualizzazione ed export.
57
+
- Zustand, React Hook Form e Zod.
58
+
-Recharts, motion e jsPDF.
59
+
-Vitest con jsdom e Playwright con Chromium.
49
60
50
-
## Requisiti locali
61
+
## Sviluppo locale
51
62
52
-
- Node.js 24 LTS e npm 11, in linea con `.nvmrc`, `package.json` e CI.
53
-
- npm come package manager canonico.
54
-
55
-
## Avvio locale
63
+
Richiede Node.js 24 LTS, npm 11 e npm come package manager canonico.
L'app viene servita in sviluppo su `http://127.0.0.1:3000`.
72
+
L'app viene servita su `http://127.0.0.1:3000`.
65
73
66
-
##Script principali
74
+
### Verifiche
67
75
68
-
-`npm run dev` avvia il server di sviluppo.
69
-
-`npm run dev:e2e` avvia Vite su `http://127.0.0.1:4173` per Playwright.
70
-
-`npm run typecheck` esegue il controllo TypeScript.
71
-
-`npm run lint` esegue ESLint.
72
-
-`npm run test` esegue la suite Vitest.
73
-
-`npm run test:e2e` esegue la suite Playwright.
74
-
-`npm run build` genera la build di produzione in `dist/`.
75
-
-`npm run ci` esegue il flusso completo usato dalla CI: format check, typecheck, lint, Vitest, build e Playwright.
76
+
```bash
77
+
npm run ci
78
+
npm audit
79
+
```
76
80
77
-
Per gli end-to-end in locale può servire una sola volta `npx playwright install chromium`.
81
+
`npm run ci` esegue formattazione, typecheck, lint, test Vitest, build di produzione e test Playwright. Se Chromium non è ancora installato, esegui una volta `npx playwright install chromium`.
82
+
83
+
Gli script disponibili sono documentati in `package.json`; i principali sono `dev`, `dev:e2e`, `typecheck`, `lint`, `test`, `test:e2e`, `build` e `ci`.
78
84
79
85
## Struttura del repository
80
86
@@ -85,53 +91,36 @@ src/
85
91
lib/
86
92
calculations/ # Logica fiscale pura e testata
87
93
quote/ # Modello preventivo, paginazione ed export PDF
- La build statica prodotta da `npm run build` in `dist/` viene pubblicata su Vercel: <https://easypiva.vercel.app>.
98
-
-`vercel.json` applica la rewrite `/(.*) → /index.html` necessaria al routing client-side e gli header HTTP di sicurezza (CSP, anti-framing, MIME sniffing, referrer e permissions policy).
99
-
- Non esiste un backend applicativo né una configurazione di deploy alternativa nel repository.
103
+
La build statica prodotta in `dist/` viene pubblicata su [Vercel](https://easypiva.vercel.app) dal branch `main`. `vercel.json` gestisce il routing client-side e gli header HTTP di sicurezza. Il progetto non utilizza un backend applicativo né variabili d'ambiente runtime.
-[Provenienza degli asset](docs/asset-provenance.md)
109
112
-[Contribution policy](CONTRIBUTING.md)
110
-
-[Code of Conduct](CODE_OF_CONDUCT.md)
111
113
-[Security policy](SECURITY.md)
114
+
-[Code of Conduct](CODE_OF_CONDUCT.md)
112
115
113
-
## Workflow del repository
114
-
115
-
Il repository è pubblico e rilasciato con licenza MIT, ma la manutenzione del codice segue un workflow `maintainers-only`. La policy completa è documentata in [`CONTRIBUTING.md`](CONTRIBUTING.md).
116
-
117
-
## Governance GitHub
118
-
119
-
- La CI principale è in `.github/workflows/ci.yml` e usa permessi minimi in sola lettura.
120
-
- Playwright usa una porta dedicata per evitare collisioni con server locali su `3000`.
121
-
- Dependabot apre solo aggiornamenti di sicurezza; gli aggiornamenti di versione ordinari sono disabilitati per evitare rumore e vengono pianificati manualmente.
122
-
- Le pull request eseguono anche `Dependency Review` per intercettare vulnerabilità introdotte da cambi di dipendenze.
123
-
- Le GitHub Actions sono fissate a commit SHA verificati e gli install script npm sono limitati a una allowlist esplicita.
124
-
- Issue e pull request usano template strutturati in `.github/` per rendere il triage riproducibile.
125
-
- Le vulnerabilità vanno segnalate privatamente seguendo [`SECURITY.md`](SECURITY.md), non tramite issue pubbliche.
126
-
127
-
## Supporta il progetto
116
+
## Governance e segnalazioni
128
117
129
-
Se EasyPIVA ti aiuta nelle simulazioni fiscali o nella pianificazione della Partita IVA, puoi supportare lo sviluppo continuo tramite GitHub Sponsors: [github.com/sponsors/TheStreamCode](https://github.com/sponsors/TheStreamCode).
118
+
Il repository è pubblico, ma la manutenzione segue un workflow `maintainers-only`. Sono benvenute issue riproducibili e segnalazioni fiscali corredate da fonti primarie; il repository non fornisce consulenza fiscale o supporto personalizzato. Consulta [CONTRIBUTING.md](CONTRIBUTING.md) prima di aprire una segnalazione e [SECURITY.md](SECURITY.md) per comunicare privatamente una vulnerabilità.
130
119
131
-
## Disclaimer
120
+
La CI usa permessi minimi, le GitHub Actions sono fissate a commit SHA e le pull request eseguono anche Dependency Review. Il branch `main` richiede review, check obbligatori, conversazioni risolte e storia lineare.
132
121
133
-
I risultati sono stime indicative basate sulle assunzioni fiscali documentate nel repository. Non costituiscono consulenza fiscale, legale o contabile e non sostituiscono il parere di un professionista abilitato.
122
+
## Progetto
134
123
135
-
## Licenza
124
+
EasyPIVA è mantenuto da **Michael Gasperini (Mikesoft)**. Se il progetto ti è utile, puoi [supportarne lo sviluppo tramite GitHub Sponsors](https://github.com/sponsors/TheStreamCode).
Copy file name to clipboardExpand all lines: docs/ADRs/0001-fiscal-assumptions.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,7 +27,8 @@ EasyPIVA fornisce simulazioni fiscali indicative per utenti con Partita IVA ital
27
27
- Gestione Separata: 26,07% (Circ. INPS 8/2026), entro il massimale di 122.295€.
28
28
- Artigiani: minimale reddito 18.808€, contributo fisso 4.521,36€, aliquota 24% oltre il minimale.
29
29
- Commercianti: minimale reddito 18.808€, contributo fisso 4.611,64€, aliquota 24,48% oltre il minimale.
30
-
- Aliquota aggiuntiva +1% sul reddito oltre 56.224€ (25% / 25,48%), fino al massimale 122.295€ (Circ. INPS 14/2026).
30
+
- Aliquota aggiuntiva +1% sul reddito oltre 56.224€ (25% / 25,48%), fino al massimale applicabile (Circ. INPS 14/2026).
31
+
- Massimale Artigiani/Commercianti: 93.707€ per chi possiede anzianità contributiva al 31 dicembre 1995; 122.295€ per chi è privo di anzianità a tale data. L'interfaccia richiede questa informazione e usa il secondo caso come default compatibile con le simulazioni precedenti.
31
32
- Riduzione 35% per forfettari (artigiani/commercianti).
Copy file name to clipboardExpand all lines: docs/asset-provenance.md
+8Lines changed: 8 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,6 +9,14 @@
9
9
10
10
La cronologia del repository non documenta ulteriori informazioni sull'origine dell'immagine.
11
11
12
+
## `docs/assets/easypiva-social-preview.png`
13
+
14
+
- Cover PNG creata per la presentazione del repository e per la social preview GitHub, senza modificare l'asset dashboard esistente.
15
+
- Generata il 2026-08-08 con lo strumento ImageGen integrato di OpenAI, usando la dashboard esclusivamente come riferimento per palette, wordmark e linguaggio visivo.
16
+
- Il prompt richiedeva una composizione editoriale minimalista, il payoff prudente “Simulazioni fiscali indicative per la Partita IVA italiana” e l'assenza di claim di precisione o consulenza.
- SHA-256 del file corrente: `2d5f0c1d291d8211e52593732878c0bd6d46895ba7d0c923e110a7c4bd2377c9`.
19
+
12
20
## Titolarità e riferimenti di terzi
13
21
14
22
I maintainer rivendicano titolarità esclusivamente sui materiali originali EasyPIVA. La licenza MIT disciplina esclusivamente tali materiali originali messi a disposizione nel repository; questo record non attribuisce titolarità né una licenza separata all'immagine della dashboard.
0 commit comments