Ca dezvoltator pasionat de tehnologia sănătății, am observat o lipsă pe piață. În timp ce Subway oferă informații nutriționale, clienții nu au un instrument interactiv pentru a-și personaliza combinațiile exacte de mese. Am vrut să creez ceva care să ofere oamenilor informații în timp real despre alegerile lor alimentare, până la ultima calorie.
Provocarea era clară: să construiesc un calculator cuprinzător care să poată gestiona imensa variabilitate a meniului Subway—de la alegerea pâinii și selecțiile de proteine până la fiecare legumă și condiment, menținând în același timp acuratețea cu datele nutriționale oficiale.
Am găsit un instrument de la nutritionix care face același lucru, ceea ce este bine, dar am vrut să construiesc ceva care să pară mai prietenos pentru utilizator.
Prima mea sarcină a fost colectarea și structurarea datelor nutriționale. Am petrecut săptămâni colectând diagramele nutriționale oficiale ale Subway, standardizând măsurătorile și creând o bază de date JSON cuprinzătoare.
Structura trebuia să fie atât cuprinzătoare, cât și eficientă:
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 };
\ Fiecare element de meniu conține 19 metrici nutriționale, asigurându-ne că putem afișa o etichetă nutrițională completă în stil FDA, nu doar calorii.
Complexitatea de bază consta în gestionarea stării de selecție a utilizatorului. O comandă Subway nu este o selecție simplă—este o combinație multidimensională:
let currentSelection = { sandwichSize: '6inch', bread: null, proteins: {}, cheeses: {}, vegetables: {}, condiments: {}, // ... with quantities for each };
\ Am implementat un sistem bazat pe cantitate în care utilizatorii puteau adăuga porții multiple de proteine, brânzeturi sau legume. Multiplicatorul "footlong" trebuia să dubleze automat componentele adecvate, păstrând în același timp altele (cum ar fi salatele) neafectate.
Pentru a asigura funcționarea calculatorului pe orice site web fără conflicte CSS, am folosit o abordare limitată:
#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; }
\ Resetarea all: initial și z-index-ul ridicat (99999) au asigurat că calculatorul va fi redat consecvent indiferent de stilizarea site-ului gazdă.
Instrumentul utilizează informațiile nutriționale oficiale Subway 2025, inclusiv adăugiri recente precum Ghost Pepper Bread și formule actualizate pentru salate. Fiecare punct de date a fost verificat în comparație cu ghidurile nutriționale PDF ale Subway și datele de pe site-ul web.
Baza de date include nu doar calorii, ci și:
Motorul de calcul trebuia să gestioneze scenarii complexe:
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 }; }
Am replicat formatul exact al etichetei nutriționale FDA, calculând valorile zilnice procentuale bazate pe o dietă de 2.000 de calorii (ajustabilă de utilizator):
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 };
Calculele % Daily Value folosesc aceste cantități de referință oficiale FDA, asigurând conformitatea cu reglementările.
Dropdown-urile în stil acordeon cu contoare în timp real au rezolvat problema complexității:
Fiecare acțiune a utilizatorului declanșează actualizări multiple:
Bara de progres folosește codificarea culorilor (verde → galben → roșu) pentru a indica vizual cum se încadrează masa în obiectivele zilnice.
Calculatorul folosește CSS Grid și Flexbox cu puncte de întrerupere strategice:
@media (max-width: 768px) { .calculator-container { flex-direction: column; } .item-with-quantity { flex-direction: column; } .goal-setting-content { grid-template-columns: 1fr; } }
Pe mobil, elementele se stivuiesc vertical, iar eticheta nutrițională rămâne lizibilă fără derulare orizontală.
Funcția de export generează un raport text detaliat care 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 };
Fiecare valoare nutrițională a fost verificată încrucișat cu:
Structura modulară JSON permite actualizări ușoare când Subway:
Instrumentul include note (**) pentru articolele cu potențiale variații regionale, sfătuind utilizatorii să verifice informațiile nutriționale locale când sunt disponibile.
Construirea Calculatorului Nutrițional Subway a fost mai mult decât doar un proiect de codare—a fost despre crearea transparenței în alegerile alimentare. Prin combinarea datelor nutriționale oficiale, precise, cu o interfață intuitivă, am împuternicit utilizatorii să ia decizii informate despre mesele lor.
Instrumentul demonstrează cum tehnologiile web (HTML, CSS, JavaScript) pot crea aplicații puternice, interactive care reduc decalajul dintre datele corporative și înțelegerea consumatorilor. Fiecare linie de cod servește scopului final: ajutarea oamenilor să înțeleagă exact ce mănâncă, astfel încât să-și poată alinia alegerile Subway cu obiectivele lor de sănătate.
Calculatorul rămâne un proiect viu, cu planuri de a-și extinde capacitățile, menținând în același timp angajamentul de bază față de acuratețe și utilizabilitate care l-a făcut deja valoros pentru mii de utilizatori.
Link calculator: Subway Calorie Calculator: Count the Calories Enjoy the Sub - Subway Calorie Calculator
\ \


