Scaffold the full NUTRÏQ app structure — Vite config, Tailwind, index.html, main.jsx, App.jsx, all routes, components, hooks, and lib modules per CLAUDE.md spec
Scaffold the NUTRÏQ application based on the architecture defined in CLAUDE.md.
config — Build toolingvite.config.js — React plugin, dev server port 3001tailwind.config.js — custom colors from CLAUDE.md token system, fonts (Playfair Display, Plus Jakarta Sans)postcss.config.js — Tailwind + Autoprefixerindex.html — entry point with Google Fonts links for Playfair Display + Plus Jakarta Sanssrc/index.css — CSS custom properties for ALL color tokens from CLAUDE.md, Tailwind directives, base styles (charcoal bg, cream text)routes — Page componentssrc/pages/LocatingPage.jsx — RadarPing animation, geolocation pending statesrc/pages/HomePage.jsx — restaurant list, FilterPills, stats bar, WordReveal herosrc/pages/MenuPage.jsx — lazy-loaded AI menu for selected restaurant, CategoryTabs, MenuItemCards, SelectionBarsrc/pages/AnalysisPage.jsx — AI nutrition coaching panel, selected meal summarycomponents — UI components (use animations.jsx exports)RestaurantCard.jsx — uses Pressable + restaurantCardVariants, shows cuisine emoji, distance badge (orange), ratingMenuItemCard.jsx — uses menuItemVariants, MacroPill row, AnimatedScoreRing, selectableScoreRing.jsx — wrapper around AnimatedScoreRingMacroPill.jsx — cal/protein/carbs/fat badge with color codingFilterPills.jsx — High Protein | Low Calorie | Low Carb | Balanced, uses filterPillVariants, data-filter attributesCategoryTabs.jsx — horizontal scroll tab bar, data-cat attributesSelectionBar.jsx — uses SelectionBarMotion, sticky meal tray summary with analyze CTAAIAnalysisPanel.jsx — Claude response renderer with markdown supportSkeletonLoader.jsx — uses SkeletonCard for loading statesLocationPin.jsx — uses RadarPinghooks — Custom React hooksuseLocation.js — navigator.geolocation + Overpass API fetch via lib/overpass.jsuseMenu.js — AI menu generation via lib/claude.js, loading/error statesuseAnalysis.js — meal analysis via lib/claude.js, loading/error statesuseFilters.js — filter state (highProtein, lowCalorie, lowCarb, balanced) + item matching logiclib — Utility modulesoverpass.js — Overpass API queries for nearby restaurants + haversine distance calcclaude.js — Claude API calls (generateMenu, analyzeMeal) using claude-sonnet-4-20250514health.js — healthScore() algorithm + nutrition helperscuisine.js — emoji/label mapping for OSM cuisine tagsapp — App shellsrc/main.jsx — React root with BrowserRoutersrc/App.jsx — route definitions with AnimatePresence + PageTransition wrapperanimations.jsx — NEVER CSS transitionsdata-testid and data-filter / data-cat attributes for Puppeteer QA