Praćenje hrane i analiza uticaja na zdravlje
Pregled
Pre nekoliko godina, shvatio sam da se nakon jela određene hrane ponekad osećam loše, imam glavobolje ili postajem veoma pospan. Nakon razgovora sa kolegom, savetovao me je da počnem da pratim unos hrane i kako se osećam. Prvih nekoliko nedelja sam to radio u Excel-u, a onda odlučio da iskoristim svoje znanje i napravim nešto zabavno. Ovaj projekat služi da bolje razumem uticaj hrane na moje zdravlje, a takođe i kao igralište za nove tehnologije, procese i arhitekture (npr. prvi put sam probao da kodiram uz pomoć AI-a - Claude Code).
Nadam se da ovaj projekat može pomoći vama kao što je pomogao meni. Radostan sam da primim povratne informacije i ideje.
Možete isprobati ako želite, ali budite svesni da su podaci javno dostupni i nisu pravilno obezbeđeni niti bekapovani.
Arhitektura
Ideja je veoma jednostavna: prikupite podatke putem korisničkog interfejsa, sačuvajte podatke u bazu podataka, obogatite podatke, vizualizujte i izvucite uvide.
(Dobrodošli u data inženjering :)
Komponente
Anketa za prikupljanje hrane
Možete uneti onoliko unosa koliko imate obroka dnevno. Jedina lična informacija koja je potrebna je email, koji možete lažirati ako želite da ostanete anonimni. Obično šaljem novi unos samo sa imenom hrane i slikom, zatim nakon 1-2 sata dodajem samoprocenu uticaja na zdravlje. Dobićete email potvrdu nakon prvog slanja i možete ga kasnije urediti.
Pravila koja pratim
- Zabeležite svu hranu konzumiranu u jednom obroku u jednom redu
- Dodajte samoprocenu 1-2 sata nakon obroka
- Izbegavajte jedenje druge hrane najmanje 3-4 sata nakon obroka
Vizualizaciona kontrolna tabla
Vaš email je heširan i možete pronaći svoj heš sa sledećom naredbom
SELECT left(hex(sha256('123@gmail.com')), 12) as user_hash_id;
Zatim možete pretražiti svog korisnika i kliknuti u tabeli da dođete do svoje lične kontrolne table.
Kontrolna tabla treba malo više pažnje i uskoro će je dobiti.
Status
Ovde ću s vremena na vreme ažurirati status i pravac projekta.
2026-01-05 Aplikacija radi i daje vrednost, ali…
Funkcionalnosti
- novi metod prikupljanja podataka putem Telegram četa/bota
- višestruke integracije AI modela sa slikom u promptu za bolje rezultate predikcije
- poboljšane vizualizacije i dodat prompt koji se može kopirati u ChatGPT za pronalaženje nekih veza
- sve je deployovano na mom malom PC-ju kod kuće sa self-hosted runner-ima (videćemo šta će biti sa njima)
Naučene lekcije
- Usko grlo u razvoju je prikupljanje zahteva i povratnih informacija. Morate pronaći nekoga ko će koristiti aplikaciju i otvoreno diskutovati povratne informacije o vašem radu. Moja devojka je počela da koristi aplikaciju i odmah rekla da Google Forms nije zgodan za prikupljanje unosa (implementirao sam Telegram čet metod) ili je takođe želela da vidi proteine (dodao sam proteine u pregled). Veoma je važno imati nekoga ko će vam dati iskrene povratne informacije.
- Claude Code može da uradi sve sa pretragom weba i kod baze kao što biste vi, ali mnogo efikasnije. Prvi prompt sa listanjem i ukazivanjem na potrebne izmene koda i listanjem svega što mora da se desi je veoma važan
- Veoma brz ciklus razvoja i razvoj funkcionalnosti stvorili su dosta koda koji nije baš dobro povezan i apstrahovan. Počeo sam da mislim da smo uveli apstrakcije i najbolje prakse kodiranja za nas ljude da smanjimo kognitivno opterećenje i omogućimo lake ekstenzije koda. Za AI asistenta ovo nije bitno, on samo prolazi kroz sve.
- Nikad se nisam setio da komitujem i pušujem pojedinačne izmene funkcionalnosti -> znam da će me ovo povrediti jednog dana
- Dodavanje još jednog mehanizma za prikupljanje podataka i novih podataka poput proteina u obroku učinilo me je svesnim da nedostaju strukture podataka i modelovanje za proširivost. AI asistent samo dodaje novu kolonu, deo za migraciju u init izjavi i gotovo je, ali to šteti stabilnosti.
- Dagster komponente su veoma zgodne za korišćenje i razvoj
Sledeći koraci
- pokušati da nekoliko ljudi koristi aplikaciju i prikupiti povratne informacije
- stabilizacija koda
- uvesti ty, refaktorisati kod u manje module
- uvesti baznu sliku za izgradnju slika u CI/CD-u
- poboljšati Dagster-Evidence integraciju i doprineti open source-u
2025-12-24 - Init
Generalno
Opšta ideja je bila da se postavi početni UI za prikupljanje podataka, osnovna Dagster, dbt i MotherDuck integracija (poznajem Dagster i dbt sa posla), i da imam osnovnu kontrolnu tablu sa nekoliko metrika i vizualizacija. Imao sam nekoliko stvari na umu koje sam hteo da naučim sa prvom iteracijom:
- Kako koristiti Google Forms kao UI za prikupljanje podataka (bio sam iznenađen out-of-the-box funkcionalnostima poput čuvanja i uređivanja unosa u Google Sheets-u i slanja email potvrda)
- Probati kodiranje uz pomoć AI-a - Claude Code me je nekoliko puta oduševio
- Deployovati Dagster na self-hosted Kubernetes klaster sa self-hosted runner-om (bilo je teže nego što sam očekivao)
- Povezati i istražiti MotherDuck jer sam hteo da se vratim DuckDB-u
- Naučiti novi alat za vizualizaciju (odlučio sam se za Evidence jer je već imao Dagster integraciju, iako sada mislim da nije dovoljno zreo i treba mu poboljšanje kojem ću pokušati da doprinjem)
Naučene lekcije
- Proces oko izgradnje Docker image-a i deployment-a sa self-hosted GitHub runner-ima na self-hosted Kubernetes klasteru zahteva mnogo znanja koje često uzimamo zdravo za gotovo kada imamo DevOps kolege
- Počinjanje jednostavno sa vidljivom poslovnom vrednošću je važnije od sofisticiranog alata. Na primer, sada koristim Google Forms za prikupljanje podataka umesto da gradim prilagođeni UI u Rust-u (počeo sam i stao najmanje 3 puta)
- Imati funkcionalno end-to-end rešenje prvi put je bilo veoma motivišuće i pomaže da ga dalje proširujem i poboljšavam
- Teško je prikupljati podatke i biti precizan. Šta tačno sadrži obrok? Kako se zaista osećate na skali od 1 do 10?
Sledeći koraci
- Kreirati više kontrolnih tabli i vizualizacija iz postojećih podataka
- Obogatiti prikupljene podatke AI-generisanim sastojcima iz imena hrane i slike
- Pronaći više prijatelja koji su voljni da ovo isprobaju
- Probati SOPS za tajne i FluxCD za Kubernetes deployment
- Pokušati poboljšati Dagster-Evidence komponentnu integraciju
- Napraviti da se osvežavanja automatski pokreću po rasporedu
