Come sviluppatore appassionato di tecnologia sanitaria, ho notato una lacuna nel mercato. Mentre Subway offre informazioni nutrizionali, i clienti non dispongono di uno strumento interattivo per personalizzare le loro esatte combinazioni di pasti. Volevo creare qualcosa che fornisse alle persone informazioni in tempo reale sulle loro scelte alimentari, fino all'ultima caloria.
La sfida era chiara: costruire un calcolatore completo che potesse gestire l'immensa variabilità del menu di Subway—dalle scelte di pane e selezioni di proteine a ogni verdura e condimento, mantenendo al contempo la precisione con i dati nutrizionali ufficiali.
Ho trovato uno strumento di nutritionix che fa la stessa cosa, il che è positivo, ma volevo costruire qualcosa che sembrasse più user-friendly.
Il mio primo compito è stato raccogliere e strutturare i dati nutrizionali. Ho trascorso settimane raccogliendo le tabelle nutrizionali ufficiali di Subway, standardizzando le misurazioni e creando un database JSON completo.
La struttura doveva essere sia completa che efficiente:
const subwayMenu = { breads: [ { id: 'artisan-italian', name: '6" Artisan Italian Bread', calories: 210, totalFat: 2, saturatedFat: 1, // ... 14 additional nutritional fields }, // ... 10 more bread options ], // ... 9 additional categories };
\ Ogni voce del menu contiene 19 metriche nutrizionali, garantendo che possiamo visualizzare un'etichetta nutrizionale completa in stile FDA, non solo calorie.
La complessità principale risiedeva nella gestione dello stato di selezione dell'utente. Un ordine Subway non è una semplice selezione—è una combinazione multidimensionale:
let currentSelection = { sandwichSize: '6inch', bread: null, proteins: {}, cheeses: {}, vegetables: {}, condiments: {}, // ... with quantities for each };
\ Ho implementato un sistema basato sulla quantità in cui gli utenti potevano aggiungere più porzioni di proteine, formaggi o verdure. Il moltiplicatore "footlong" doveva automaticamente raddoppiare i componenti appropriati mantenendo inalterati gli altri (come le insalate).
Per garantire che il calcolatore funzionasse su qualsiasi sito web senza conflitti CSS, ho utilizzato un approccio con ambito definito:
#subway-calculator-isolated { all: initial; display: block; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', ...; } #subway-calculator-isolated * { box-sizing: border-box; margin: 0; padding: 0; }
\ Il reset all: initial e l'alto z-index (99999) garantivano che il calcolatore si renderizzasse in modo coerente indipendentemente dallo stile del sito ospitante.
Lo strumento utilizza le informazioni nutrizionali ufficiali di Subway del 2025, incluse le recenti aggiunte come il Ghost Pepper Bread e le formule di insalata aggiornate. Ogni punto dati è stato verificato rispetto alle guide nutrizionali PDF di Subway e ai dati del sito web.
Il database include non solo calorie ma:
Il motore di calcolo doveva gestire scenari complessi:
function calculateTotalNutrition() { let total = { calories: 0, totalFat: 0, /* ... */ }; const sizeMultiplier = currentSelection.sandwichSize === 'footlong' ? 2 : 1; // Bread calculation (size-dependent) if (currentSelection.bread) { addItemNutrition(total, bread, currentSelection.bread.quantity * sizeMultiplier); } // Proteins, cheeses, vegetables (size-dependent) ['proteins', 'cheeses', 'vegetables'].forEach(category => { // Apply size multiplier }); // Soups, desserts (size-independent) ['soups', 'desserts'].forEach(category => { // No size multiplier }); return { nutrition: total, ingredients }; }
Ho replicato l'esatto formato dell'etichetta nutrizionale FDA, calcolando i valori giornalieri percentuali basati su una dieta da 2.000 calorie (regolabile dall'utente):
const fdaDailyValues = { totalFat: 78, saturatedFat: 20, cholesterol: 300, sodium: 2300, totalCarbs: 275, dietaryFiber: 28, addedSugars: 50, protein: 50, vitaminA: 900, vitaminC: 90, calcium: 1300, iron: 18 };
I calcoli % Daily Value utilizzano questi importi di riferimento ufficiali FDA, garantendo la conformità normativa.
I menu a tendina in stile fisarmonica con contatori in tempo reale hanno risolto il problema della complessità:
Ogni azione dell'utente attiva più aggiornamenti:
La barra di avanzamento utilizza la codifica a colori (verde → giallo → rosso) per indicare visivamente come il pasto si adatta agli obiettivi giornalieri.
Il calcolatore utilizza CSS Grid e Flexbox con breakpoint strategici:
@media (max-width: 768px) { .calculator-container { flex-direction: column; } .item-with-quantity { flex-direction: column; } .goal-setting-content { grid-template-columns: 1fr; } }
Su mobile, gli elementi si impilano verticalmente e l'etichetta nutrizionale rimane leggibile senza scorrimento orizzontale.
La funzione di esportazione genera un rapporto di testo dettagliato che include:
window.subwaySaveNutritionInfo = function() { const summary = ` ============================================================ SUBWAY NUTRITION CALCULATOR - MEAL SUMMARY ============================================================ MEAL DETAILS: ------------- Size: ${sizeText} Total Calories: ${Math.round(nutrition.calories)} Daily Calorie Goal: ${userSettings.dailyCalorieGoal} calories Percentage of Daily Goal: ${Math.round((nutrition.calories / userSettings.dailyCalorieGoal) * 100)}% `; // ... generates downloadable file };
Ogni valore nutrizionale è stato incrociato con:
La struttura JSON modulare consente facili aggiornamenti quando Subway:
Lo strumento include note (**) per elementi con potenziali variazioni regionali, consigliando agli utenti di verificare le informazioni nutrizionali locali quando disponibili.
Costruire il Calcolatore Nutrizionale Subway è stato più di un semplice progetto di codifica—si trattava di creare trasparenza nelle scelte alimentari. Combinando dati nutrizionali ufficiali accurati con un'interfaccia intuitiva, abbiamo dato potere agli utenti di prendere decisioni informate sui loro pasti.
Lo strumento dimostra come le tecnologie web (HTML, CSS, JavaScript) possono creare applicazioni potenti e interattive che colmano il divario tra i dati aziendali e la comprensione dei consumatori. Ogni riga di codice serve all'obiettivo finale: aiutare le persone a capire esattamente cosa stanno mangiando, in modo che possano allineare le loro scelte Subway con i loro obiettivi di salute.
Il calcolatore rimane un progetto vivo, con piani per espandere le sue capacità mantenendo l'impegno fondamentale per l'accuratezza e l'usabilità che lo ha già reso prezioso per migliaia di utenti.
Link al calcolatore: Subway Calorie Calculator: Count the Calories Enjoy the Sub - Subway Calorie Calculator
\ \


