<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jeck Leach</title>
    <description>The latest articles on DEV Community by Jeck Leach (@jeck_leach_7c0571f62a1009).</description>
    <link>https://dev.to/jeck_leach_7c0571f62a1009</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3023716%2F336cf8aa-3ffd-477c-8279-f0d7b1863d87.png</url>
      <title>DEV Community: Jeck Leach</title>
      <link>https://dev.to/jeck_leach_7c0571f62a1009</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jeck_leach_7c0571f62a1009"/>
    <language>en</language>
    <item>
      <title>Calcolo Stipendio Netto</title>
      <dc:creator>Jeck Leach</dc:creator>
      <pubDate>Sat, 26 Sep 2026 17:42:47 +0000</pubDate>
      <link>https://dev.to/jeck_leach_7c0571f62a1009/calcolo-stipendio-netto-10bi</link>
      <guid>https://dev.to/jeck_leach_7c0571f62a1009/calcolo-stipendio-netto-10bi</guid>
      <description>&lt;p&gt;Il &lt;strong&gt;calcolo stipendio netto&lt;/strong&gt; può sembrare un'operazione semplice, ma trasformare correttamente una RAL in uno stipendio netto richiede molti più passaggi di quanto possa sembrare.&lt;/p&gt;

&lt;p&gt;Quando abbiamo sviluppato &lt;strong&gt;CalcoloStipendioNetto.org&lt;/strong&gt;, l'obiettivo non era creare soltanto un semplice calcolatore.&lt;/p&gt;

&lt;p&gt;Volevamo sviluppare uno strumento capace di trasformare dati complessi, come RAL, contributi previdenziali, IRPEF, addizionali regionali e comunali, in un risultato facile da comprendere.&lt;/p&gt;

&lt;p&gt;Dal punto di vista dello sviluppo, il progetto è diventato rapidamente un interessante problema di logica, UX e gestione dei dati.&lt;/p&gt;

&lt;p&gt;In questo articolo vediamo come abbiamo affrontato il problema e quali principi abbiamo seguito durante lo sviluppo del nostro calcolatore.&lt;/p&gt;

&lt;h2&gt;
  
  
  Perché il calcolo dello stipendio netto non è una semplice percentuale
&lt;/h2&gt;

&lt;p&gt;Uno degli errori più comuni consiste nel pensare che per ottenere il netto sia sufficiente sottrarre una percentuale fissa dallo stipendio lordo.&lt;/p&gt;

&lt;p&gt;Un approccio del genere potrebbe essere:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Netto = RAL × 0,75
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Questo tipo di formula può produrre una stima estremamente generica, ma non rappresenta realmente il funzionamento del calcolo.&lt;/p&gt;

&lt;p&gt;Il netto dipende infatti da diversi elementi.&lt;/p&gt;

&lt;p&gt;Tra i principali troviamo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;RAL annuale;&lt;/li&gt;
&lt;li&gt;contributi previdenziali;&lt;/li&gt;
&lt;li&gt;reddito imponibile;&lt;/li&gt;
&lt;li&gt;IRPEF;&lt;/li&gt;
&lt;li&gt;detrazioni;&lt;/li&gt;
&lt;li&gt;addizionali regionali;&lt;/li&gt;
&lt;li&gt;addizionali comunali;&lt;/li&gt;
&lt;li&gt;numero di mensilità;&lt;/li&gt;
&lt;li&gt;situazione personale e familiare;&lt;/li&gt;
&lt;li&gt;eventuali benefit o agevolazioni.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Per questo motivo abbiamo deciso di trattare il calcolo come una vera pipeline.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RAL
↓
Contributi previdenziali
↓
Imponibile fiscale
↓
IRPEF
↓
Detrazioni
↓
Addizionali
↓
Netto annuale
↓
Netto mensile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ogni fase produce un risultato che viene utilizzato dalla fase successiva.&lt;/p&gt;

&lt;h2&gt;
  
  
  Il ruolo della RAL
&lt;/h2&gt;

&lt;p&gt;La RAL, cioè la Retribuzione Annua Lorda, rappresenta il punto di partenza.&lt;/p&gt;

&lt;p&gt;Supponiamo che un lavoratore abbia:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RAL: €30.000
Mensilità: 13
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Il lordo medio per mensilità sarebbe:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;30.000 / 13 = 2.307,69 €
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Questo valore, però, non corrisponde allo stipendio realmente disponibile.&lt;/p&gt;

&lt;p&gt;Prima bisogna considerare contributi e imposte.&lt;/p&gt;

&lt;p&gt;Ed è proprio qui che nasce la necessità di un calcolatore più strutturato.&lt;/p&gt;

&lt;h2&gt;
  
  
  Separare input, logica e output
&lt;/h2&gt;

&lt;p&gt;Una delle decisioni più importanti nello sviluppo è stata separare completamente tre livelli:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;input dell'utente;&lt;/li&gt;
&lt;li&gt;logica di calcolo;&lt;/li&gt;
&lt;li&gt;visualizzazione del risultato.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Concettualmente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User Input
    ↓
Validation
    ↓
Calculation Engine
    ↓
Result Object
    ↓
UI Rendering
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Questa struttura rende il sistema più semplice da mantenere.&lt;/p&gt;

&lt;p&gt;Se una regola fiscale cambia, possiamo intervenire sulla logica senza dover modificare completamente l'interfaccia.&lt;/p&gt;

&lt;p&gt;Per un progetto che dipende da aliquote e normative aggiornabili, questa separazione è fondamentale.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quali dati chiedere all'utente?
&lt;/h2&gt;

&lt;p&gt;Qui nasce un problema tipico di molti tool online.&lt;/p&gt;

&lt;p&gt;Più dati chiediamo, maggiore può essere la precisione.&lt;/p&gt;

&lt;p&gt;Ma più campi aggiungiamo, maggiore diventa anche l'attrito.&lt;/p&gt;

&lt;p&gt;Abbiamo quindi cercato un equilibrio tra completezza e semplicità.&lt;/p&gt;

&lt;p&gt;Tra i principali parametri gestiti dal calcolatore troviamo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;RAL annuale;&lt;/li&gt;
&lt;li&gt;regione;&lt;/li&gt;
&lt;li&gt;numero di mensilità;&lt;/li&gt;
&lt;li&gt;giorni lavorativi;&lt;/li&gt;
&lt;li&gt;eventuale apprendistato;&lt;/li&gt;
&lt;li&gt;dati familiari;&lt;/li&gt;
&lt;li&gt;addizionale comunale;&lt;/li&gt;
&lt;li&gt;fringe benefit;&lt;/li&gt;
&lt;li&gt;welfare aziendale;&lt;/li&gt;
&lt;li&gt;detrazioni rilevanti.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;L'obiettivo è permettere all'utente di ottenere rapidamente una stima, senza trasformare la pagina in un modulo fiscale complicato.&lt;/p&gt;

&lt;h2&gt;
  
  
  Calcolo dei contributi
&lt;/h2&gt;

&lt;p&gt;Uno dei primi passaggi riguarda i contributi previdenziali.&lt;/p&gt;

&lt;p&gt;Dal punto di vista del codice, una funzione potrebbe essere molto semplice:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;calculateEmployeeContributions&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;grossSalary&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;rate&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;grossSalary&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;rate&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;La parte complessa non è la moltiplicazione.&lt;/p&gt;

&lt;p&gt;La parte complessa è determinare quale aliquota utilizzare nello scenario corretto.&lt;/p&gt;

&lt;p&gt;Per questo è preferibile mantenere le aliquote separate dalla logica.&lt;/p&gt;

&lt;p&gt;Per esempio:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;contributionRates&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;standard&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.0919&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;apprenticeship&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.0584&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Questo approccio rende il sistema molto più facile da aggiornare.&lt;/p&gt;

&lt;p&gt;Se una regola cambia, non è necessario riscrivere l'intero motore di calcolo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dal lordo all'imponibile
&lt;/h2&gt;

&lt;p&gt;Dopo aver calcolato i contributi, possiamo ottenere il reddito imponibile.&lt;/p&gt;

&lt;p&gt;In forma semplificata:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Imponibile = RAL - contributi deducibili
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Il valore ottenuto viene poi utilizzato per il calcolo dell'IRPEF.&lt;/p&gt;

&lt;p&gt;È importante mostrare questi passaggi all'utente.&lt;/p&gt;

&lt;p&gt;Visualizzare soltanto:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Stipendio netto: €1.700
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;non spiega nulla.&lt;/p&gt;

&lt;p&gt;Mostrare invece i singoli componenti permette all'utente di capire come si arriva al risultato finale.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gestire l'IRPEF progressiva
&lt;/h2&gt;

&lt;p&gt;Un altro aspetto importante riguarda la tassazione progressiva.&lt;/p&gt;

&lt;p&gt;Molti utenti pensano che, entrando in uno scaglione fiscale più alto, tutto il reddito venga tassato con quell'aliquota.&lt;/p&gt;

&lt;p&gt;Non è così.&lt;/p&gt;

&lt;p&gt;Le aliquote vengono applicate progressivamente alle diverse fasce di reddito.&lt;/p&gt;

&lt;p&gt;Una struttura semplificata può essere:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;calculateProgressiveTax&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;income&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;brackets&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;tax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;previousLimit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;bracket&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;brackets&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;taxableAmount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
      &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;income&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;bracket&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;limit&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;previousLimit&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;taxableAmount&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;tax&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nx"&gt;taxableAmount&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;bracket&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;rate&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;income&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="nx"&gt;bracket&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;limit&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nx"&gt;previousLimit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;bracket&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;limit&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;tax&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Il principio più importante è che gli scaglioni dovrebbero essere configurabili.&lt;/p&gt;

&lt;p&gt;In questo modo possono essere aggiornati senza modificare ogni parte dell'applicazione.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creare una pipeline di calcolo
&lt;/h2&gt;

&lt;p&gt;Una volta suddiviso il problema in componenti, il motore può essere organizzato in modo molto più leggibile.&lt;/p&gt;

&lt;p&gt;Per esempio:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;calculateNetSalary&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;contributions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
    &lt;span class="nf"&gt;calculateContributions&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;taxableIncome&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
    &lt;span class="nf"&gt;calculateTaxableIncome&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;contributions&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;grossTax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
    &lt;span class="nf"&gt;calculateGrossTax&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;taxableIncome&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;deductions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
    &lt;span class="nf"&gt;calculateDeductions&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;taxableIncome&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;netTax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
    &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;grossTax&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;deductions&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;localTaxes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
    &lt;span class="nf"&gt;calculateLocalTaxes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;taxableIncome&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;buildSalaryResult&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;grossSalary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;grossSalary&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;contributions&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;taxableIncome&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;grossTax&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;deductions&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;netTax&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;localTaxes&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Questo approccio semplifica anche il debugging.&lt;/p&gt;

&lt;p&gt;Se il risultato sembra errato, possiamo controllare ogni passaggio singolarmente.&lt;/p&gt;

&lt;h2&gt;
  
  
  Addizionali regionali
&lt;/h2&gt;

&lt;p&gt;Un'altra difficoltà è rappresentata dalle addizionali regionali.&lt;/p&gt;

&lt;p&gt;Due lavoratori con la stessa RAL potrebbero ottenere risultati diversi in base alla regione.&lt;/p&gt;

&lt;p&gt;Per questo motivo abbiamo trattato le regole regionali come dati separati.&lt;/p&gt;

&lt;p&gt;Concettualmente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;regionalRules&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;lombardia&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// regole regionali&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;lazio&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// regole regionali&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;piemonte&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// regole regionali&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Questo rende il sistema più modulare.&lt;/p&gt;

&lt;p&gt;La logica di calcolo rimane stabile, mentre i dati possono essere aggiornati separatamente.&lt;/p&gt;

&lt;h2&gt;
  
  
  Addizionale comunale
&lt;/h2&gt;

&lt;p&gt;Anche l'addizionale comunale può influenzare il risultato.&lt;/p&gt;

&lt;p&gt;Gestire automaticamente tutti i comuni può diventare molto complesso.&lt;/p&gt;

&lt;p&gt;Per questo abbiamo scelto un approccio più semplice e trasparente.&lt;/p&gt;

&lt;p&gt;L'utente può inserire l'aliquota comunale applicabile alla propria situazione.&lt;/p&gt;

&lt;p&gt;Questa scelta riduce la complessità e permette comunque di ottenere una stima più precisa.&lt;/p&gt;

&lt;p&gt;È un buon esempio di come sviluppo e product design siano strettamente collegati.&lt;/p&gt;

&lt;p&gt;Non sempre automatizzare tutto rende il prodotto migliore.&lt;/p&gt;

&lt;h2&gt;
  
  
  12, 13 o 14 mensilità
&lt;/h2&gt;

&lt;p&gt;Un altro elemento importante è il numero di mensilità.&lt;/p&gt;

&lt;p&gt;Due persone con la stessa RAL annuale possono ricevere importi mensili differenti.&lt;/p&gt;

&lt;p&gt;Il calcolo può essere rappresentato così:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;monthlyNet&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;annualNet&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;numberOfPayments&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Matematicamente è semplice.&lt;/p&gt;

&lt;p&gt;Dal punto di vista dell'utente, però, è un'informazione fondamentale.&lt;/p&gt;

&lt;p&gt;Per questo mostriamo sia il netto annuale sia il netto medio mensile.&lt;/p&gt;

&lt;h2&gt;
  
  
  Perché mostrare il percorso di calcolo
&lt;/h2&gt;

&lt;p&gt;Uno degli obiettivi principali del progetto era evitare un sistema completamente opaco.&lt;/p&gt;

&lt;p&gt;Il nostro &lt;strong&gt;&lt;a href="https://calcolostipendionetto.org/" rel="noopener noreferrer"&gt;calcolo stipendio netto&lt;/a&gt;&lt;/strong&gt; non mostra soltanto il risultato finale.&lt;/p&gt;

&lt;p&gt;Cerchiamo di mostrare anche le principali componenti che influenzano il netto.&lt;/p&gt;

&lt;p&gt;Questo approccio ha due vantaggi.&lt;/p&gt;

&lt;h3&gt;
  
  
  Maggiore trasparenza
&lt;/h3&gt;

&lt;p&gt;L'utente può capire perché una determinata RAL produce un certo risultato.&lt;/p&gt;

&lt;h3&gt;
  
  
  Maggiore fiducia
&lt;/h3&gt;

&lt;p&gt;Mostrare contributi, imposte e altre componenti rende il risultato più facile da interpretare.&lt;/p&gt;

&lt;p&gt;Un calcolatore finanziario dovrebbe spiegare, non soltanto calcolare.&lt;/p&gt;

&lt;h2&gt;
  
  
  La validazione degli input
&lt;/h2&gt;

&lt;p&gt;La validazione è un altro elemento essenziale.&lt;/p&gt;

&lt;p&gt;Un esempio semplice:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;grossSalary&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nx"&gt;grossSalary&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Inserisci una RAL valida&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ma la validazione non deve essere pensata soltanto dal punto di vista tecnico.&lt;/p&gt;

&lt;p&gt;Il messaggio deve essere comprensibile.&lt;/p&gt;

&lt;p&gt;Per esempio:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Invalid input
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;è poco utile all'utente.&lt;/p&gt;

&lt;p&gt;Meglio:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Inserisci uno stipendio lordo annuale valido.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;La differenza sembra minima, ma migliora significativamente l'esperienza.&lt;/p&gt;

&lt;h2&gt;
  
  
  Non mischiare benefit e netto cash
&lt;/h2&gt;

&lt;p&gt;Durante lo sviluppo abbiamo dovuto gestire anche fringe benefit e welfare.&lt;/p&gt;

&lt;p&gt;Una scelta sbagliata sarebbe sommare automaticamente tutto allo stipendio netto.&lt;/p&gt;

&lt;p&gt;Questo potrebbe produrre un valore apparentemente più alto, ma meno chiaro.&lt;/p&gt;

&lt;p&gt;Un benefit aziendale non è necessariamente denaro disponibile sul conto corrente.&lt;/p&gt;

&lt;p&gt;Per questo preferiamo distinguere:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Netto cash
+
Benefit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;invece di trasformare tutto in un singolo numero.&lt;/p&gt;

&lt;p&gt;Questa distinzione rende il risultato molto più comprensibile.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mobile first
&lt;/h2&gt;

&lt;p&gt;Un calcolatore con molti campi deve funzionare bene soprattutto su mobile.&lt;/p&gt;

&lt;p&gt;Abbiamo cercato di mantenere:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;campi sufficientemente grandi;&lt;/li&gt;
&lt;li&gt;testi leggibili;&lt;/li&gt;
&lt;li&gt;flusso verticale semplice;&lt;/li&gt;
&lt;li&gt;pulsante di calcolo evidente;&lt;/li&gt;
&lt;li&gt;risultati facili da scansionare;&lt;/li&gt;
&lt;li&gt;sezioni separate visivamente.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La UI deve ridurre il carico cognitivo.&lt;/p&gt;

&lt;p&gt;L'utente sta già cercando di capire tasse, contributi e RAL.&lt;/p&gt;

&lt;p&gt;L'interfaccia non dovrebbe rendere il processo ancora più difficile.&lt;/p&gt;

&lt;h2&gt;
  
  
  Un calcolatore deve spiegare i propri limiti
&lt;/h2&gt;

&lt;p&gt;Un altro principio importante riguarda la comunicazione del risultato.&lt;/p&gt;

&lt;p&gt;Il valore ottenuto deve essere interpretato come una stima.&lt;/p&gt;

&lt;p&gt;Il netto effettivo può dipendere da:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;contratto;&lt;/li&gt;
&lt;li&gt;CCNL;&lt;/li&gt;
&lt;li&gt;situazione fiscale personale;&lt;/li&gt;
&lt;li&gt;detrazioni specifiche;&lt;/li&gt;
&lt;li&gt;conguagli;&lt;/li&gt;
&lt;li&gt;bonus;&lt;/li&gt;
&lt;li&gt;altri elementi presenti in busta paga.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Per questo un calcolatore online non dovrebbe promettere una precisione assoluta.&lt;/p&gt;

&lt;p&gt;Meglio essere trasparenti.&lt;/p&gt;

&lt;h2&gt;
  
  
  SEO e sviluppo
&lt;/h2&gt;

&lt;p&gt;Durante lo sviluppo abbiamo considerato anche un altro aspetto importante: il tool deve essere comprensibile sia dagli utenti sia dai motori di ricerca.&lt;/p&gt;

&lt;p&gt;Una pagina composta soltanto da:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;input&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;button&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"result"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;può funzionare tecnicamente, ma offre poco contesto.&lt;/p&gt;

&lt;p&gt;Per questo abbiamo aggiunto contenuti che spiegano:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cos'è la RAL;&lt;/li&gt;
&lt;li&gt;differenza tra lordo e netto;&lt;/li&gt;
&lt;li&gt;come funziona l'IRPEF;&lt;/li&gt;
&lt;li&gt;cosa sono i contributi;&lt;/li&gt;
&lt;li&gt;perché il netto può cambiare;&lt;/li&gt;
&lt;li&gt;quali dati influenzano il risultato.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Questo permette di soddisfare due intenti diversi.&lt;/p&gt;

&lt;p&gt;Intento operativo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Voglio calcolare il mio stipendio netto.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Intento informativo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Voglio capire come viene calcolato.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Quando il contenuto è realmente utile, SEO e UX possono lavorare insieme.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keyword senza keyword stuffing
&lt;/h2&gt;

&lt;p&gt;Durante la progettazione dei contenuti abbiamo considerato diverse ricerche correlate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;calcolo stipendio netto;&lt;/li&gt;
&lt;li&gt;calcolatore stipendio netto;&lt;/li&gt;
&lt;li&gt;stipendio lordo netto;&lt;/li&gt;
&lt;li&gt;RAL netto;&lt;/li&gt;
&lt;li&gt;calcolo RAL netto;&lt;/li&gt;
&lt;li&gt;stipendio netto da lordo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Non abbiamo però trattato questi termini come frasi da ripetere continuamente.&lt;/p&gt;

&lt;p&gt;Rappresentano modi diversi con cui un utente descrive lo stesso problema.&lt;/p&gt;

&lt;p&gt;La strategia migliore è quindi costruire il contenuto intorno all'intento dell'utente, non intorno alla ripetizione delle keyword.&lt;/p&gt;

&lt;h2&gt;
  
  
  Branding del progetto
&lt;/h2&gt;

&lt;p&gt;Il progetto prende il nome di &lt;strong&gt;CalcoloStipendioNetto.org&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;L'obiettivo è semplice: creare uno strumento dedicato al mercato italiano che permetta di stimare il netto partendo dalla RAL e capire meglio da quali componenti deriva il risultato.&lt;/p&gt;

&lt;p&gt;Abbiamo cercato di mantenere il progetto focalizzato su tre principi:&lt;/p&gt;

&lt;h3&gt;
  
  
  Semplicità
&lt;/h3&gt;

&lt;p&gt;L'utente deve poter utilizzare lo strumento senza conoscere la fiscalità italiana nel dettaglio.&lt;/p&gt;

&lt;h3&gt;
  
  
  Trasparenza
&lt;/h3&gt;

&lt;p&gt;Il risultato deve essere accompagnato dalle principali componenti del calcolo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Aggiornabilità
&lt;/h3&gt;

&lt;p&gt;Le regole devono essere organizzate in modo da poter essere modificate quando cambiano aliquote, soglie o normative.&lt;/p&gt;

&lt;h2&gt;
  
  
  Le principali lezioni di sviluppo
&lt;/h2&gt;

&lt;p&gt;Questo progetto ci ha lasciato diverse lezioni utili.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Separare dati e logica
&lt;/h3&gt;

&lt;p&gt;Le aliquote e le soglie dovrebbero essere facilmente aggiornabili.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Evitare formule monolitiche
&lt;/h3&gt;

&lt;p&gt;Un motore suddiviso in funzioni è più semplice da verificare.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Mostrare il processo
&lt;/h3&gt;

&lt;p&gt;Nei tool finanziari la trasparenza è importante quanto il risultato.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Ridurre l'attrito
&lt;/h3&gt;

&lt;p&gt;Non tutti i dati devono essere obbligatori.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Progettare per il mobile
&lt;/h3&gt;

&lt;p&gt;Molti utenti utilizzeranno il calcolatore da smartphone.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Validare bene
&lt;/h3&gt;

&lt;p&gt;Un input errato può compromettere completamente il risultato.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Dichiarare i limiti
&lt;/h3&gt;

&lt;p&gt;Una stima online non deve essere presentata come una busta paga ufficiale.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusione
&lt;/h2&gt;

&lt;p&gt;Il &lt;strong&gt;calcolo stipendio netto&lt;/strong&gt; è un ottimo esempio di come un problema apparentemente semplice possa trasformarsi in un progetto interessante dal punto di vista dello sviluppo.&lt;/p&gt;

&lt;p&gt;Dietro un singolo risultato ci sono:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;dati;&lt;/li&gt;
&lt;li&gt;regole;&lt;/li&gt;
&lt;li&gt;aliquote;&lt;/li&gt;
&lt;li&gt;validazione;&lt;/li&gt;
&lt;li&gt;UX;&lt;/li&gt;
&lt;li&gt;logica fiscale;&lt;/li&gt;
&lt;li&gt;gestione delle eccezioni;&lt;/li&gt;
&lt;li&gt;aggiornamenti normativi.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Con &lt;strong&gt;&lt;a href="https://calcolostipendionetto.org/" rel="noopener noreferrer"&gt;CalcoloStipendioNetto.org&lt;/a&gt;&lt;/strong&gt; abbiamo cercato di trasformare questa complessità in uno strumento semplice da usare e facile da comprendere.&lt;/p&gt;

&lt;p&gt;La lezione più importante è probabilmente questa:&lt;/p&gt;

&lt;p&gt;un buon calcolatore non dovrebbe limitarsi a mostrare un numero.&lt;/p&gt;

&lt;p&gt;Dovrebbe anche aiutare l'utente a capire come quel numero viene ottenuto.&lt;/p&gt;

</description>
      <category>calcolostipendionetto</category>
      <category>stipendionetto</category>
      <category>ralnetto</category>
      <category>italy</category>
    </item>
    <item>
      <title>Building My Own Streaming Setup for HD Entertainment (Inspired by Football Nights)</title>
      <dc:creator>Jeck Leach</dc:creator>
      <pubDate>Mon, 30 Jun 2025 05:28:13 +0000</pubDate>
      <link>https://dev.to/jeck_leach_7c0571f62a1009/building-my-own-streaming-setup-for-hd-entertainment-inspired-by-football-nights-116e</link>
      <guid>https://dev.to/jeck_leach_7c0571f62a1009/building-my-own-streaming-setup-for-hd-entertainment-inspired-by-football-nights-116e</guid>
      <description>&lt;p&gt;Hi DEV Community 👋,&lt;/p&gt;

&lt;p&gt;As someone who’s deeply passionate about both tech and football, I’ve always enjoyed weekend matches and late-night sports streams. Recently, I started thinking — what if I could build my own streaming setup that not only serves my personal needs but also becomes something useful to others who enjoy free HD entertainment?&lt;/p&gt;

&lt;p&gt;The Inspiration&lt;br&gt;
The idea hit me while watching football on a platform called RBTV77, which streams in surprisingly good quality without much buffering. It wasn’t just the matches, but the interface simplicity, HD clarity, and no-cost model that got me thinking. I began to ask:&lt;/p&gt;

&lt;p&gt;How are platforms like this delivering such performance?&lt;/p&gt;

&lt;p&gt;What backend stack would be ideal for this kind of delivery?&lt;/p&gt;

&lt;p&gt;Can I build something similar — not for commercial use, but as a learning project or maybe open-source prototype?&lt;/p&gt;

&lt;p&gt;What I Want to Build&lt;br&gt;
I want to design a basic version of an entertainment streaming platform that:&lt;/p&gt;

&lt;p&gt;Can stream pre-licensed content in HD&lt;/p&gt;

&lt;p&gt;Is optimized for minimal buffering (low-latency delivery)&lt;/p&gt;

&lt;p&gt;Allows user access across mobile and web devices&lt;/p&gt;

&lt;p&gt;Keeps a simple UI (think football-first, content-forward)&lt;/p&gt;

&lt;p&gt;I’m even considering using FFmpeg, Node.js, React, and maybe WebRTC or HLS streaming depending on scalability. I'd also need a robust backend for session handling and stream tokenization.&lt;/p&gt;

&lt;p&gt;Willing to Invest&lt;br&gt;
Yes, I’m ready to fund this experiment — not to profit from it, but to learn and possibly give others access to a high-quality viewing experience, just like I got when I discovered &lt;a href="https://rbtv77apk.app" rel="noopener noreferrer"&gt;RBTV77&lt;/a&gt;. I'm especially curious about balancing server costs while keeping things smooth for viewers.&lt;/p&gt;

&lt;p&gt;Open to Suggestions&lt;br&gt;
Has anyone here worked on similar passion projects? Whether it's about real-time video streaming, efficient server setups, or even UI/UX for media platforms — I'd love your insights!&lt;/p&gt;

&lt;p&gt;Let’s chat — and if you’ve got code, architecture suggestions, or favorite tools — drop them below! ⚽💻&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
