Privacy policy
This policy was written from the app's current architecture and data flows. It is under review and the wording may still be refined. Noshery ships on Android and Google Play only; there is no iOS release.
This Privacy Policy explains how Noshery (the "App"), operated by an independent developer ("we", "us"), handles information. If you have questions, contact us at contact@noshery.pl.
Summary
- Noshery is offline-first. Your food log, weight entries, dishes and profile are stored locally on your device and are not sent to us unless you turn on an optional feature that requires it.
- You can use the App without creating an account.
- We do not sell your data, do not show ads, and do not use third-party analytics or advertising trackers.
- Optional features that are currently available (barcode lookup, the intervals.icu integration, the AI estimate feature, and creating an account for cloud sync) send limited data to the specific third party that powers them, as described below.
- The App has two separate AI-related features, and they behave differently. The "Paste AI estimate" feature only decodes text that you paste into it, on your device — nothing is sent anywhere. The "AI estimate" feature is opt-in: only if you add your own API key for a provider you choose (Gemini, OpenAI, Anthropic, or a custom OpenAI-compatible endpoint) in Settings → Integrations, and only when you use this specific feature, the food/meal description you type, and the photo of the meal if you choose to attach one, is sent directly from your device to that provider using your own key. The optional "Ask AI" action in Diet analysis works the same way: only when you tap it, a summary of your last 14 days and the question you typed are sent directly to the provider you picked, using your own key.
Information stored on your device
The following is created and kept in local storage on your device (an on-device database and app preferences). It stays on your device unless you enable cloud sync or create an export:
- Profile and goals: body weight, height, age, sex, activity level, training background, calorie / macro targets and overrides, and optional "race mode" / "recovery mode" settings, and your calorie-deficit (cutting) history: deficit size, start and end dates, and diet-break periods. The optional "smart carry-over" switch only adjusts today's calorie target from your last few logged days on your device; the switch itself is stored on the device only and is not uploaded.
- Logs: food entries, activity (calorie-burn) entries, and body-weight / body-composition entries, including dates, quantities, macros, and any meal tags you assign.
- Dishes and foods: dishes you create, their ingredients, your personal food library (including the barcode saved with a food you scanned), and meal tags. While you fill in a dish or entry form, or adjust a dish before logging it, the App also saves an in-progress draft of it on your device so it is not lost if you leave the form or the App closes; a draft is removed when you save or discard it. A draft too large to sync stays on your device only.
- Races and training sessions: upcoming races and calendar events, and planned training sessions — their name, date, sport, distance or planned duration, priority, training-load estimate, description and fueling plan settings (length, planned time, plan on/off), plus any notes you add. Items pulled from intervals.icu are stored here too.
- Note: a single free-text note you can keep in the App (for example a quick reminder to yourself).
- Reminders: your local reminders — label, time, and, optionally, a schedule (chosen weekdays, a one-off date, or an hourly window with its interval) or a condition such as a meal tag (the reminder then fires shortly after you log an entry with that tag). Reminder notifications are scheduled and shown locally by your device; nothing is sent to us to deliver them.
- Integration credentials: if you connect intervals.icu, your intervals.icu API key and athlete ID are stored locally.
- App preferences: theme, language, and feature settings.
You can delete this data at any time from within the App (delete individual records, clear a list, or reset the App), or by uninstalling the App.
Optional features that transmit data
1. Account and cloud sync (optional)
Creating an account and syncing are optional — the App works fully without one. Tapping "Sync with cloud" in Settings opens a sign-up / sign-in screen. Accounts and sync use Appwrite Cloud as our backend, hosted in Frankfurt, Germany (EU).
- Account: your email address, chosen display name, and password are sent to Appwrite Cloud to create and secure your account, and a verification email is sent to your address. Sync is only available once you have verified your email.
- Two-factor authentication (optional): from Account settings you can turn on TOTP-based two-factor authentication. Setup shows you a QR code (rendered by Appwrite's avatar service from a one-time TOTP secret) and a set of one-time recovery codes; both are generated and verified by Appwrite Cloud and shown to you once. We do not separately store your TOTP secret or recovery codes.
- Biometric unlock: if you turn it on, your account email and password are saved in your device's operating-system secure keystore (Android Keystore) and released only after your device confirms your fingerprint or face. The biometric check is performed by the operating system; we never receive your biometric data, and the stored credentials never leave your device.
- Sync: on-demand only. It runs when you trigger it, never automatically in the background. A copy of the following is uploaded to your account so it can be restored on your devices: your profile (including body metrics and, if you have set it, your intervals.icu athlete ID), a free-text note, food and activity entries, dishes and dish ingredients, your food library (including any barcode saved with a food; on accounts with the optional community library enabled, the name, macros and barcode of foods you created are also shared anonymously — see section 7), weight entries, calorie-deficit (cutting) history, meal tags, calendar events and planned training sessions, daily calorie/macro target overrides, reminders (including any meal-tag condition), the contents of your simulation basket, and your unsaved dish and entry drafts. To keep the App fast, food entries older than 15 days are replaced on your device by a single daily total (calories and macros per day, kept in a “daily archive”); the archive is synced to your account, and once a day is archived its individual food entries are removed from your account as well (the daily totals remain). Local deletions sync to your account as removal markers, and pulling data down never overwrites a newer entry already on your device, so a stale device can't clobber your latest changes. Your intervals.icu API key and any AI provider API keys are never uploaded — they stay on the device where you entered them.
- Push notifications (optional): if you allow notifications, the App registers a push notification device token with Appwrite Messaging and may store which optional notification topics (for example, sync reminders) you have subscribed to. Both are used solely to deliver notifications to your own device. Separately, the App can show local notifications generated on your device (your own reminders, and a notice when deleting a meal tag turns off reminders that depended on it, and system notices such as the automatic backup result, which you can switch off in notification settings); these do not involve any server. The App also keeps a notification center on your device that lists these local notifications together with sync and backup results and release notes; it is stored only on your device and is not uploaded, synced or included in exports or backups.
2. App configuration and translation updates
Each time the App starts, it downloads a small set of translation / localization files (JSON) from our Appwrite Storage backend so wording fixes can ship without an app update. In the same way, the App downloads the list of built-in system foods (a public JSON file of food names and nutrition values per 100 g) the first time it starts without one, and again only when you choose “Update system foods” in the Food library menu, so the list can be corrected without an app update. This request carries no account or profile data and is made whether or not you have an account; our backend receives the network request (including your device's IP address) to serve the file.
The App also downloads one small public text file (instructions for the Diet analysis feature; it contains no user data) in the same way. Diet analysis builds a summary of your recent days on your device and shows it to you. The text leaves your device only if you tap Share and pick a destination app (for example an AI assistant) yourself (if you already asked the AI, its answer is included in what you share), or if you tap Ask AI (see section 5); nothing is sent otherwise.
3. Barcode scanning (Open Food Facts)
When you scan a barcode, the App first looks it up on your device, in your own food library. Only if the code is not already known on your device (in your food library or in products you scanned before) does the App send the barcode number to the Open Food Facts public database (world.openfoodfacts.org) to retrieve nutrition information. A barcode you save with a food is stored in your food library and is therefore included in backups and, if you use sync, in the data synced to your account. A scanned product you do not save is kept in your food data but hidden from your food library (like your other food data, it is included in backups and, if you use sync, in the data synced to your account), so the next scan of the same code needs no network. When a scan finds a product, its serving size in grams, when Open Food Facts provides one, is stored with the food. If you tap “Refresh from Open Food Facts” on an item that has a barcode, the App also sends that barcode number to Open Food Facts to check for updated nutrition data; nothing is changed until you accept the result and save, and the refresh ignores serving size. After a sync, the App checks your library on the device for barcodes shared by several foods and may show a local notification about it; this check and notification do not send any data anywhere. No account or profile data is sent. The in-app scanner reads EAN-13 / UPC-A barcodes only; camera frames are decoded on your device and are not stored or transmitted.
4. intervals.icu integration (optional)
If you connect intervals.icu, the App uses the API key and athlete ID you provide to call intervals.icu/api/v1 and pull your weight, your activities, and your planned races and training sessions (from your intervals.icu training calendar) into the App. This is a direct connection between your device and intervals.icu; we do not proxy or retain that data on our servers. See intervals.icu for their privacy terms.
5. AI estimate (optional, bring your own key)
You can add your own API key for an AI provider of your choice — Google Gemini, OpenAI, Anthropic, or a custom OpenAI-compatible endpoint you configure — in Settings → Integrations, and choose one as the default. You can save more than one provider and pick which is used for a given estimate. When you use the "Generate AI estimate" feature, the free-text food/meal description you typed, and the photo of the meal if you chose to attach one (it is downsized on your device first), is sent directly from your device to the provider you selected, using your own API key. Unless you switch off "Use my food library", the names and per-100 g macros of up to 40 foods in your food library whose names resemble your description are sent along with it, so the provider can reuse them instead of estimating them again. The same applies when you ask for an AI estimate of the ingredient or food text you typed in the add-dish and add-entry sheets: that text is sent only to your selected provider, and only when you tap the estimate action. Likewise, when you tap "Ask AI" in Diet analysis, the following is sent only to your selected provider, using your own key: your daily calories and macros with their targets, weight entries, logged activities (name, kcal burned), tag totals and most-eaten foods for the last 14 full days, basic profile details (sex, age, height, weight), and the question you typed. No photos and no raw meal log are sent, and Noshery does not store the answer on a server. The photo is kept in memory only: it is never saved by the App, never included in a backup or export, and never synced. This is a direct connection between your device and that provider; we do not proxy or retain that data on our servers. Provider API keys are stored locally on your device only — they are never included in a manual export, an automatic backup, or cloud sync (see below). See the provider's own terms for how it handles the request: Google Gemini, OpenAI, Anthropic.
6. Manual export / import and automatic on-device backup
You can export your data to a JSON file (for example to share via another app or keep as a backup). The file covers the same on-device records listed above, including your races and training sessions. Before the file is written, your intervals.icu API key and internal account identifiers are removed from it, so a backup you share or restore elsewhere does not carry credentials or another account's id. AI provider API keys (see above) are never part of your on-device profile export in the first place. Once a file is exported, how it is stored or shared is controlled by you and the destination you choose. Import reads a file you select and writes it back into the on-device database.
If you turn on Automatic backup in Settings, the App writes the same kind of file to its own private storage area on your device on a schedule (keeping the most recent few). These files never leave your device and are not sent to us.
7. Community food library (optional, enabled per account)
The community food library is available only to accounts for which an administrator has enabled it; only those accounts both contribute to it and receive from it. For enabled accounts, the App contributes the name and per-100 g macros (calories, protein, fat, carbohydrates, fibre) of foods you created yourself during sync, together with the barcode saved with the food, if any. Nothing else is contributed. Foods received from the community may therefore carry a barcode (the one most often contributed for that food). Contributions are merged anonymously: no user id and no link to your account is stored in the public pool. To count how many different people contributed a food, and to withdraw your contribution when you delete that food, our backend keeps a separate, non-public record that ties a one-way hash of your user id to the food's name and values; it is never shown to other users. You can ask us at contact@noshery.pl to delete your entries at any time; we then remove your synced data and your community contributions and recalculate the shared values without them. Values from different contributors are combined by taking the median, and a food is published only after a minimum number of different contributors have submitted it. Foods you receive from the community are stored locally on your device, are excluded from manual exports and automatic backups, and are not pushed back to your account during sync. If community access is turned off for your account, these locally stored community foods are removed from your device. Foods you edit become your own and are then handled like the rest of your food library.
Android permissions the App requests
| Permission | Why |
|---|---|
Camera (CAMERA) | Scanning food barcodes in the in-app scanner. Frames are decoded on-device; no image is saved or transmitted. |
Network access (INTERNET) | Required for the optional network features above (config / translation download, barcode lookup, intervals.icu). |
Vibrate (VIBRATE) | Haptic feedback. |
| Read / write shared storage | Saving and opening export files on older Android. Declared with maxSdkVersion="32"; not requested on Android 13+. |
Record audio (RECORD_AUDIO) | Declared by the bundled camera library. The App never records audio and has no audio feature. |
Display over other apps (SYSTEM_ALERT_WINDOW) | Declared by a bundled dependency. The App has no draw-over-other-apps feature and does not use it. |
| Biometric hardware / fingerprint | Unlocking stored login credentials for the account feature, if you turn on biometric login. Handled by the operating system; no biometric data reaches us. |
What we do not do
- No advertising, no ad networks, no ad identifiers.
- No third-party analytics, crash-reporting, attribution, or behavioural-tracking SDKs. We reviewed the App's full dependency list and found none. During startup the App writes diagnostic messages to the device's local log to help troubleshoot the translation-update pipeline; these stay on the device and are not collected or transmitted.
- No sale or sharing of personal data for marketing.
- No AI or LLM API calls from the App, except the opt-in AI estimate and Diet analysis "Ask AI" features described above, which only run when you add your own API key for a provider you choose and use it.
Legal bases for processing (GDPR)
Where GDPR applies, we rely on:
- Performance of a contract: to provide the account and sync features you request.
- Consent: for optional integrations you choose to enable. You can withdraw consent by disabling the feature or deleting the integration credentials.
- Legitimate interests: to keep the service secure and functioning (for example authentication, fetching app configuration).
Data retention
- On-device data: retained until you delete it or uninstall the App. Individual food entries are kept for 15 days, after which only the daily total is kept.
- Account data: retained while your account is active and deleted on request to contact@noshery.pl, subject to backups that expire shortly afterwards.
- Shared links: when you share a dish, entry or basket as a short link (noshery.pl/s/…), its content is encrypted on your device before upload and stored on our server for 7 days, then automatically deleted. The decryption key exists only in the link itself (after the #), so we cannot read the content. Short links can be created only by logged-in users. The shared (encrypted) item is deleted automatically after 7 days, and you can delete it earlier. Anyone who has the full link can open it for 7 days, so share it only with people you trust.
Your rights
Depending on where you live, you may have the right to access, correct, export, or delete your personal data, and to object to or restrict certain processing. For on-device data you can exercise these directly in the App. For account data, contact contact@noshery.pl. In Poland you may also lodge a complaint with the President of the Personal Data Protection Office (UODO).
Children
The App is not directed to children under 16, and we do not knowingly collect their personal data.
International transfers
Our backend is hosted in the EU (Frankfurt, Germany). Open Food Facts, intervals.icu, and — if you use the AI-estimate or Diet analysis "Ask AI" feature — whichever AI provider you chose (Google, OpenAI, Anthropic, or your own custom endpoint) may process requests on infrastructure in other countries; refer to their policies for details.
Security
Account authentication and data in transit are protected using industry-standard encryption (HTTPS / TLS). On-device data is protected by your device's operating-system sandboxing and any device lock you have configured. No method of transmission or storage is completely secure.
Changes to this policy
We may update this policy. Material changes will be announced in the App or on this website, and the "Last updated" date above will change.
Contact
Noshery is operated by an independent developer. Contact: contact@noshery.pl.
Polityka prywatności
Niniejsza polityka została opracowana na podstawie aktualnej architektury aplikacji i przepływów danych. Jest w trakcie przeglądu i jej brzmienie może jeszcze zostać dopracowane. Noshery jest dystrybuowane wyłącznie na Androida i Google Play; nie istnieje wydanie na iOS.
Niniejsza Polityka prywatności wyjaśnia, w jaki sposób aplikacja Noshery („Aplikacja"), prowadzona przez niezależnego dewelopera („my", „nas"), postępuje z informacjami. W razie pytań prosimy o kontakt pod adresem contact@noshery.pl.
Podsumowanie
- Noshery działa w modelu offline-first. Twój dziennik posiłków, wpisy wagi, dania oraz profil są przechowywane lokalnie na Twoim urządzeniu i nie są przesyłane do nas, chyba że włączysz opcjonalną funkcję, która tego wymaga.
- Możesz korzystać z Aplikacji bez zakładania konta.
- Nie sprzedajemy Twoich danych, nie wyświetlamy reklam oraz nie stosujemy zewnętrznych narzędzi analitycznych ani reklamowych mechanizmów śledzących.
- Opcjonalne funkcje obecnie dostępne (wyszukiwanie produktu po kodzie kreskowym, integracja z intervals.icu, funkcja szacunku AI oraz założenie konta na potrzeby synchronizacji z chmurą) przesyłają ograniczony zakres danych do konkretnego podmiotu zewnętrznego, który je obsługuje, co opisano poniżej.
- Aplikacja ma dwie odrębne funkcje związane z AI, które działają inaczej. Funkcja „Wklej szacunek AI" jedynie dekoduje tekst, który wklejasz, na Twoim urządzeniu — nic nie jest nigdzie wysyłane. Funkcja „Szacunek AI" jest opcjonalna: tylko jeśli dodasz własny klucz API wybranego dostawcy (Gemini, OpenAI, Anthropic lub niestandardowy punkt końcowy kompatybilny z OpenAI) w Ustawieniach → Integracje, i tylko gdy skorzystasz z tej konkretnej funkcji, wpisany przez Ciebie opis posiłku/produktu oraz zdjęcie posiłku, jeśli zdecydujesz się je dołączyć, są wysyłane bezpośrednio z Twojego urządzenia do wybranego dostawcy, przy użyciu Twojego własnego klucza. Opcjonalna akcja „Zapytaj AI” w Analizie diety działa tak samo: tylko po jej stuknięciu podsumowanie ostatnich 14 dni i wpisane pytanie są wysyłane bezpośrednio do wybranego dostawcy, przy użyciu Twojego własnego klucza.
Informacje przechowywane na Twoim urządzeniu
Poniższe dane są tworzone i przechowywane w pamięci lokalnej Twojego urządzenia (baza danych na urządzeniu oraz preferencje aplikacji). Pozostają one na Twoim urządzeniu, chyba że włączysz synchronizację z chmurą lub utworzysz eksport:
- Profil i cele: masa ciała, wzrost, wiek, płeć, poziom aktywności, doświadczenie treningowe, docelowe wartości kalorii / makroskładników i ich nadpisania oraz opcjonalne ustawienia „trybu startowego" i „trybu regeneracji" oraz historia deficytu kalorycznego (redukcji): wielkość deficytu, daty rozpoczęcia i zakończenia oraz okresy przerw w diecie. Opcjonalny przełącznik „inteligentnego wyrównania" jedynie koryguje dzisiejszy cel kalorii na podstawie kilku ostatnich zapisanych dni, na Twoim urządzeniu; sam przełącznik jest przechowywany tylko na urządzeniu i nie jest przesyłany.
- Wpisy: wpisy żywności, wpisy aktywności (spalonych kalorii) oraz wpisy masy ciała / składu ciała, w tym daty, ilości, makroskładniki oraz przypisane etykiety posiłków.
- Dania i produkty: dania, które tworzysz, ich składniki, Twoja osobista biblioteka produktów (w tym kod kreskowy zapisany przy zeskanowanym produkcie) oraz etykiety posiłków. Gdy wypełniasz formularz dania lub wpisu albo zmieniasz danie przed jego zapisaniem w dzienniku, aplikacja zapisuje na Twoim urządzeniu także roboczy szkic, aby nie zginął po wyjściu z formularza lub zamknięciu aplikacji; szkic jest usuwany po zapisaniu lub odrzuceniu. Szkic zbyt duży do synchronizacji pozostaje tylko na urządzeniu.
- Starty i sesje treningowe: nadchodzące starty i wpisy w kalendarzu oraz zaplanowane sesje treningowe — ich nazwa, data, sport, dystans lub planowany czas trwania, priorytet, szacowane obciążenie treningowe, opis oraz ustawienia planu żywienia (długość, planowany czas, plan włączony/wyłączony), a także wszelkie dodane przez Ciebie notatki. Elementy pobrane z intervals.icu są przechowywane również tutaj.
- Notatka: pojedyncza notatka tekstowa, którą możesz prowadzić w Aplikacji (np. szybkie przypomnienie dla siebie).
- Przypomnienia: Twoje lokalne przypomnienia — etykieta, godzina oraz opcjonalnie harmonogram (wybrane dni tygodnia, jednorazowa data lub przedział godzinowy z interwałem) albo warunek, np. etykieta posiłku (przypomnienie uruchamia się wtedy krótko po zapisaniu wpisu z tą etykietą). Powiadomienia z przypomnień są planowane i wyświetlane lokalnie przez Twoje urządzenie; nic nie jest do nas wysyłane w celu ich dostarczenia.
- Dane uwierzytelniające integracji: jeśli połączysz intervals.icu, Twój klucz API oraz identyfikator zawodnika są przechowywane lokalnie.
- Preferencje aplikacji: motyw, język oraz ustawienia funkcji.
Możesz usunąć te dane w dowolnym momencie z poziomu Aplikacji (usunięcie pojedynczych rekordów, wyczyszczenie listy lub zresetowanie Aplikacji) albo poprzez odinstalowanie Aplikacji.
Opcjonalne funkcje przesyłające dane
1. Konto i synchronizacja z chmurą (opcjonalne)
Założenie konta i synchronizacja są opcjonalne — Aplikacja w pełni działa bez nich. Dotknięcie „Synchronizacja z chmurą" w Ustawieniach otwiera ekran rejestracji / logowania. Konto i synchronizacja korzystają z Appwrite Cloud jako naszego zaplecza, hostowanego we Frankfurcie w Niemczech (UE).
- Konto: Twój adres e-mail, wybrana nazwa wyświetlana oraz hasło są przesyłane do Appwrite Cloud w celu utworzenia i zabezpieczenia konta, a na Twój adres wysyłana jest wiadomość weryfikacyjna. Synchronizacja jest dostępna dopiero po potwierdzeniu adresu e-mail.
- Uwierzytelnianie dwuskładnikowe (opcjonalne): w ustawieniach konta możesz włączyć uwierzytelnianie dwuskładnikowe oparte na TOTP. Konfiguracja pokazuje kod QR (wygenerowany przez usługę awatarów Appwrite na podstawie jednorazowego sekretu TOTP) oraz zestaw jednorazowych kodów odzyskiwania; oba są generowane i weryfikowane przez Appwrite Cloud i wyświetlane Tobie jednorazowo. Nie przechowujemy oddzielnie Twojego sekretu TOTP ani kodów odzyskiwania.
- Odblokowanie biometryczne: jeśli je włączysz, adres e-mail i hasło konta są zapisywane w bezpiecznym magazynie kluczy systemu operacyjnego (Android Keystore) i udostępniane dopiero po potwierdzeniu przez urządzenie Twojego odcisku palca lub twarzy. Weryfikacja biometryczna jest wykonywana przez system operacyjny; nigdy nie otrzymujemy Twoich danych biometrycznych, a przechowywane dane uwierzytelniające nigdy nie opuszczają urządzenia.
- Synchronizacja: wyłącznie na żądanie. Uruchamia się, gdy ją wywołasz, nigdy automatycznie w tle. Kopia następujących danych jest przesyłana na Twoje konto, aby można je było przywrócić na Twoich urządzeniach: profil (w tym parametry ciała oraz, jeśli go ustawisz, identyfikator zawodnika intervals.icu), notatka tekstowa, wpisy żywności i aktywności, dania i składniki dań, biblioteka produktów (w tym kody kreskowe zapisane przy produktach; na kontach z włączoną opcjonalną biblioteką społeczności nazwa, makroskładniki i kod kreskowy utworzonych przez Ciebie produktów są dodatkowo udostępniane anonimowo — zob. punkt 7), wpisy wagi, historia deficytu kalorycznego (redukcji), etykiety posiłków, wydarzenia w kalendarzu i zaplanowane sesje treningowe, nadpisania dziennych celów kalorii/makroskładników, przypomnienia (wraz z ewentualnym warunkiem etykiety posiłku) zawartość koszyka symulacji oraz niezapisane szkice dań i wpisów. Aby aplikacja działała szybko, wpisy żywności starsze niż 15 dni są na Twoim urządzeniu zastępowane jedną sumą dnia (kalorie i makroskładniki na dzień, przechowywane w „archiwum dni”); archiwum jest synchronizowane z Twoim kontem, a po zarchiwizowaniu dnia jego poszczególne wpisy żywności są usuwane także z Twojego konta (sumy dni pozostają). Usunięcia lokalne synchronizują się z Twoim kontem jako znaczniki usunięcia, a pobieranie danych nigdy nie nadpisuje nowszego wpisu już zapisanego na urządzeniu, więc nieaktualne urządzenie nie może nadpisać Twoich najnowszych zmian. Twój klucz API intervals.icu oraz wszelkie klucze API dostawców AI nigdy nie są przesyłane — pozostają wyłącznie na urządzeniu, na którym je wprowadziłeś.
- Powiadomienia push (opcjonalne): jeśli zezwolisz na powiadomienia, Aplikacja rejestruje token urządzenia do powiadomień push w usłudze Appwrite Messaging i może przechowywać informację, które opcjonalne tematy powiadomień (np. przypomnienia o synchronizacji) subskrybujesz. Oba te elementy służą wyłącznie do dostarczania powiadomień na Twoje urządzenie. Ponadto Aplikacja może wyświetlać powiadomienia lokalne generowane na Twoim urządzeniu (Twoje przypomnienia oraz informację, że usunięcie etykiety posiłku wyłączyło zależne od niej przypomnienia, oraz powiadomienia systemowe, np. o wyniku automatycznej kopii zapasowej, które możesz wyłączyć w ustawieniach powiadomień); nie wymagają one udziału żadnego serwera. Aplikacja prowadzi też na Twoim urządzeniu centrum powiadomień, które zbiera te powiadomienia lokalne wraz z wynikami synchronizacji i kopii zapasowych oraz informacjami o wersjach; jest ono przechowywane wyłącznie na urządzeniu i nie jest przesyłane, synchronizowane ani uwzględniane w eksportach i kopiach zapasowych.
2. Aktualizacje konfiguracji aplikacji i tłumaczeń
Przy każdym uruchomieniu Aplikacja pobiera niewielki zestaw plików tłumaczeń / lokalizacji (JSON) z naszego zaplecza Appwrite Storage, aby poprawki treści mogły być wdrażane bez aktualizacji aplikacji. W ten sam sposób Aplikacja pobiera listę wbudowanych produktów systemowych (publiczny plik JSON z nazwami produktów i wartościami odżywczymi na 100 g) przy pierwszym uruchomieniu bez niej oraz ponownie tylko wtedy, gdy wybierzesz „Aktualizuj produkty systemowe” w menu biblioteki produktów, aby można ją było poprawiać bez aktualizacji aplikacji. Żądanie to nie zawiera żadnych danych konta ani profilu i jest wykonywane niezależnie od tego, czy masz konto; nasze zaplecze odbiera żądanie sieciowe (w tym adres IP Twojego urządzenia) w celu udostępnienia pliku.
Aplikacja w ten sam sposób pobiera też jeden niewielki publiczny plik tekstowy (instrukcje dla funkcji Analiza diety; nie zawiera danych użytkownika). Analiza diety tworzy na Twoim urządzeniu podsumowanie ostatnich dni i pokazuje je Tobie. Tekst opuszcza urządzenie tylko wtedy, gdy sam stukniesz Udostępnij i wybierzesz aplikację docelową (na przykład asystenta AI) (jeśli wcześniej zapytano AI, w udostępnianym tekście jest też jego odpowiedź) albo stukniesz Zapytaj AI (zob. punkt 5); w pozostałych przypadkach nic nie jest wysyłane.
3. Skanowanie kodów kreskowych (Open Food Facts)
Gdy skanujesz kod kreskowy, Aplikacja najpierw szuka go na Twoim urządzeniu, w Twojej bibliotece produktów. Tylko jeśli kodu nie ma jeszcze na Twoim urządzeniu (w Twojej bibliotece produktów ani wśród wcześniej zeskanowanych produktów), Aplikacja wysyła numer kodu kreskowego do publicznej bazy danych Open Food Facts (world.openfoodfacts.org) w celu pobrania informacji o wartościach odżywczych. Kod kreskowy zapisany przy produkcie jest przechowywany w Twojej bibliotece produktów, a więc wchodzi w skład kopii zapasowych i, jeśli korzystasz z synchronizacji, danych synchronizowanych z Twoim kontem. Zeskanowany produkt, którego nie zapiszesz, jest przechowywany wśród Twoich danych o żywności, ale ukryty w bibliotece produktów (jak pozostałe dane o żywności, wchodzi w skład kopii zapasowych i, jeśli korzystasz z synchronizacji, danych synchronizowanych z Twoim kontem), dzięki czemu kolejne skanowanie tego kodu nie wymaga sieci. Gdy skan znajdzie produkt, jego porcja w gramach, jeśli Open Food Facts ją podaje, jest zapisywana przy produkcie. Jeśli dotkniesz „Odśwież z Open Food Facts” przy produkcie z kodem kreskowym, Aplikacja wysyła ten numer kodu również do Open Food Facts, aby sprawdzić zaktualizowane dane o wartościach odżywczych; nic się nie zmienia, dopóki nie zaakceptujesz wyniku i nie zapiszesz, a odświeżenie pomija wielkość porcji. Po synchronizacji Aplikacja sprawdza na urządzeniu, czy kilka produktów nie ma wspólnego kodu kreskowego, i może pokazać o tym lokalne powiadomienie; to sprawdzenie i powiadomienie nie wysyłają żadnych danych. Nie są przesyłane żadne dane konta ani profilu. Wbudowany skaner odczytuje wyłącznie kody EAN-13 / UPC-A; klatki z kamery są dekodowane na Twoim urządzeniu i nie są przechowywane ani przesyłane.
4. Integracja z intervals.icu (opcjonalna)
Jeśli połączysz intervals.icu, Aplikacja używa podanego przez Ciebie klucza API oraz identyfikatora zawodnika do wywoływania intervals.icu/api/v1 i pobierania Twojej wagi, aktywności oraz zaplanowanych startów i sesji treningowych (z Twojego kalendarza treningowego intervals.icu). Jest to bezpośrednie połączenie między Twoim urządzeniem a intervals.icu; nie pośredniczymy w tych danych ani nie przechowujemy ich na naszych serwerach. Warunki prywatności tego podmiotu znajdują się pod adresem intervals.icu.
5. Szacunek AI (opcjonalna, własny klucz)
Możesz dodać własny klucz API wybranego dostawcy AI — Google Gemini, OpenAI, Anthropic lub niestandardowego punktu końcowego kompatybilnego z OpenAI — w Ustawieniach → Integracje i wybrać jednego z nich jako domyślnego. Możesz zapisać więcej niż jednego dostawcę i wybrać, który zostanie użyty do danego szacunku. Gdy korzystasz z funkcji „Wygeneruj szacunek AI", wpisany przez Ciebie dowolny opis tekstowy posiłku/produktu oraz zdjęcie posiłku, jeśli zdecydujesz się je dołączyć (wcześniej pomniejszone na Twoim urządzeniu), są wysyłane bezpośrednio z Twojego urządzenia do wybranego dostawcy, przy użyciu Twojego własnego klucza API. Jeśli nie wyłączysz opcji „Użyj mojej biblioteki produktów", razem z opisem wysyłane są nazwy i makroskładniki na 100 g maksymalnie 40 produktów z Twojej biblioteki, których nazwy przypominają opis, aby dostawca mógł ich użyć zamiast szacować je ponownie. To samo dotyczy szacunku AI dla tekstu składników lub produktu wpisanego w arkuszach dodawania dania i wpisu: ten tekst trafia wyłącznie do wybranego dostawcy i tylko po dotknięciu akcji szacowania. Podobnie, gdy w Analizie diety stukniesz „Zapytaj AI”, do wybranego dostawcy, przy użyciu Twojego własnego klucza, wysyłane są wyłącznie: dzienne kalorie i makroskładniki wraz z celami, wpisy wagi, zapisane aktywności (nazwa, spalone kcal), sumy tagów i najczęściej jedzone produkty z ostatnich 14 pełnych dni, podstawowe dane profilu (płeć, wiek, wzrost, waga) oraz wpisane przez Ciebie pytanie. Nie są wysyłane zdjęcia ani surowy dziennik posiłków, a Noshery nie zapisuje odpowiedzi na serwerze. Zdjęcie jest przechowywane wyłącznie w pamięci: Aplikacja nigdy go nie zapisuje, nie jest uwzględniane w kopii zapasowej ani eksporcie i nie jest synchronizowane. Jest to bezpośrednie połączenie między Twoim urządzeniem a tym dostawcą; nie pośredniczymy w tych danych ani nie przechowujemy ich na naszych serwerach. Klucze API dostawców są przechowywane wyłącznie lokalnie na Twoim urządzeniu — nigdy nie są uwzględniane w ręcznym eksporcie, automatycznej kopii zapasowej ani synchronizacji z chmurą (patrz niżej). Zapoznaj się z warunkami danego dostawcy, aby dowiedzieć się, jak obsługuje żądanie: Google Gemini, OpenAI, Anthropic.
6. Ręczny eksport / import oraz automatyczna kopia zapasowa na urządzeniu
Możesz wyeksportować swoje dane do pliku JSON (np. w celu udostępnienia przez inną aplikację lub zachowania jako kopii zapasowej). Plik obejmuje te same rekordy z urządzenia, które wymieniono powyżej, w tym Twoje starty i sesje treningowe. Przed zapisaniem pliku Twój klucz API intervals.icu oraz wewnętrzne identyfikatory konta są z niego usuwane, tak aby udostępniana lub przywracana gdzie indziej kopia zapasowa nie zawierała danych uwierzytelniających ani identyfikatora innego konta. Klucze API dostawców AI (patrz wyżej) w ogóle nie są częścią eksportu profilu z urządzenia. Po wyeksportowaniu pliku sposób jego przechowywania lub udostępniania zależy od Ciebie i wybranej lokalizacji docelowej. Import odczytuje wybrany plik i zapisuje go z powrotem do bazy danych na urządzeniu.
Jeśli włączysz Automatyczną kopię zapasową w Ustawieniach, Aplikacja zapisuje ten sam rodzaj pliku we własnym prywatnym obszarze pamięci na Twoim urządzeniu według harmonogramu (przechowując kilka najnowszych). Pliki te nigdy nie opuszczają Twojego urządzenia i nie są przesyłane do nas.
7. Biblioteka produktów społeczności (opcjonalna, włączana dla konta)
Biblioteka produktów społeczności jest dostępna wyłącznie dla kont, dla których administrator ją włączył; tylko takie konta zarówno wnoszą do niej dane, jak i z niej korzystają. Dla włączonych kont Aplikacja podczas synchronizacji przekazuje nazwę i makroskładniki na 100 g (kalorie, białko, tłuszcz, węglowodany, błonnik) produktów, które sam utworzyłeś, wraz z kodem kreskowym zapisanym przy produkcie, jeśli go ma. Nic więcej nie jest przekazywane. Produkty otrzymane od społeczności mogą więc mieć kod kreskowy (ten najczęściej zgłaszany dla danego produktu). Wkłady są łączone anonimowo: w publicznej puli nie jest przechowywany żaden identyfikator użytkownika ani powiązanie z Twoim kontem. Aby policzyć, ile różnych osób zgłosiło dany produkt, oraz wycofać Twój wkład po usunięciu tego produktu, nasze zaplecze przechowuje osobny, niepubliczny zapis łączący jednokierunkowy skrót Twojego identyfikatora użytkownika z nazwą i wartościami produktu; nigdy nie jest on pokazywany innym użytkownikom. W każdej chwili możesz poprosić nas o usunięcie swoich wpisów pod adresem contact@noshery.pl; usuniemy wtedy Twoje zsynchronizowane dane i Twoje wkłady do społeczności oraz przeliczymy wspólne wartości bez nich. Wartości od różnych osób są łączone przez wyliczenie mediany, a produkt jest publikowany dopiero po zgłoszeniu go przez minimalną liczbę różnych osób. Produkty otrzymane od społeczności są przechowywane lokalnie na Twoim urządzeniu, nie są uwzględniane w ręcznych eksportach ani automatycznych kopiach zapasowych i nie są odsyłane na Twoje konto podczas synchronizacji. Jeśli dostęp do społeczności zostanie wyłączony dla Twojego konta, te lokalnie przechowywane produkty zostaną usunięte z urządzenia. Produkty, które edytujesz, stają się Twoimi własnymi i są dalej traktowane jak reszta Twojej biblioteki produktów.
Uprawnienia systemu Android żądane przez Aplikację
| Uprawnienie | Cel |
|---|---|
Aparat (CAMERA) | Skanowanie kodów kreskowych żywności we wbudowanym skanerze. Klatki są dekodowane na urządzeniu; żaden obraz nie jest zapisywany ani przesyłany. |
Dostęp do sieci (INTERNET) | Wymagany do opcjonalnych funkcji sieciowych powyżej (pobieranie konfiguracji / tłumaczeń, wyszukiwanie po kodzie kreskowym, intervals.icu). |
Wibracja (VIBRATE) | Sprzężenie haptyczne. |
| Odczyt / zapis pamięci współdzielonej | Zapisywanie i otwieranie plików eksportu w starszych wersjach Androida. Zadeklarowane z maxSdkVersion="32"; nieżądane na Androidzie 13+. |
Nagrywanie dźwięku (RECORD_AUDIO) | Zadeklarowane przez dołączoną bibliotekę aparatu. Aplikacja nigdy nie nagrywa dźwięku i nie ma żadnej funkcji audio. |
Wyświetlanie nad innymi aplikacjami (SYSTEM_ALERT_WINDOW) | Zadeklarowane przez dołączoną zależność. Aplikacja nie ma funkcji wyświetlania nad innymi aplikacjami i z niego nie korzysta. |
| Sprzęt biometryczny / odcisk palca | Odblokowywanie przechowywanych danych logowania, jeśli włączysz logowanie biometryczne. Obsługiwane przez system operacyjny; żadne dane biometryczne do nas nie trafiają. |
Czego nie robimy
- Brak reklam, brak sieci reklamowych, brak identyfikatorów reklamowych.
- Brak zewnętrznych narzędzi analitycznych, raportowania awarii, atrybucji ani zestawów SDK do śledzenia zachowań. Przejrzeliśmy pełną listę zależności Aplikacji i nie znaleźliśmy żadnych. Podczas uruchamiania Aplikacja zapisuje komunikaty diagnostyczne w lokalnym dzienniku urządzenia, aby ułatwić rozwiązywanie problemów z mechanizmem aktualizacji tłumaczeń; pozostają one na urządzeniu i nie są zbierane ani przesyłane.
- Brak sprzedaży lub udostępniania danych osobowych do celów marketingowych.
- Brak wywołań API AI / LLM z poziomu Aplikacji, z wyjątkiem opcjonalnych funkcji szacunku AI i „Zapytaj AI” w Analizie diety opisanych powyżej, które działają wyłącznie, gdy dodasz własny klucz API wybranego dostawcy i z niej skorzystasz.
Podstawy prawne przetwarzania (RODO)
W zakresie, w jakim obowiązuje RODO, opieramy się na:
- Wykonaniu umowy: w celu udostępnienia żądanych przez Ciebie funkcji konta i synchronizacji.
- Zgodzie: w odniesieniu do opcjonalnych integracji, które zdecydujesz się włączyć. Zgodę możesz wycofać, wyłączając funkcję lub usuwając dane uwierzytelniające integracji.
- Prawnie uzasadnionych interesach: w celu utrzymania bezpieczeństwa i sprawności działania usługi (np. uwierzytelnianie, pobieranie konfiguracji aplikacji).
Okres przechowywania danych
- Dane na urządzeniu: przechowywane do momentu ich usunięcia przez Ciebie lub odinstalowania Aplikacji. Poszczególne wpisy żywności są przechowywane przez 15 dni, po czym zachowywana jest tylko suma dnia.
- Dane konta: przechowywane, dopóki konto jest aktywne, i usuwane na żądanie wysłane na contact@noshery.pl, z zastrzeżeniem kopii zapasowych, które wygasają wkrótce potem.
- Udostępnione linki: gdy udostępniasz danie, wpis lub koszyk jako krótki link (noshery.pl/s/…), jego zawartość jest szyfrowana na Twoim urządzeniu przed przesłaniem i przechowywana na naszym serwerze przez 7 dni, a następnie automatycznie usuwana. Klucz deszyfrujący istnieje wyłącznie w samym linku (po znaku #), więc nie możemy odczytać tej zawartości. Krótkie linki mogą tworzyć tylko zalogowani użytkownicy. Udostępniony (zaszyfrowany) element jest automatycznie usuwany po 7 dniach, a Ty możesz usunąć go wcześniej. Każdy, kto ma pełny link, może ją otworzyć przez 7 dni, dlatego udostępniaj go tylko zaufanym osobom.
Twoje prawa
W zależności od miejsca zamieszkania możesz mieć prawo do dostępu do swoich danych osobowych, ich sprostowania, eksportu lub usunięcia, a także do sprzeciwu wobec niektórych czynności przetwarzania lub do ich ograniczenia. W odniesieniu do danych na urządzeniu możesz realizować te prawa bezpośrednio w Aplikacji. W odniesieniu do danych konta prosimy o kontakt pod adresem contact@noshery.pl. W Polsce przysługuje Ci również prawo wniesienia skargi do Prezesa Urzędu Ochrony Danych Osobowych (UODO).
Dzieci
Aplikacja nie jest kierowana do dzieci poniżej 16 roku życia i nie zbieramy świadomie ich danych osobowych.
Transfery międzynarodowe
Nasze zaplecze jest hostowane w UE (Frankfurt, Niemcy). Open Food Facts, intervals.icu oraz — jeśli korzystasz z funkcji szacunku AI lub „Zapytaj AI” w Analizie diety — wybrany przez Ciebie dostawca AI (Google, OpenAI, Anthropic lub Twój własny niestandardowy punkt końcowy) mogą przetwarzać żądania na infrastrukturze w innych krajach; szczegóły znajdują się w ich politykach.
Bezpieczeństwo
Uwierzytelnianie konta oraz dane w tranzycie są chronione za pomocą standardowego w branży szyfrowania (HTTPS / TLS). Dane na urządzeniu są chronione przez mechanizmy izolacji systemu operacyjnego oraz przez skonfigurowaną blokadę urządzenia. Żadna metoda transmisji ani przechowywania nie jest całkowicie bezpieczna.
Zmiany w niniejszej polityce
Możemy aktualizować niniejszą politykę. Istotne zmiany będą ogłaszane w Aplikacji lub na tej stronie, a widniejąca powyżej data „Ostatnia aktualizacja" zostanie zmieniona.
Kontakt
Noshery jest prowadzone przez niezależnego dewelopera. Kontakt: contact@noshery.pl.