Como desenvolvedor apaixonado por tecnologia de saúde, notei uma lacuna no mercado. Embora o Subway ofereça informações nutricionais, os clientes não têm uma ferramenta interativa para personalizar suas combinações exatas de refeições. Eu queria criar algo que desse às pessoas insights em tempo real sobre suas escolhas de refeições, até a última caloria.
O desafio era claro: construir uma calculadora abrangente que pudesse lidar com a imensa variabilidade do menu do Subway—desde escolhas de pão e seleções de proteínas até cada vegetal e condimento, tudo isso mantendo a precisão com dados nutricionais oficiais.
Encontrei uma ferramenta da nutritionix que faz a mesma coisa, o que é bom, mas eu queria construir algo que parecesse mais amigável ao usuário.
Minha primeira tarefa foi reunir e estruturar os dados nutricionais. Passei semanas coletando tabelas nutricionais oficiais do Subway, padronizando medidas e criando um banco de dados JSON abrangente.
A estrutura precisava ser abrangente e eficiente:
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 };
\ Cada item do menu contém 19 métricas nutricionais, garantindo que possamos exibir um rótulo nutricional completo no estilo FDA, não apenas calorias.
A complexidade central estava na gestão do estado de seleção do usuário. Um pedido do Subway não é uma seleção simples—é uma combinação multidimensional:
let currentSelection = { sandwichSize: '6inch', bread: null, proteins: {}, cheeses: {}, vegetables: {}, condiments: {}, // ... with quantities for each };
\ Implementei um sistema baseado em quantidade onde os usuários podiam adicionar múltiplas porções de proteínas, queijos ou vegetais. O multiplicador "footlong" tinha que dobrar automaticamente os componentes apropriados enquanto mantinha outros (como saladas) inalterados.
Para garantir que a calculadora funcionasse em qualquer site sem conflitos de CSS, usei uma abordagem com escopo:
#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; }
\ O reset all: initial e o z-index alto (99999) garantiram que a calculadora seria renderizada consistentemente, independentemente do estilo do site hospedeiro.
A ferramenta usa informações nutricionais oficiais do Subway de 2025, incluindo adições recentes como o Pão Ghost Pepper e fórmulas de salada atualizadas. Cada ponto de dados foi verificado com os guias nutricionais em PDF do Subway e dados do site.
O banco de dados inclui não apenas calorias, mas:
O motor de cálculo tinha que lidar com cenários complexos:
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 }; }
Repliquei o formato exato do rótulo nutricional da FDA, calculando os Valores Diários percentuais com base em uma dieta de 2.000 calorias (ajustável pelo usuário):
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 };
Os cálculos de % Valor Diário usam essas quantidades de referência oficiais da FDA, garantindo conformidade regulatória.
Os menus suspensos estilo acordeão com contadores em tempo real resolveram o problema de complexidade:
Cada ação do usuário aciona múltiplas atualizações:
A barra de progresso usa codificação de cores (verde → amarelo → vermelho) para indicar visualmente como a refeição se encaixa nas metas diárias.
A calculadora usa CSS Grid e Flexbox com pontos de quebra estratégicos:
@media (max-width: 768px) { .calculator-container { flex-direction: column; } .item-with-quantity { flex-direction: column; } .goal-setting-content { grid-template-columns: 1fr; } }
No celular, os itens empilham verticalmente, e o rótulo nutricional permanece legível sem rolagem horizontal.
O recurso de exportação gera um relatório de texto detalhado incluindo:
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 };
Cada valor nutricional foi referenciado com:
A estrutura JSON modular permite atualizações fáceis quando o Subway:
A ferramenta inclui notas (**) para itens com potenciais variações regionais, aconselhando os usuários a verificar informações nutricionais locais quando disponíveis.
Construir a Calculadora Nutricional do Subway foi mais do que apenas um projeto de codificação—foi sobre criar transparência nas escolhas alimentares. Ao combinar dados nutricionais oficiais precisos com uma interface intuitiva, capacitamos os usuários a tomar decisões informadas sobre suas refeições.
A ferramenta demonstra como tecnologias web (HTML, CSS, JavaScript) podem criar aplicações poderosas e interativas que preenchem a lacuna entre dados corporativos e compreensão do consumidor. Cada linha de código serve ao objetivo final: ajudar as pessoas a entender exatamente o que estão comendo, para que possam alinhar suas escolhas do Subway com seus objetivos de saúde.
A calculadora continua sendo um projeto vivo, com planos para expandir suas capacidades enquanto mantém o compromisso central com a precisão e usabilidade que já a tornou valiosa para milhares de usuários.
Link da calculadora: Subway Calorie Calculator: Count the Calories Enjoy the Sub - Subway Calorie Calculator
\ \


Enquanto a temporada de festas se aproxima, uma nova pesquisa da Universidade Atlântica da Flórida traz um alerta importante sobre os riscos do consumo de
