# 🍞 Karby β€” Koolhydratenteller Een Nederlandse **Progressive Web App** om snel en eenvoudig koolhydraten te tellen per eetmoment. > Gemaakt voor **Chavalie**, die haar koolhydraatinname wil bijhouden. > Gebaseerd op de officiΓ«le **NEVO-dataset** van het RIVM met 2.328 voedingsmiddelen. --- ## ✨ Features ### πŸ” Zoeken & Vinden - **2.328 NEVO-voedingsmiddelen** met koolhydraten per 100g - **Infinite scroll** β€” soepel door duizenden resultaten bladeren - **Fuzzy search** β€” vindt ook meervoud/enkelvoud varianten - **Categorie-filter** (🍞 brood, πŸ₯› zuivel, πŸ₯© vlees, 🍎 fruit, etc.) - **Voedingscentrum-link** per product β€” direct doorklikken naar voedingsinfo ### πŸ“… Dagboek - **6 eetmomenten**: Ontbijt, Lunch, Avondeten, Tussendoor 1/2/3 - **Datumnavigatie** β€” terug- en vooruitbladeren door dagen - **Koolhydraten-totaal** per eetmoment met visuele voortgangsbalk - **LED-kleuren**: groen βœ… / oranje ⚠️ / rood 🚫 (aanpasbare daglimiet) - **Glucose-metingen** inline per eetmoment β€” nuchter + 2u na maaltijd - **Infinite scroll** β€” soepel door duizenden resultaten bladeren ### πŸ§‘β€πŸ³ Maaltijden - **Maaltijden opslaan** β€” combineer 2+ ingrediΓ«nten tot herbruikbare maaltijd - **Slimme naamsuggestie** op basis van gekozen ingrediΓ«nten - **Checkbox-selectie** β€” kies welke items je wilt opslaan - **Geneste weergave** in dagboek β€” maaltijden uitklappen voor detail - **Eenmalig/permanent aanpassen** β€” wijzig porties zonder recept te veranderen - **Bulk-delete** via checkboxes met bevestigingsdialoog ### βš–οΈ Porties - **IntuΓ―tieve portiekeuze**: 1 snee 🍞, 1 glas πŸ₯›, 100g, 50g - **Portie-steppers** (+/βˆ’) voor snelle aanpassing - **Directe koolhydraten-berekening** β€” zie meteen hoeveel kh je toevoegt ### 🎨 UX - **Amber/goud Vorteq-thema** β€” warm en toegankelijk - **Animaties**: fade/slide op modals, tabs, toasts, meal-groups - **Haptic feedback** bij knoppen en checkboxes - **Bottom sheets** met swipe-down sluiten - **Toast-meldingen** op exacte klik-positie - **Dark mode via systeemvoorkeur** (geen handmatige toggle) ### πŸ“± PWA - **Installeerbaar** op iOS en Android (Add to Home Screen) - **Offline-ready** via Service Worker - **Sticky header + zoekbalk** β€” blijft in beeld bij scrollen - **Touch-optimized** β€” minimale knoppen 44Γ—44px, geen hover-afhankelijkheid --- ## πŸ§ͺ Tests **39 Playwright e2e-tests** β€” 38 passing, 1 legitiem skipped: ```bash npm install npx playwright install chromium npx playwright test ``` Tests dekken: zoeken, dagboek CRUD, maaltijden opslaan/bewerken, portie-aanpassing, bulk-delete, glucose-metingen, en UX-flow. --- ## πŸ—οΈ Tech Stack | Laag | Technologie | |---|---| | Frontend | Vanilla HTML/CSS/JS β€” single `index.html` (SPA) | | Styling | CSS Custom Properties, Flexbox, geen framework | | Iconen | Font Awesome 6.5 (gratis set) | | Data | NEVO-2023 via RIVM, verwerkt tot JSON | | Tests | Playwright (Chromium, headless) | | Deploy | Docker + Nginx op homelab NAS | | CI/CD | Git push β†’ handmatige `scp` + `docker cp` | --- ## πŸš€ Deploy ```bash # Build & run locally cd docker docker compose up -d # Deploy naar homelab scp index.html core@homelab:/opt/stacks/eetdagboek/ ssh core@homelab "docker cp /opt/stacks/eetdagboek/index.html eetdagboek:/usr/share/nginx/html/" ``` Live op: **[eetdagboek.vantwout.dev](https://eetdagboek.vantwout.dev)** --- ## πŸ“„ Licentie MIT β€” wordt binnenkort geopensourcet. --- ## πŸ“ Changelog ### v1.0.0 β€” 25 juli 2026 **Eerste productie-release πŸŽ‰** - πŸ” Zoekfunctie met 2.328 NEVO-voedingsmiddelen + infinite scroll + fuzzy search - πŸ“… Dagboek met 6 eetmomenten, datumnavigatie, koolhydraten-teller - 🩸 Glucose-metingen per eetmoment (nuchter + postprandiaal) - πŸ§‘β€πŸ³ Maaltijden opslaan, herbruiken, aanpassen β€” nested in dagboek - βš–οΈ Portie-steppers met intuΓ―tieve maten (snee, glas, 100g, 50g) - πŸ—‘οΈ Bulk-delete met checkbox-selectie + confirmatiedialoog - πŸ“Š Dagelijkse koolhydratenlimiet met progressbar (groen/oranje/rood) - πŸ”— Voedingscentrum-links per product - 🎨 Amber/goud thema, animaties, haptic feedback, touch-optimized - πŸ“± PWA β€” installeerbaar, offline-ready - πŸ§ͺ 39 Playwright e2e-tests (38 passing) - 🐳 Dockerized deployment op homelab NAS