Informatii generale
- Categorie: Utilitar
- Judetul: Brașov
- Surse: GitHub - Kivy-Infoeducatie/Kivy-Docs
Descriere
Pe măsură ce tehnologia continuă să modeleze modul in care trăim, bucătăria începe să evolueze dintr-un spațiu pur manual într-unul în care asistența inteligentă poate aduce valoare reală. Astfel, prezentăm patru contribuții majore aduse domeniului.
În primul rând, introducem un nou set de date, prelucrat, structurat și filtrat, ce conține peste 500.000 de rețete preluate de pe Food.com și RecipeNLG într-un format standardizat și bogat în informații îmbunătățit cu resurse nutriționale pentru ingrediente din USDA Food Data Central și Open Food Facts .Acestea includ liste de ingrediente bine definite, instrucțiuni pas cu pas, titluri și metadate precum specificul culinar și etichete dietetice. Acest set de date oferă o bază diversă, de înaltă calitate și reproductibilă pentru cercetări viitoare în domeniu.
În al doilea rând, propunem o arhitectură inovatoare, bazată pe autoencodere, care “învață” reprezentări numerice ale rețetelor culinare. Aceste embedding-uri (reprezentări) surprind atât sensul, cât și structura și funcționalitatea rețetelor. Modelul nostru este capabil să reconstruiască rețete complete pornind de la aceste reprezentări compacte, dar bogate în informații. Demonstrăm eficiența lor în mai multe aplicații practice, precum operații vectoriale, clasificarea și gruparea rețetelor și chiar generare de rețete.
În al treilea rând, prezentăm o componentă hardware funcțională a unui asistent inteligent pentru bucătărie, care integrează un proiector și o cameră pentru a transforma orice suprafață plană într-un spațiu de lucru interactiv. Componenta hardware include numeroase unelte folositoare în bucătărie, precum vizualizatoare de rețete, contururi de tăiat, măsurători și altele.
De asemenea, extindem funcționalitatea sistemului printr-o aplicație mobilă complet integrată, care combină monitorizarea nutrițională cu personalizarea rețetelor asistată de inteligență artificială. Aplicația permite utilizatorilor să-și urmărească obiectivele de sănătate, să primească recomandări dinamice de mese adaptate preferințelor dietetice și să interacționeze pe o platformă socială de schimb de rețete. Prin integrarea datelor de sănătate, a personalizării culinare și a funcțiilor comunitare, aplicația mobilă leagă diferitele componente ale proiectului, consolidând scopul Kivy de a oferi un ecosistem complet, adaptiv, pentru gătit inteligent și management nutrițional.
Hardware
Hardware-ul sistemului este compus dintr-un proiector HY320 și o cameră video montate pe un suport fix, adaptabil pentru perete sau dulap de bucătărie. Proiectorul afișează interfața utilizatorului pe suprafețe plane, precum blaturi sau mese, transformându-le efectiv în spații de lucru interactive. Camera captează gesturile utilizatorului, permițând interacțiunea cu proiecția. Procesarea este realizată de un Raspberry Pi 5, ales pentru dimensiunile reduse și consumul scăzut de energie. Acesta se conectează la proiector și cameră prin conexiuni cu fir sau wireless și efectuează toate calculele local (recunoașterea gesturilor, procesarea imaginilor și redarea interfeței), asigurând funcționarea sistemului fără acces la internet. Acest lucru face ca sistemul să fie ideal pentru bucătării, săli de clasă sau alte medii care necesită interacțiune digitală hands-free, produsul având potențialul de a fi dezvoltat în multe alte direcții.
Interacțiunea este activată prin urmărirea mâinilor cu ajutorul MediaPipe, care detectează cu precizie pozițiile și mișcările mâinilor în timp real. Pentru a mapa aceste gesturi pe interfața proiectată, sistemul aplică o transformare de omografie. Aceasta asigură că mișcările utilizatorului corespund exact elementelor afișate, permițând un control intuitiv și aliniat spațial.
Detalii despre matematica din spatele omografiei pot fi găsite în repository-ul de documentație: GitHub - Kivy-Infoeducatie/Kivy-Docs
Componenta software a sistemului este o aplicație web dezvoltată folosind Tauri, React, Tailwind CSS și Vite, concepută pentru a rula local pe Raspberry Pi (Pe viitor vrem să mutăm proiectul în Godot). Aceasta servește drept interfață principală cu utilizatorul, permițând interacțiunea prin gesturi ale mâinii în locul atingerii fizice, oferind o experiență complet hands-free.
Recunoașterea gesturilor este realizată prin MediaPipe, care procesează fluxul video pentru a identifica pozițiile mâinilor. Acest lucru asigură că gesturile se aliniază perfect cu elementele interactive afișate pe suprafața de lucru.
Pentru a sprijini interacțiunea bazată pe gesturi, a fost dezvoltat un set de componente primitive personalizate în React. Aceste componente pot detecta acțiuni precum atingeri, glisări sau menținerea unui deget într-o poziție fixă, formând baza pentru widgeturi interactive mai complexe.
Funcționalitățile de bază ale aplicației includ un timer de bucătărie, un instrument de măsurare, ghiduri interactive pentru tăiere, un AI Hub pentru asistență inteligentă și un vizualizator de rețete adaptat pentru operare hands-free. Împreună, aceste funcții creează un mediu interactiv intuitiv și accesibil, transformând eficient orice suprafață de bucătărie într-o platformă digitală inteligentă.
Aplicația de Mobil
Ecosistemul Kivy vine și cu o aplicație mobilă de nutriție care integrează inteligența artificială pentru a ajuta utilizatorii să adopte un stil de viață mai sănătos. Aplicația combină funcțiile tradiționale de monitorizare nutrițională cu un sistem de recomandare a rețetelor bazat pe AI. Este complet integrată în ecosistemul extins Kivy, care include componente hardware și modele AI.
Aplicația pune accent pe accesibilitate și personalizare, fiind structurată în cinci secțiuni principale:
1. Panou de control personalizabil (Tabul Home)
Interfața principală funcționează ca un panou de control interactiv și modular. Utilizatorii pot adăuga, elimina și rearanja widgeturi de diferite dimensiuni (mic, mediu, mare) pentru a adapta afișajul la obiectivele personale de sănătate. Funcționalitățile cheie includ:
- indicatori vizuali de progres pentru metrici zilnici precum caloriile, pașii și distanța
- o sugestie zilnică de rețetă pentru inspirație culinară
- recomandări personalizate în funcție de preferințele nutriționale
- un asistent nutrițional AI capabil să răspundă la întrebări dietetice și să genereze planuri alimentare
- și o listă de cumpărături ce consolidează ingredientele din rețetele selectate.
2. Rețete și Rețea Socială (Tabul Recipes)
Această secțiune transformă aplicația într-o platformă culinară socială. Utilizatorii pot explora rețete distribuite de comunitate sau preluate din surse externe. Fiecare rețetă este prezentată cu detalii clare și ghidare interactivă pas cu pas. Funcționalități suplimentare includ comentariile și interacțiunea cu rețetele, salvarea celor preferate pentru acces rapid, generarea automată a listelor de cumpărături din ingrediente și crearea de rețete personalizate printr-un editor vizual intuitiv.
3. Monitorizarea Obiectivelor (Tabul Goals)
Dedicată urmării progresului în materie de sănătate, această secțiune suportă sincronizarea automată cu Apple HealthKit, precum și introducerea manuală a datelor. Utilizatorii pot monitoriza aportul caloric zilnic, pașii făcuți, distanța parcursă și tendințele în timp ale indicatorilor fizici. Aplicația calculează, de asemenea, necesarul caloric zilnic personalizat pe baza datelor utilizatorului, cum ar fi vârsta, greutatea, înălțimea și nivelul de activitate.
4. Căutare Avansată (Ecranul Search)
Funcția de căutare permite găsirea rapidă și eficientă a rețetelor din baza de date a aplicației. Utilizatorii pot introduce numele unui preparat sau cuvinte-cheie, filtrând rezultatele în funcție de preferințe alimentare, ingrediente sau popularitate pentru a găsi rapid opțiunile dorite.
5. Personalizare și Setări (Ecranul Setări)
Această secțiune permite utilizatorilor să configureze întreaga experiență a aplicației. Setările includ definirea preferințelor alimentare, a alergiilor și a dietelor urmate; actualizarea datelor personale; gestionarea permisiunilor precum accesul la Apple HealthKit și notificările; și ajustarea elementelor de interfață și funcționalitate pentru a răspunde cât mai bine nevoilor individuale
6. Concluzie
Prin integrarea acestor funcționalități, Kivy oferă o platformă inteligentă, centrată pe utilizator, pentru gestionarea nutriției și explorarea culinară, susținând obiceiuri mai sănătoase prin AI adaptiv și implicare comunitară.
Site
Pentru hostarea documentației, a software-ului hardware-ului într-un mediu web fără necesitatea componentei fizice, a unei pagini de prezentare și multe altele am realizat un site minimalist.
Mai multe detalii precum accesarea și structura site-ului pot fi găsite în repository-ul de documentație: GitHub - Kivy-Infoeducatie/Kivy-Docs
Lucrarea de Cercetare și Reprezentări vectoriale
Cea mai importantă componentă din cadrul proiectului Kivy este lucrarea de cercetare. Aceasta explică modul în care am dezvoltat o arhitectură de rețea neuronală de tip autoencoder (adică o rețea care încearcă să învețe reprezentări numerice ale unor rețete culinare transformându-le în acel vector încercând ulterior să construiască rețeta inițială din acea reprezentare numerică).
În lucrare, am detaliat Problema identificată, scopul, obiectivele, construirea și conținutul unui set de date de 500.000 de rețete culinare, arhitectura rețelei și matematica ce stă la baza acesteia și posibile utilizări în viața reală a arhitecturii.
Research paper-ul poate fi găsit în repository-ul de documentație: GitHub - Kivy-Infoeducatie/Kivy-Docs
Kivy Dev
Pentru a permite accesul oricui la diferitele modele de inteligență artificială și date din cadrul ecosistemului Kivy, permitem dezvoltatorilor să interacționeze cu serviciile noastre prin intermediul unui API numit Kivy Dev, plătit, ce funcționează pe bază de tokene.
Mai multe detalii pot fi găsite în repository-ul de documentație GitHub - Kivy-Infoeducatie/Kivy-Docs
Plan de Business
Planul de business poate fi găsit în repository-ul de documentație: GitHub - Kivy-Infoeducatie/Kivy-Docs
Documentul detaliază analiza pieței, structura produsului (hardware și software), modelul de afacere, sursele de finanțare, strategia de extindere, politica de prețuri, distribuție și promovare, precum și parametrii economici și analiza SWOT.
Planificare, Organizare și Implementare
1. Stabilitatea Aplicației
Toate cele trei componente software, aplicația iOS, site-ul web realizat în Next.js și aplicația desktop construită cu Tauri, au fost dezvoltate cu accent pe optimizare. Aplicația iOS folosește lazy loading și caching local pentru a reduce utilizarea rețelei și a procesorului, iar aplicația web este server-side rendered cu Next.js pentru a scădea sarcina pe dispozitivul utilizatorului. Versiunea Tauri profită de avantajul consumului redus de resurse, oferind o alternativă eficientă energetic și rapidă în comparație cu soluțiile Electron, ocupând semnificativ mai puțină memorie RAM și procesor.
Proiectul a fost testat riguros pentru a preveni scurgerile de memorie, atât prin auditul codului, cât și prin monitorizarea comportamentului aplicației în timpul utilizării prelungite. Aplicația iOS este extrem de eficientă datorită integrării strânse a SwiftUI cu ecosistemul Apple, ceea ce permite un consum redus de resurse, o performanță optimizată nativ și o compatibilitate perfectă cu funcționalitățile sistemului, precum animații fluide, acces la componente hardware și suport complet pentru accesibilitate. Site-ul web este construit cu practici moderne React și Next.js, care evită retenția de obiecte inutile. Aplicația Tauri, folosind Rust la nivelul nucleului, beneficiază de gestionarea strictă a memoriei, ceea ce reduce semnificativ riscul unor astfel de probleme.
În timpul testării pe diverse platforme, aplicația nu a cauzat încetiniri semnificative sau supraîncărcarea sistemului. Interfețele sunt reactive, încărcarea resurselor este făcută asincron și doar la nevoie, iar procesele de fundal sunt limitate pentru a nu consuma excesiv CPU sau baterie. Pe mobil, aplicația iOS se integrează armonios cu politicile de economisire a bateriei ale sistemului. Pe desktop, aplicația Tauri pornește rapid și are un impact minim asupra performanței generale, datorită binarelor compacte și utilizării eficiente a resurselor native.
2. Securitatea Aplicației
Aplicația a fost dezvoltată cu un accent puternic pe securitate, acoperind toate cele trei componente principale. Aplicația iOS, realizată în SwiftUI, este strict integrată cu ecosistemul Apple, beneficiind automat de nivelurile avansate de securitate oferite de platformă, precum izolarea aplicației în sandbox, autentificarea biometrică și Keychain pentru stocarea sigură a datelor sensibile. Comunicarea cu backendul este realizată exclusiv prin conexiuni HTTPS criptate, iar API-ul este protejat prin mecanisme de autentificare robuste (token JWT și rate limiting). Backendul este găzduit pe un server securizat, cu acces restricționat și monitorizat constant. Baza de date urmează standardele moderne de securitate. Parolele utilizatorilor sunt criptate cu algoritmul bcrypt, folosind 10 runde de salting, ceea ce le face practic imposibil de spart prin metode brute-force. În plus, au fost implementate măsuri de protecție împotriva atacurilor frecvente, precum SQL injection, XSS și CSRF, asigurând astfel confidențialitatea, integritatea și disponibilitatea datelor utilizatorilor. Toate erorile și excepțiile au atât pe frontend, cât și pe backend, mesaje și răspunsuri corespunzătoare conform fiecărei erori după standardele actuale.
3. Testare
Pentru a asigura stabilitatea și calitatea aplicației, am aplicat o abordare completă de testare, acoperind atât testarea funcțională, cât și cea non-funcțională. La nivel de backend (NestJS), am implementat testare end-to-end (e2e) pentru a verifica automat fluxurile critice și integritatea comunicației între componente. În paralel, toate funcționalitățile majore au fost verificate și manual pe fiecare platformă (iOS, web, desktop și backend cu Postman) pentru a detecta eventuale erori în comportamentul real al aplicației.
Testarea non-funcțională a inclus evaluarea performanței și scalabilității într-un mediu izolat, unde s-au simulat condiții reale de utilizare intensă și defecțiuni ale serviciilor critice (căderi de rețea, lipsa conexiunii la baza de date etc.). Am testat și portabilitatea aplicației pe diferite platforme și configurații hardware, asigurându-ne că aplicația funcționează fluent indiferent de mediu.
Procesul de testare este în mare parte automatizat, prin scripturi de test, ceea ce ne permite să validăm rapid stabilitatea aplicației la fiecare modificare adusă codului. Pentru gestionarea eficientă a sarcinilor și urmărirea bug-urilor, am folosit Jira, unde fiecare problemă identificată a fost documentată și tratată corespunzător. Astfel, întregul proces de dezvoltare a fost organizat, repetabil și orientat spre calitate.
4. Maturitatea Aplicației
Aplicația se află într-un stadiu avansat de maturitate, fiind deja aliniată cu nevoile publicului țintă și disponibilă pentru utilizare reală. Versiunea este testată de utilizatori în TestFlight, iar varianta web este online și complet funcțională. Backendul este hostat și operațional, gestionând cu succes traficul și datele utilizatorilor. Singura componentă aflată încă în stadiu de prototip este sistemul hardware interactiv, care urmează să fie rafinat înainte de lansarea comercială.
5. UI și UX
Interfața aplicației a fost concepută cu accent pe simplitate, claritate și accesibilitate, oferind o experiență plăcută și intuitivă pentru utilizatorii din publicul țintă. Designul modular permite personalizarea ușoară a dashboard-ului, iar navigarea este fluidă, cu elemente vizuale coerente și ușor de înțeles. UX-ul este optimizat pentru utilizare frecventă, reducând numărul de pași necesari pentru acțiuni comune și integrând feedback vizual clar, ceea ce crește satisfacția și eficiența în utilizare.
Mai multe detalii despre UI / UX, precum și un link Figma cu designul pentru site, aplicația de mobil, embedded software și branding pot fi găsite în repository-ul de documentație: GitHub - Kivy-Infoeducatie/Kivy-Docs
6. Versionare
Pentru versionare, am utilizat Git și platforma GitHub.
7. Membrii Echipei, Munca în Echipă și Roluri
Echipa Kivy este formată din:
- Cazacu Christian-Matei (Web Developer, Backend Developer, Hardware Engineer, AI și Data Scientist).
- Simedrea Alexandru (Web Developer, Mobile Developer, UI / UX Desinger și Tester)
Pe parcursul dezvoltării aplicației, am utilizat Jira ca principal instrument de project management, valorificând toate funcționalitățile esențiale ale platformei. Am organizat task-urile în sprinturi clare, am folosit backlog-ul pentru prioritizarea cerințelor, iar prin sistemul de „issues” am monitorizat eficient bug-urile, cerințele noi și progresul fiecărei componente.
Final
Toate cele menționate sunt prezentate în detaliu în cadrul documentației proiectului. Puteți afla mai multe detalii despre aceasta în repository-ul de documentație: GitHub - Kivy-Infoeducatie/Kivy-Docs
Tehnologii
Aplicație iOS
- Swift - Limbajul folosit pentru dezvoltare
- SwiftUI - Framework-ul pentru UI
- SwiftData - Stocarea persistentă a datelor într-o bază de date SQLite
- Alamofire - Biblioteca pentru network requests
- HealthKit - Sistemul oferit de Apple pentru preluarea datelor legate de activitatea utilizatorilor
Swift și SwiftUI au fost alese pentru integrarea nativă cu ecosistemul Apple și pentru ușurința în dezvoltarea rapidă a interfețelor moderne. SwiftData oferă persistență eficientă în SQLite, iar HealthKit este indispensabil pentru accesarea datelor de sănătate ale utilizatorului.
Site Web
- NextJS - Framework web development
- Tailwind CSS - Stilizarea aplicației
- Nextra - Framework pentru generarea documentație
- Lingui - Pentru internaționalizare
- Prettier - Pentru formatarea codului
- Lucide React - Pentru iconițe
- React Query - Pentru state management și API cache
- Katex - Pentru reprezentarea formulelor în documentație
- Zod - Pentru validare de date
- React Hook Form - Pentru formulare
Next.js a fost ales pentru performanțele ridicate și suportul pentru server-side rendering. Tailwind CSS oferă o stilizare rapidă și scalabilă, iar Nextra este ideal pentru generarea unei documentații clare.
Embedded Software
- Tauri - Framework pentru rularea aplicaților
- NextJS - Framework web development
- Tailwind CSS - Stilizarea aplicației
- Nextra - Framework pentru generarea documentație
- Lingui - Pentru internaționalizare
- Prettier - Pentru formatarea codului
- Zod - Pentru validare de date
- React Hook Form - Pentru formulare
- React Query - Pentru state management și API cache
- Lucide React - Pentru iconițe
Tauri a fost selectat pentru consumul redus de resurse și integrarea eficientă cu aplicațiile web. S-a menținut arhitectura web (Next.js, Tailwind CSS etc.) pentru consistență între platforme.
Backend
- NestJS - Framework principal
- Passport - Pentru autentificare
- DrizzleORM - Librărie pentru interacționarea cu baza de date
- PostgreSQL - Baza de date utilizată
- Class Transformer + Class Validator - Validare de date
- Redis + BullMQ - Pentru notificări
- JWT - Tehnologie pentru tokenele de autentificare folosite
NestJS a fost ales pentru structura sa modulară și scalabilă. DrizzleORM oferă o interfață de tip typesafe cu baza de date PostgreSQL. Redis și BullMQ gestionează eficient sarcinile asincrone, iar Passport și JWT asigură un sistem de autentificare modern și sigur.
AI și Research
- Pytorch - Framework pentru dezvoltarea rețelelor neuronale
- Numpy - Librărie de lucru cu tensori specializată pe AI
- Pandas - Lucru cu seturi de date
- Scikit-Learn - Prelucrare de date și alte taskuri minore
- LaTeX - Scrierea lucrării de cercetare
PyTorch este ideal pentru dezvoltarea modelelor de inteligență artificială datorită flexibilității sale. Numpy și Pandas sunt standarde în prelucrarea de date, iar Scikit-Learn completează pipeline-ul cu funcționalități clasice de machine learning.
Organizare și Testare
- GitHub + Git - Versionare
- Jira + Confluence - Project Management
- Teste E2E - Testarea aplicației
Git și GitHub sunt standarde în versionarea colaborativă a codului. Jira și Confluence ajută la planificarea și documentarea eficientă a proiectului. Testele E2E asigură stabilitatea și funcționalitatea completă a aplicației în condiții reale de utilizare.
Cerinte sistem
Pentru a rula aplicația mobilă, este necesar un dispozitiv compatibil (iPhone, iPad, Apple Vision Pro, Mac) cu cel puțin iOS 18.0, iPadOS 18.0, visionOS 2.0 sau macOS 15.0 instalat. Aplicația necesită conexiune la internet pentru funcționalitățile online și cel puțin 100 MB spațiu liber pe dispozitiv. De asemenea, este necesară acordarea permisiunilor, precum accesul la cameră și date despre sănătate.
Site-ul web necesită resurse minime, fiind optimizat pentru a funcționa fluent pe orice dispozitiv modern. Utilizarea procesorului (CPU) este minimă, întrucât majoritatea operațiunilor sunt statice și se bazează pe afișarea conținutului HTML, CSS și JavaScript. De asemenea, consumul de memorie (RAM) este scăzut, în general sub 150 MB în majoritatea browserelor moderne, fără a afecta performanța generală a sistemului, chiar și pe dispozitive mai vechi sau cu resurse limitate.
Pentru utilizarea software-ului componentei hardware într-o interfață web / ca desktop se recomandă un procesor modern (minim quad-core), 4 GB RAM sau mai mult și un browser actualizat (Chrome, Edge sau Firefox cu suport pentru WebAssembly și WebGL). Deoarece procesarea video se face local, este preferabil ca dispozitivul să dispună de un GPU integrat sau dedicat, pentru o experiență fluentă. De asemenea, aplicația necesită acces la o cameră web și o conexiune stabilă la internet pentru comunicarea cu API-urile.
Realizatori
Christian-Matei Cazacu
- Scoala: Colegiul Național de Informatică “Gr. Moisil” Brașov
- Clasa: 11
- Judet: Brașov
- Oras: Brașov
Alexandru Simedrea
- Scoala: Colegiul Național de Informatică “Grigore Moisil” Brașov
- Clasa: 11
- Judet: Brașov
- Oras: Brașov