Android-sovellus

Kauppalista & Muistiinpanot

Offline-first arjen hallinta, jossa pilvi ja tekoäly ovat vapaaehtoisia

Julkaistu Google Playssa

Kauppalista & Muistiinpanot pitää ostoslistat, muistiinpanot, reseptit, tehtävät ja syntymäpäivät yhdessä paikassa – ilman tiliä ja ilman verkkoyhteyttä. Kirjautuminen tarvitaan vain jaettuihin listoihin, ja tekoälytoiminnot ovat erillinen, valinnainen kerros paikallisen ytimen päällä.

Tuote

Useimmat listasovellukset vaativat tilin ennen kuin niillä voi tehdä mitään. Tämä sovellus kääntää asetelman: kaikki arjen perustoiminnot ovat käytettävissä heti asennuksen jälkeen, ja verkkoa tarvitaan vasta silloin, kun käyttäjä itse haluaa jakaa listan tai pyytää tekoälyltä apua.

Kenelle

Arjen suunnitteluun: ostokset, muistiinpanot, reseptit, tehtävät ja muistettavat päivät. Myös niille, jotka eivät halua luoda tiliä pelkkää kauppalistaa varten.

Mitä se ratkaisee

Tiedot pysyvät laitteella eivätkä katoa verkkokatkoon. Samalla käytettävissä ovat myös ne toiminnot, joita paikallinen sovellus ei yksin pysty tarjoamaan: reaaliaikainen jakaminen ja tekoälyn tuottamat ehdotukset.

Miten sitä käytetään

Listat, muistiinpanot ja reseptit toimivat suoraan. Jaetun listan luominen pyytää Google-kirjautumisen, ja tekoälytoiminnot käynnistyvät vain käyttäjän pyynnöstä.

Keskeiset ominaisuudet

Listat ja tehtävät

  • Ostoslistat, suosikit ja tehtävälistat
  • Vedä ja pudota -järjestäminen sekä pikavalinnat
  • Sanelu inline-puheentunnistuksella lisäyksen yhteydessä

Muistiinpanot ja reseptit

  • Muistiinpanot ja kansiorakenne
  • Reseptit ja viikkoruokalistat samassa näkymässä
  • Tekoälyn tuottamat reseptit voi tallentaa muistiinpanoihin

Muistettavat päivät

  • Syntymäpäivät ja paikalliset muistutukset
  • Tehtävien määräajat
  • Toimii ilman verkkoyhteyttä

Terveysmerkinnät

  • Verenpaine, paino, pituus ja pulssi
  • Omat mukautetut merkinnät
  • Biometrinen lukitus arkaluontoisille osioille

Varmuuskopiot

  • Käyttäjän hallitsema vienti ja tuonti yhtenä tiedostona
  • Varmuuskopion skeemaversio 5
  • Palautus laitteen vaihtuessa

Monikielisyys

  • Käyttöliittymä 14 kielellä
  • Suomi, englanti, saksa, espanja, ranska, italia, japani
  • Ruotsi, norja, tanska, unkari, viro, ukraina, kiina

Valinnaiset pilvi- ja tekoälyominaisuudet

Nämä kerrokset on eristetty paikallisesta ytimestä. Ne eivät ole käytössä ennen kuin käyttäjä ottaa ne käyttöön, eivätkä ne siirrä paikallisia listoja, muistiinpanoja tai terveysmerkintöjä pilveen.

Tekoälyn ateriaehdotukset

Yksittäinen ateriaehdotus tai usean päivän ruokalista. Ehdotuksen ainekset voi lisätä suoraan kauppalistalle, ja valmiin reseptin voi tallentaa muistiinpanoihin.

Ainesten skannaus

Kuvasta tunnistetut ainekset muodostavat pohjan reseptiehdotuksille. Käyttäjä vahvistaa tunnistetut ainekset ennen kuin niistä pyydetään reseptiä.

Jaetut listat reaaliajassa

Erillinen yhteistyökerros ostos- ja tehtävälistoille. Kutsulinkit, omistaja-, muokkaaja- ja katselijaroolit sekä reaaliaikainen synkronointi Firestoren kautta. Ei korvaa paikallisia listoja.

Ilmoitukset

Jaettujen listojen muutoksista voi saada push-ilmoituksen. Ilmoitusasetukset ovat käyttäjäkohtaisia, ja ilmoituksia rajoitetaan niin ettei yksi muokkausrypäs tuota ilmoitustulvaa.

Palvelinpuolen rajoitukset

Tekoälypyynnöt kulkevat oman FastAPI-backendin kautta, joka tarkistaa pyynnön aitouden ja rajoittaa käyttöä. Vastaukset validoidaan palvelimella ennen kuin ne palautetaan sovellukselle.

Terveysmerkinnät ovat käyttäjän omia kirjauksia. Sovellus ei tulkitse arvoja eikä anna terveysneuvontaa.

Tekninen toteutus

Sovellus on rakennettu paikallinen ydin edellä. Verkkoa käyttävät osat ovat erillisiä kerroksia, jotka voidaan ottaa käyttöön ilman että paikallinen toiminta muuttuu.

Android-sovellus

Kotlin · Jetpack Compose · Material 3 · ViewModel · Kotlin Flow

  • Compose-käyttöliittymä ja Material 3 -komponentit
  • ViewModel- ja StateFlow-pohjainen tilanhallinta
  • Repository-rajapinnat, mapperit ja Room-DAO:t
  • Tuki Android 8:sta (API 26) alkaen, käännetty API 36:ta vasten

Paikallinen tallennus

Room · DataStore · skeemamigraatiot

  • Room-tietokanta listoille, muistiinpanoille, resepteille ja merkinnöille
  • Skeemaversio 23 ja hallitut migraatiot
  • DataStore-pohjaiset asetukset
  • Vienti ja tuonti omalla varmuuskopioskeemallaan

Tekoälybackend

FastAPI · Python · SQLAlchemy · MariaDB · OpenAI

  • Oma FastAPI-palvelu tekoälypyynnöille
  • Vastausten validointi ja siistiminen palvelimella
  • Käyttörajat MariaDB:ssä sekä hetkellisenä että päiväkohtaisena
  • Asiakastunnisteeseen perustuva väärinkäytön esto

Yhteistyökerros

Firebase Auth · Firestore · Cloud Functions · FCM · App Links

  • Google-kirjautuminen vain jaettuja listoja varten
  • Firestore-pohjainen reaaliaikainen synkronointi
  • Kutsulinkit HTTPS App Linkeillä
  • Roolit: omistaja, muokkaaja ja katselija

Julkaisu ja ylläpito

Google Play · In-App Review · In-App Updates

  • Allekirjoitetut Android App Bundlet tuotantoraiteelle
  • Play In-App Review sovelluksen hallitsemana
  • Play-joustavat sovelluspäivitykset
  • Analytiikka sallittujen tapahtumien kääreen kautta, poiskytkettävissä

Tietoturva ja tietosuoja

Sovelluksen tietosuojaratkaisu perustuu siihen, mitä ei lähetetä eteenpäin.

Paikallinen ydin

Listat, muistiinpanot, reseptit, tehtävät, syntymäpäivät ja terveysmerkinnät tallentuvat laitteelle. Niitä ei siirretä pilveen automaattisesti.

Kirjautuminen vain tarvittaessa

Perustoiminnot eivät vaadi tiliä. Google-kirjautumista pyydetään vasta, kun käyttäjä luo tai liittyy jaettuun listaan.

Sovelluksen eheys

Tekoälypyynnöt vaativat Firebase App Check -tarkistuksen ja Google Play Integrity -varmennuksen nonce-menettelyllä, joten rajapintaa ei voi käyttää sovelluksen ulkopuolelta.

Rajattu pilvidata

Jaetuista listoista pilveen tallentuvat vain listan tiedot, rivit, jäsenyydet, roolit, kutsut ja ilmoitusasetukset. Profiilikuvina käytetään ainoastaan Google-tilin kuvalinkkiä.

Analytiikka

Käyttöanalytiikka on poiskytkettävissä ja kulkee sallittujen tapahtumien kääreen kautta. Tapahtumiin ei sisällytetä listojen sisältöä, muistiinpanoja, hakuja, terveysmerkintöjä eikä käyttäjätunnisteita.

Laitetason suojaus

Muistiinpanot, reseptit, ruokalistat, asetukset ja terveysosio voidaan lukita biometrisesti.

Kuvakaappaukset

Kuvat ovat sovelluksen Google Play -kuvakaappauksia. Klikkaamalla kuva avautuu täysikokoisena.

Kauppalista & Muistiinpanot – ostoslistanäkymä, jossa näkyvät listan tuotteet ja suosikit.
Ostoslista: tuotteet, suosikit ja järjestäminen. Näkymä toimii ilman verkkoyhteyttä.
Kauppalista & Muistiinpanot – ainesten skannausnäkymä, jossa kuvasta tunnistetaan ruoka-aineita.
Ainesten skannaus: kuvasta tunnistetut ainekset vahvistetaan ennen reseptiehdotusta.
Kauppalista & Muistiinpanot – tekoälyn ateriaehdotusnäkymä toiveineen ja rajoituksineen.
Ateriaehdotus: toiveet ja rajoitteet syötetään kirjoittamalla tai sanelemalla.

Julkaisutilanne

Sovellus on Google Play -kaupan tuotantoraiteella paketilla com.janstech.kauppalista. Julkaisut tehdään allekirjoitettuina Android App Bundleina. Paikalliset ominaisuudet ovat käytettävissä ilman tiliä; jaetut listat ja tekoälytoiminnot vaativat verkkoyhteyden ja jaetut listat lisäksi Google-kirjautumisen.