Als Entwickler mit einer Leidenschaft für Gesundheitstechnologie bemerkte ich eine Marktlücke. Während Subway Nährwertinformationen anbietet, fehlt den Kunden ein interaktives Tool, um ihre genauen Mahlzeitenkombinationen anzupassen. Ich wollte etwas schaffen, das den Menschen Echtzeit-Einblicke in ihre Mahlzeitenauswahl gibt, bis hin zur letzten Kalorie.
Die Herausforderung war klar: einen umfassenden Rechner zu entwickeln, der die immense Variabilität des Subway-Menüs bewältigen kann – von der Brotauswahl und Proteinauswahl bis hin zu jedem Gemüse und jeder Beilage, während gleichzeitig die Genauigkeit mit offiziellen Nährwertdaten gewährleistet wird.
Ich fand ein Tool von Nutritionix, das dasselbe tut, was gut ist, aber ich wollte etwas bauen, das sich benutzerfreundlicher anfühlt.
Meine erste Aufgabe war das Sammeln und Strukturieren der Nährwertdaten. Ich verbrachte Wochen damit, Subways offizielle Nährwerttabellen zu sammeln, Messungen zu standardisieren und eine umfassende JSON-Datenbank zu erstellen.
Die Struktur musste sowohl umfassend als auch effizient sein:
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 };
\ Jeder Menüpunkt enthält 19 Nährwertmetriken, um sicherzustellen, dass wir ein vollständiges Nährwertetikett im FDA-Stil anzeigen können, nicht nur Kalorien.
Die Kernkomplexität lag in der Verwaltung des Auswahlzustands des Benutzers. Eine Subway-Bestellung ist keine einfache Auswahl – es ist eine mehrdimensionale Kombination:
let currentSelection = { sandwichSize: '6inch', bread: null, proteins: {}, cheeses: {}, vegetables: {}, condiments: {}, // ... with quantities for each };
\ Ich implementierte ein mengenbasiertes System, bei dem Benutzer mehrere Portionen Proteine, Käse oder Gemüse hinzufügen konnten. Der "Footlong"-Multiplikator musste automatisch entsprechende Komponenten verdoppeln, während andere (wie Salate) unverändert blieben.
Um sicherzustellen, dass der Rechner auf jeder Website ohne CSS-Konflikte funktioniert, verwendete ich einen isolierten Ansatz:
#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; }
\ Das all: initial Reset und der hohe z-index (99999) stellten sicher, dass der Rechner unabhängig vom Styling der Host-Site konsistent gerendert wird.
Das Tool verwendet Subways offizielle Nährwertinformationen von 2025, einschließlich neuerer Ergänzungen wie dem Ghost Pepper Bread und aktualisierten Salatformeln. Jeder Datenpunkt wurde mit Subways PDF-Nährwertführern und Website-Daten überprüft.
Die Datenbank enthält nicht nur Kalorien, sondern auch:
Die Berechnungs-Engine musste komplexe Szenarien bewältigen:
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 }; }
Ich habe das exakte FDA-Nährwertetikett-Format repliziert und den prozentualen Tageswert auf Basis einer 2.000-Kalorien-Diät berechnet (vom Benutzer anpassbar):
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 };
Die % Daily Value Berechnungen verwenden diese offiziellen FDA-Referenzmengen und gewährleisten so die Einhaltung der Vorschriften.
Die Akkordeon-Dropdown-Menüs mit Echtzeit-Zählern lösten das Komplexitätsproblem:
Jede Benutzeraktion löst mehrere Aktualisierungen aus:
Der Fortschrittsbalken verwendet Farbcodierung (grün → gelb → rot), um visuell anzuzeigen, wie die Mahlzeit zu den täglichen Zielen passt.
Der Rechner verwendet CSS Grid und Flexbox mit strategischen Breakpoints:
@media (max-width: 768px) { .calculator-container { flex-direction: column; } .item-with-quantity { flex-direction: column; } .goal-setting-content { grid-template-columns: 1fr; } }
Auf Mobilgeräten werden Elemente vertikal gestapelt, und das Nährwertetikett bleibt ohne horizontales Scrollen lesbar.
Die Exportfunktion generiert einen detaillierten Textbericht, der Folgendes enthält:
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 };
Jeder Nährwert wurde mit folgenden Quellen abgeglichen:
Die modulare JSON-Struktur ermöglicht einfache Aktualisierungen, wenn Subway:
Das Tool enthält Hinweise (**) für Artikel mit potenziellen regionalen Variationen und rät Benutzern, lokale Nährwertinformationen zu überprüfen, wenn verfügbar.
Die Entwicklung des Subway Nutrition Calculator war mehr als nur ein Coding-Projekt – es ging darum, Transparenz bei der Lebensmittelauswahl zu schaffen. Durch die Kombination von genauen, offiziellen Nährwertdaten mit einer intuitiven Benutzeroberfläche haben wir Benutzer befähigt, fundierte Entscheidungen über ihre Mahlzeiten zu treffen.
Das Tool zeigt, wie Webtechnologien (HTML, CSS, JavaScript) leistungsstarke, interaktive Anwendungen erstellen können, die die Lücke zwischen Unternehmensdaten und Verbraucherverständnis schließen. Jede Codezeile dient dem ultimativen Ziel: Menschen zu helfen, genau zu verstehen, was sie essen, damit sie ihre Subway-Auswahl an ihre Gesundheitsziele anpassen können.
Der Rechner bleibt ein lebendiges Projekt mit Plänen zur Erweiterung seiner Fähigkeiten, während gleichzeitig das Kernengagement für Genauigkeit und Benutzerfreundlichkeit beibehalten wird, das ihn bereits für Tausende von Benutzern wertvoll gemacht hat.
Rechner-Link: Subway Calorie Calculator: Count the Calories Enjoy the Sub - Subway Calorie Calculator
\ \


