docs: README met features, changelog, deploy-instructies
This commit is contained in:
parent
ebff09e3e1
commit
906822e2c3
1 changed files with 123 additions and 0 deletions
123
README.md
Normal file
123
README.md
Normal file
|
|
@ -0,0 +1,123 @@
|
||||||
|
# 🍞 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
|
||||||
Loading…
Add table
Reference in a new issue