Last updated: May 16, 2026
MyDailyMemory ("we", "our", "the app") is a personal memory journal application. We are committed to protecting your privacy and being transparent about the data we collect.
1. Data We Collect
1.1 Data you provide
| Data type | Details | Purpose |
|---|---|---|
| Photos | Taken with camera or selected from gallery | Store your daily memories |
| Memory metadata | Title, description, mood, labels, favorite status | Organize and enrich your memories |
| Email address | Only if you create an account | Authentication and account recovery |
| Display name | Only if you sign in with Google | Show your name in the app |
| Feedback | Messages you submit via the feedback feature | Improve the app |
1.2 Data generated automatically
| Data type | Purpose |
|---|---|
| Notification preferences | Schedule daily reminders at your preferred time |
| In-game progress | Coins, achievements, shop purchases, daily challenges |
| Memory save timestamps | Adapt smart notification timing to your habits |
1.3 Data we do NOT collect
- We do not collect your location
- We do not use analytics, crash reporting, or tracking SDKs
- We do not sell your data to third parties
2. How Your Data Is Protected (Optional E2E Encryption)
MyDailyMemory offers optional end-to-end encryption with a user-chosen backup password. This is your choice:
- If you enable encryption: Your data is encrypted on your device before reaching our servers. The developer cannot read it—zero-knowledge storage.
- If you skip encryption: Your data is stored in plain text on Firebase. The developer can read it if needed (e.g., for support or account recovery).
2.1 Encryption details
- Algorithm: AES-256-GCM with a 128-bit authentication tag (authenticated encryption — protects both confidentiality and integrity). Older records may still be readable via legacy AES-256-CBC for backwards compatibility; new data is always written with GCM.
- Key derivation: PBKDF2-HMAC-SHA256 with 100,000 iterations and a per-user 256-bit random salt (resists brute-force attacks)
- What is encrypted: Photo bytes, memory titles, descriptions, mood (primary and per extra photo), labels/stickers, frame choice, birthday
- What is NOT encrypted: The memory ID and creation date, the favorite flag, in-game progress (coins, achievements, shop items), notification preferences. Photo URLs returned by the storage provider are themselves stored in plain text but the underlying bytes are encrypted, so the URL alone cannot leak content.
- Key location: Derived from your passphrase on your device and cached only in the platform secure store (Android Keystore / iOS Keychain). It never leaves your phone or is uploaded to any server.
2.2 How it works (if you enable it)
On first login: You can optionally set a backup password. If you do, the app derives an encryption key from it using PBKDF2. All sensitive data is then encrypted with this key before being sent to the cloud.
On new device: You enter the same backup password, the key is re-derived, and all encrypted data becomes readable only to you.
⚠️ If you forget your password: Your cloud data cannot be recovered—no one, not even us, has the ability to decrypt it. You will have lost access to all encrypted memories permanently. Write down your password somewhere safe.
If you choose NOT to enable encryption: You can skip this step and continue using the app. Your data will be stored in plain text and accessible to the developer for support purposes.
3. Cloud Sync & Third-Party Services
If you create an account (email/password or Google Sign-In), the following data is synced to the cloud. Photo files are stored in Supabase Storage (private bucket, see Section 3 services list below); only a storage reference (URL) is kept in Google Firebase / Firestore, never the photo bytes themselves. All other memory metadata is stored in Firestore.
3.1 If you enabled encryption (with backup password):
- Photo files (encrypted): Stored in Supabase Storage as encrypted blobs — Supabase never sees a decryptable image
- Memory metadata (encrypted): Titles, descriptions, mood, labels — stored in Firestore as encrypted text
- Birthday (encrypted): Stored only as an encrypted blob in Firestore
- In-game progress (NOT encrypted): Coins, achievements, shop state, daily challenge progress
- Notification preferences
What Firebase / Supabase see: Only gibberish for sensitive data. The encrypted content is meaningless to Google, Firebase admins, Supabase, or anyone without your passphrase.
3.2 If you did NOT enable encryption (skipped the password setup):
- Photo files (plain bytes): Stored in Supabase Storage — readable by Supabase infrastructure
- Memory metadata (plain text): Titles, descriptions, mood, labels — readable on Firestore
- Birthday (plain text): Readable on Firestore
- In-game progress (not encrypted): Coins, achievements, shop state, daily challenge progress
- Notification preferences
What Firebase / Supabase see: All your personal data in readable form. The app developer can access and read it if needed.
Third-party services used:
- Firebase Authentication (Google LLC, USA) — account management
- Cloud Firestore (Google LLC, USA) — structured metadata and settings
- Supabase Storage (Supabase Inc., USA) — photo file hosting in a private bucket. Uploads are gated by Firebase Auth via Supabase's third-party-auth integration: each user can only read/write/delete objects under their own folder (
users/{your-firebase-uid}/) thanks to Row-Level Security policies. Photos are end-to-end encrypted on your device before upload (the cipher bytes are uploaded asapplication/octet-stream; Supabase never sees a decryptable photo). EXIF metadata (GPS, camera serial) is stripped from each photo before encryption. Photos are accessed only via short-lived signed URLs (1 hour TTL) — no permanent public link exists. Supabase's privacy policy: https://supabase.com/privacy. Trans-Atlantic transfers are governed by Standard Contractual Clauses (SCCs). - Cloudinary (Cloudinary Ltd., USA / Israel) — legacy, read-only. Some historical photo blobs uploaded by older versions of the app may still reside on Cloudinary while a transparent background migration moves them to Supabase. The app does not perform any new uploads to Cloudinary. Existing blobs are E2E encrypted and unreadable without your passphrase. Cloudinary's privacy policy: https://cloudinary.com/privacy.
- Google Sign-In (Google LLC, USA) — optional sign-in method
Google's privacy policy applies to Firebase and Sign-In: https://policies.google.com/privacy
3.3 International data transfers (EU users)
Firebase is operated by Google LLC, based in the United States. Your data may be transferred to and stored on servers located outside the European Economic Area (EEA). These transfers are governed by Standard Contractual Clauses (SCCs) as approved by the European Commission. If you enable E2E encryption, your data is encrypted before transfer, so Google cannot access its contents regardless of server location.
For more information on Google's data transfer mechanisms, see: https://policies.google.com/privacy
Guest mode
You can use the app without creating an account. In guest mode, an anonymous Firebase session is created with a random identifier. Your data (memories, photos, settings) is synced to Firebase under this anonymous identifier. You are offered the option to set a backup password to encrypt your data, even in guest mode. If you do not create an account, your data cannot be recovered on a different device.
3.4 Legal basis for processing (GDPR Article 6)
| Processing activity | Legal basis |
|---|---|
| Account creation and authentication | Contract performance (necessary to provide the service) |
| Cloud sync of memories, photos, settings | Consent (you choose to create an account and sync) |
| Feedback collection (with userId/email) | Legitimate interest (to improve the app and respond to users) |
| Anonymization of feedback on account deletion | Legal obligation (GDPR right to erasure) |
| In-game progress storage | Contract performance (core app functionality) |
4. Data Sharing
We do not sell or rent your personal data. The only third parties that receive any data are the technical service providers listed in Section 3 (Firebase, Cloudinary, Google Sign-In).
Developer access depends on your encryption choice:
- With encryption enabled: Even the developer cannot read your sensitive data. Google stores only ciphertext, which is meaningless without your passphrase.
- Without encryption: The developer can access your data on Firebase if needed (e.g., for account recovery, support requests, or policy enforcement).
Feedback: Feedback messages include your user ID and email address so the developer can follow up with you if needed. When you delete your account, all feedback is anonymized (user ID and email are removed).
5. Data Retention
| Data type | Retention period | Deletion method |
|---|---|---|
| Memory metadata (Firestore) | Until you delete the memory or your account | Immediate deletion from Cloud Firestore |
| Encrypted photo blobs (Supabase Storage) | Until you delete the memory or your account | Immediate deletion via Row-Level-Security-protected delete call: when you delete a memory the corresponding blob is removed within the same operation; when you delete your account every blob under your folder is wiped before the auth account itself is dropped. |
| Encrypted photo blobs (legacy Cloudinary) | During background migration only | The auto-migration sweep moves these blobs to Supabase shortly after you next open the app. Residual orphans are unreadable without your passphrase and are removed periodically via a manual backend cleanup. |
| Memories and photos (local) | Until you delete them, uninstall the app, or clear app data | Removed from device storage |
| Account data (email, UID) | Until you delete your account | Immediate deletion from Firebase Authentication |
| In-game progress | Until you delete your account | Immediate deletion from Firestore |
| Feedback (with user ID) | Retained indefinitely for product improvement; anonymized immediately on account deletion | User ID and email set to null; message content retained |
| Encryption metadata (salt, token) | Until you delete your account | Deleted with account data |
When you delete your account, every encrypted photo blob in your Supabase Storage folder is wiped first (using your Firebase token to authorise the delete via RLS), then all Firestore documents and the Firebase Authentication record are removed. Any residual blob on legacy Cloudinary becomes orphaned (unreadable without your passphrase) and is purged via the periodic backend cleanup. This action is irreversible.
6. Your Rights
You have the right to:
- Access your data — all your data is visible within the app; you can also export all your data via the "Export my data (GDPR)" button in Settings
- Delete your data — use "Delete account" in Settings to remove all cloud data (Firestore, Authentication, plus the scheduled Cloudinary purge described in Section 5)
- Rectify your data — edit or delete any memory at any time
- Data portability — export your data in a standard format via the in-app export feature
- Withdraw consent — sign out to stop cloud sync; uninstall to remove all local data
- Object to processing — contact us to object to specific processing activities
6.1 For EU users (GDPR)
Under the General Data Protection Regulation (EU) 2016/679, you have the right to lodge a complaint with your national data protection supervisory authority if you believe your data has been processed unlawfully.
- Italy: Garante per la Protezione dei Dati Personali — www.gpdp.it
For a list of all EU supervisory authorities, visit: European Data Protection Board
6.2 For California users (CCPA)
Under the California Consumer Privacy Act, you have the right to know what personal information is collected, request deletion, and opt out of the "sale" of personal information. We do not sell your personal information. To exercise your rights, contact us at the email below.
7. Data Security
At-rest encryption (zero-knowledge):
- Sensitive data (photo bytes, titles, descriptions, mood, stickers, frame choice, birthday) is encrypted on your device using AES-256-GCM (authenticated encryption with a 128-bit tag) before leaving your phone. Photos are additionally stripped of EXIF metadata (GPS, camera serial, original timestamp) before encryption.
- The encryption key is derived from your backup passphrase using PBKDF2-HMAC-SHA256 with 100,000 iterations and a per-user 256-bit random salt, making brute-force attacks computationally infeasible for sufficiently long passphrases
- The key never leaves your device. It is cached only in the platform secure store (Android Keystore / iOS Keychain) and is wiped on sign-out
- Even if someone gained access to Firebase or Cloudinary, they would only see encrypted blobs with no way to decrypt them without your passphrase
In-transit encryption:
- All communication with Firebase is encrypted via HTTPS (TLS 1.2+, enforced by Google)
Additional security measures:
- Cloud data is stored on Google's infrastructure with industry-standard security
- App backups to Google Cloud are disabled to prevent unintended data exposure
- Release builds use code obfuscation to protect against reverse engineering
- Firebase security rules prevent unauthorized access to user data
8. Children's Privacy
Outside the EU: MyDailyMemory is not directed at children under 13. We do not knowingly collect personal information from children under 13.
In the European Union: MyDailyMemory is not directed at children under 16 (or the age of digital consent in your country, if lower, as permitted by GDPR Article 8). The app requires users to confirm they are at least 13 years old during account creation.
If you are a parent or guardian and believe your child has provided us with personal data, please contact us and we will delete it promptly.
9. Permissions Used
| Permission | Reason |
|---|---|
| Camera | Take photos for your memories (optional) |
| Photo library / Read media images | Select existing photos for your memories |
| Notifications | Send daily reminders at your preferred time |
| Schedule exact alarm / Use exact alarm | Deliver daily reminders at the exact time you choose, even when the device is in low-power mode (Android only) |
| Receive boot completed | Re-arm scheduled reminders after the device reboots (Android only) |
| Vibration | Haptic feedback on interactions |
| Internet / Network state | Cloud sync, photo backup |
All permissions related to user content (Camera, Photo library, Notifications) are optional. The app works without granting them, with reduced functionality.
10. Cookies and Tracking Technologies
MyDailyMemory is a mobile application and does not use HTTP cookies. We use the following local storage mechanisms:
- SharedPreferences: Local key-value storage for app settings, game progress, and user preferences. This data stays on your device.
- Flutter Secure Storage: Encrypted local storage for the encryption key derived from your passphrase. This data stays on your device.
- Firebase services: Cloud storage as described in Section 3. Firebase may use its own internal mechanisms for session management.
We do not use any third-party analytics, tracking, behavioral profiling, or advertising SDKs.
11. Changes to This Policy
We may update this Privacy Policy from time to time. The "Last updated" date at the top will reflect the most recent revision. Continued use of the app after changes constitutes acceptance of the updated policy.
12. Data Controller & Contact
Data Controller: Alberto Bissacco (independent developer)
Email: privacy@mydailymemory.app
For any privacy-related questions, data access requests, deletion requests, or concerns, please contact us at the email above. We will respond within 30 days as required by GDPR.
Ultimo aggiornamento: 16 maggio 2026
MyDailyMemory ("noi", "l'app") è un'applicazione di diario visivo personale. Ci impegniamo a proteggere la tua privacy e ad essere trasparenti sui dati che raccogliamo.
1. Dati che raccogliamo
1.1 Dati che fornisci tu
| Tipo di dato | Dettagli | Finalità |
|---|---|---|
| Foto | Scattate con la fotocamera o selezionate dalla galleria | Salvare i tuoi ricordi quotidiani |
| Metadati dei ricordi | Titolo, descrizione, umore, etichette, stato preferito | Organizzare e arricchire i tuoi ricordi |
| Indirizzo email | Solo se crei un account | Autenticazione e recupero account |
| Nome visualizzato | Solo se accedi con Google | Mostrare il tuo nome nell'app |
| Feedback | Messaggi inviati tramite la funzione feedback | Migliorare l'app |
1.2 Dati generati automaticamente
| Tipo di dato | Finalità |
|---|---|
| Preferenze notifiche | Programmare i promemoria giornalieri all'orario preferito |
| Progressi di gioco | Monete, traguardi, acquisti nel negozio, sfide giornaliere |
| Timestamp dei salvataggi | Adattare il timing delle notifiche smart alle tue abitudini |
1.3 Dati che NON raccogliamo
- Non raccogliamo la tua posizione
- Non utilizziamo SDK di analytics, crash reporting o tracciamento
- Non vendiamo i tuoi dati a terze parti
2. Come vengono protetti i tuoi dati (E2E Encryption opzionale)
MyDailyMemory offre crittografia end-to-end opzionale con una password di backup scelta da te. Questa è una tua scelta:
- Se abiliti la crittografia: I tuoi dati vengono crittografati sul tuo dispositivo prima di raggiungere i nostri server. Lo sviluppatore non può leggerli—archiviazione a conoscenza zero.
- Se salti la crittografia: I tuoi dati vengono archiviati in testo semplice su Firebase. Lo sviluppatore può leggerli se necessario (ad es. per supporto o recupero account).
2.1 Dettagli della crittografia
- Algoritmo: AES-256-GCM con tag di autenticazione a 128 bit (crittografia autenticata: protegge sia riservatezza sia integrità). I dati più vecchi possono ancora essere letti tramite legacy AES-256-CBC per retrocompatibilità; i nuovi dati vengono sempre scritti con GCM.
- Derivazione della chiave: PBKDF2-HMAC-SHA256 con 100.000 iterazioni e salt casuale a 256 bit per utente (resiste agli attacchi brute-force)
- Cosa viene cifrato: Byte delle foto, titoli dei ricordi, descrizioni, umore (principale e per ogni foto extra), etichette/sticker, scelta della cornice, data di nascita
- Cosa NON viene cifrato: ID e data di creazione del ricordo, flag preferito, progressi di gioco (monete, traguardi, articoli del negozio), preferenze notifiche. Gli URL delle foto restituiti dal provider di storage sono memorizzati in chiaro ma i byte sottostanti sono cifrati: il solo URL non rivela il contenuto.
- Posizione della chiave: Derivata dalla tua password sul tuo dispositivo e cachata solo nello store sicuro della piattaforma (Android Keystore / iOS Keychain). Non lascia mai il tuo telefono e non viene mai caricata su alcun server.
2.2 Come funziona (se la abiliti)
Al primo accesso: Puoi facoltativamente impostare una password di backup. Se lo fai, l'app deriva una chiave di crittografia da essa utilizzando PBKDF2. Tutti i dati sensibili vengono quindi crittografati con questa chiave prima di essere inviati al cloud.
Su un nuovo dispositivo: Inserisci la stessa password di backup, la chiave viene ri-derivata e tutti i dati crittografati diventano leggibili solo per te.
⚠️ Se dimentichi la tua password: I tuoi dati nel cloud non possono essere recuperati—nessuno, nemmeno noi, ha la capacità di decifrarli. Perderai l'accesso a tutti i ricordi crittografati in modo permanente. Scrivi la tua password da qualche parte al sicuro.
Se scegli di NON abilitare la crittografia: Puoi saltare questo passaggio e continuare a usare l'app. I tuoi dati verranno archiviati in testo semplice e accessibili allo sviluppatore per scopi di supporto.
3. Sincronizzazione cloud e servizi di terze parti
Se crei un account (email/password o Google Sign-In), i dati vengono sincronizzati nel cloud. I file foto vengono archiviati in Supabase Storage (bucket privato, vedi elenco servizi nella Sezione 3); solo un riferimento di archiviazione (URL) viene conservato in Google Firebase / Firestore, mai i byte della foto stessa. Tutti gli altri metadati dei ricordi vengono archiviati su Firestore.
3.1 Se hai abilitato la crittografia (con password di backup):
- File foto (crittografati): Archiviati in Supabase Storage come blob crittografati — Supabase non vede mai un'immagine decifrabile
- Metadati dei ricordi (crittografati): Titoli, descrizioni, umore, etichette — archiviati su Firestore come testo crittografato
- Data di nascita (crittografata): Salvata solo come blob crittografato su Firestore
- Progressi di gioco (NON crittografati): Monete, traguardi, stato negozio, progresso sfide giornaliere
- Preferenze notifiche
Cosa vedono Firebase / Supabase: Solo dati incomprensibili per i dati sensibili. I dati crittografati sono privi di significato per Google, gli amministratori di Firebase, Supabase o chiunque non abbia la tua password di backup.
3.2 Se NON hai abilitato la crittografia (hai saltato l'impostazione della password):
- File foto (byte in chiaro): Archiviati in Supabase Storage — leggibili dall'infrastruttura Supabase
- Metadati dei ricordi (testo semplice): Titoli, descrizioni, umore, etichette — leggibili su Firestore
- Data di nascita (testo semplice): Leggibile su Firestore
- Progressi di gioco (non crittografati): Monete, traguardi, stato negozio, progresso sfide giornaliere
- Preferenze notifiche
Cosa vedono Firebase / Supabase: Tutti i tuoi dati personali in forma leggibile. Lo sviluppatore dell'app può accedervi e leggerli se necessario.
Servizi di terze parti utilizzati:
- Firebase Authentication (Google LLC, USA) — gestione account
- Cloud Firestore (Google LLC, USA) — metadati e impostazioni
- Supabase Storage (Supabase Inc., USA) — hosting dei file foto in un bucket privato. Gli upload sono autorizzati tramite Firebase Auth grazie all'integrazione third-party-auth di Supabase: ogni utente può solo leggere/scrivere/cancellare oggetti nella propria cartella (
users/{tuo-firebase-uid}/) tramite policy Row-Level Security. Le foto vengono cifrate end-to-end sul tuo dispositivo prima dell'upload (i byte cifrati sono caricati comeapplication/octet-stream; Supabase non vede mai una foto decifrabile). I metadati EXIF (GPS, seriale fotocamera) vengono rimossi prima della cifratura. L'accesso alle foto avviene solo tramite signed URL a breve durata (TTL 1 ora) — non esiste alcun link pubblico permanente. Privacy policy di Supabase: https://supabase.com/privacy. I trasferimenti transatlantici sono regolati da Clausole Contrattuali Standard (SCC). - Cloudinary (Cloudinary Ltd., USA / Israele) — legacy, sola lettura. Alcuni blob di foto storici caricati da versioni precedenti dell'app possono ancora trovarsi su Cloudinary mentre una migrazione in background trasparente li sposta su Supabase. L'app non effettua nuovi upload su Cloudinary. I blob esistenti sono cifrati E2E e illeggibili senza la tua passphrase. Privacy policy di Cloudinary: https://cloudinary.com/privacy.
- Google Sign-In (Google LLC, USA) — metodo di accesso opzionale
L'informativa sulla privacy di Google si applica a Firebase e Sign-In: https://policies.google.com/privacy
3.3 Trasferimenti internazionali di dati (utenti UE)
Firebase è gestito da Google LLC, con sede negli Stati Uniti. I tuoi dati potrebbero essere trasferiti e archiviati su server al di fuori dello Spazio Economico Europeo (SEE). Questi trasferimenti sono regolati dalle Clausole Contrattuali Standard (SCC) approvate dalla Commissione Europea. Se abiliti la crittografia E2E, i tuoi dati vengono crittografati prima del trasferimento, quindi Google non può accedere al loro contenuto indipendentemente dalla posizione del server.
Per ulteriori informazioni sui meccanismi di trasferimento dati di Google, vedi: https://policies.google.com/privacy
Modalità ospite
Puoi usare l'app senza creare un account. In modalità ospite, viene creata una sessione anonima Firebase con un identificatore casuale. I tuoi dati (ricordi, foto, impostazioni) vengono sincronizzati su Firebase sotto questo identificatore anonimo. Ti viene offerta l'opzione di impostare una password di backup per crittografare i tuoi dati, anche in modalità ospite. Se non crei un account, i tuoi dati non possono essere recuperati su un dispositivo diverso.
3.4 Base giuridica del trattamento (GDPR Articolo 6)
| Attività di trattamento | Base giuridica |
|---|---|
| Creazione account e autenticazione | Esecuzione del contratto (necessario per fornire il servizio) |
| Sincronizzazione cloud di ricordi, foto, impostazioni | Consenso (scegli tu di creare un account e sincronizzare) |
| Raccolta feedback (con userId/email) | Interesse legittimo (per migliorare l'app e rispondere agli utenti) |
| Anonimizzazione feedback su eliminazione account | Obbligo legale (GDPR diritto alla cancellazione) |
| Archiviazione progressi di gioco | Esecuzione del contratto (funzionalità core dell'app) |
4. Condivisione dei dati
Non vendiamo né cediamo i tuoi dati personali. Gli unici terzi che ricevono dati sono i fornitori di servizi tecnici elencati nella Sezione 3 (Firebase, Cloudinary, Google Sign-In).
L'accesso dello sviluppatore dipende dalla tua scelta di crittografia:
- Con crittografia abilitata: Nemmeno lo sviluppatore può leggere i tuoi dati sensibili. Google archivia solo testo cifrato, che è privo di significato senza la tua password di backup.
- Senza crittografia: Lo sviluppatore può accedere ai tuoi dati su Firebase se necessario (ad es. per il recupero account, richieste di supporto o applicazione delle politiche).
Feedback: I messaggi di feedback includono il tuo ID utente e indirizzo email così che lo sviluppatore possa ricontattarti se necessario. Quando elimini il tuo account, tutti i feedback vengono anonimizzati (ID utente e email vengono rimossi).
5. Conservazione dei dati
| Tipo di dato | Periodo di conservazione | Metodo di cancellazione |
|---|---|---|
| Metadati ricordi (Firestore) | Fino alla cancellazione del ricordo o dell'account | Cancellazione immediata da Cloud Firestore |
| Blob foto cifrati (Supabase Storage) | Fino alla cancellazione del ricordo o dell'account | Cancellazione immediata tramite chiamata di delete protetta da Row-Level Security: quando elimini un ricordo il blob corrispondente viene rimosso nella stessa operazione; quando elimini l'account ogni blob nella tua cartella viene cancellato prima che l'auth account stesso venga eliminato. |
| Blob foto cifrati (legacy Cloudinary) | Solo durante la migrazione in background | Il sweep di auto-migrazione sposta questi blob su Supabase poco dopo la successiva apertura dell'app. Eventuali orfani residui sono illeggibili senza la tua passphrase e vengono rimossi periodicamente tramite una pulizia backend manuale. |
| Ricordi e foto (locale) | Fino alla cancellazione, disinstallazione o pulizia dati dell'app | Rimossi dall'archivio del dispositivo |
| Dati account (email, UID) | Fino all'eliminazione dell'account | Cancellazione immediata da Firebase Authentication |
| Progressi di gioco | Fino all'eliminazione dell'account | Cancellazione immediata da Firestore |
| Feedback (con ID utente) | Conservati a tempo indeterminato; anonimizzati immediatamente all'eliminazione dell'account | ID utente e email impostati a null; contenuto del messaggio conservato |
| Metadati crittografia (salt, token) | Fino all'eliminazione dell'account | Eliminati con i dati dell'account |
Quando elimini il tuo account, ogni blob foto cifrato nella tua cartella Supabase Storage viene cancellato per primo (usando il tuo token Firebase per autorizzare la delete via RLS), poi tutti i documenti Firestore e il record di Firebase Authentication vengono rimossi. Eventuali blob residui sul legacy Cloudinary diventano orfani (illeggibili senza la tua passphrase) e vengono eliminati tramite la pulizia backend periodica. Questa azione è irreversibile.
6. I tuoi diritti
Hai il diritto di:
- Accedere ai tuoi dati — tutti i tuoi dati sono visibili nell'app; puoi anche esportare tutti i tuoi dati tramite il pulsante "Esporta i miei dati (GDPR)" nelle Impostazioni
- Cancellare i tuoi dati — usa "Elimina account" nelle Impostazioni per rimuovere tutti i dati dal cloud (Firestore, Authentication, più la pulizia programmata di Cloudinary descritta nella Sezione 5)
- Rettificare i tuoi dati — modifica o elimina qualsiasi ricordo in qualsiasi momento
- Portabilità dei dati — esporta i tuoi dati in un formato standard tramite la funzione di esportazione nell'app
- Revocare il consenso — disconnettiti per interrompere la sincronizzazione cloud; disinstalla per rimuovere tutti i dati locali
- Opporti al trattamento — contattaci per opporti ad attività di trattamento specifiche
6.1 Per utenti UE (GDPR)
In base al Regolamento Generale sulla Protezione dei Dati (UE) 2016/679, hai il diritto di presentare un reclamo alla tua autorità nazionale di controllo della protezione dei dati se ritieni che i tuoi dati siano stati trattati illecitamente.
- Italia: Garante per la Protezione dei Dati Personali — www.gpdp.it
Per un elenco di tutte le autorità di controllo UE, visita: European Data Protection Board
6.2 Per utenti California (CCPA)
In base al California Consumer Privacy Act, hai il diritto di sapere quali informazioni personali vengono raccolte, richiedere la cancellazione e rinunciare alla "vendita" delle informazioni personali. Non vendiamo le tue informazioni personali. Per esercitare i tuoi diritti, contattaci all'email indicata sotto.
7. Sicurezza dei dati
Crittografia a riposo (conoscenza zero):
- I dati sensibili (byte delle foto, titoli, descrizioni, umore, sticker, scelta cornice, data di nascita) vengono crittografati sul tuo dispositivo utilizzando AES-256-GCM (crittografia autenticata con tag a 128 bit) prima di lasciare il tuo telefono. I metadati EXIF delle foto (GPS, seriale fotocamera, timestamp originale) vengono rimossi prima della cifratura.
- La chiave di crittografia viene derivata dalla tua password di backup utilizzando PBKDF2-HMAC-SHA256 con 100.000 iterazioni e salt casuale a 256 bit per utente, rendendo gli attacchi brute-force computazionalmente non fattibili per password sufficientemente lunghe
- La chiave non lascia mai il tuo dispositivo. È cachata solo nello store sicuro della piattaforma (Android Keystore / iOS Keychain) e viene cancellata al sign-out
- Anche se qualcuno ottenesse accesso a Firebase o Cloudinary, vedrebbe solo blob crittografati senza alcun modo per decifrarli senza la tua password di backup
Crittografia in transito:
- Tutte le comunicazioni con Firebase sono crittografate tramite HTTPS (TLS 1.2+, garantito da Google)
Misure di sicurezza aggiuntive:
- I dati cloud sono conservati sull'infrastruttura Google con sicurezza di livello industriale
- I backup dell'app su Google Cloud sono disabilitati per prevenire esposizioni involontarie
- Le build di rilascio utilizzano l'offuscamento del codice per proteggere dal reverse engineering
- Le regole di sicurezza Firebase impediscono l'accesso non autorizzato ai dati dell'utente
8. Privacy dei minori
Fuori dall'UE: MyDailyMemory non è destinata a minori di 13 anni. Non raccogliamo consapevolmente informazioni personali da minori di 13 anni.
Nell'Unione Europea: MyDailyMemory non è destinata a minori di 16 anni (o l'età del consenso digitale nel tuo Paese, se inferiore, come consentito dall'Art. 8 GDPR). L'app richiede agli utenti di confermare di avere almeno 13 anni durante la creazione dell'account.
Se sei un genitore o tutore e ritieni che tuo figlio ci abbia fornito dati personali, contattaci e li elimineremo tempestivamente.
9. Permessi utilizzati
| Permesso | Motivo |
|---|---|
| Fotocamera | Scattare foto per i tuoi ricordi (opzionale) |
| Libreria foto / Lettura immagini | Selezionare foto esistenti per i tuoi ricordi |
| Notifiche | Inviare promemoria giornalieri all'orario preferito |
| Schedule exact alarm / Use exact alarm | Recapitare i promemoria all'orario esatto scelto, anche in modalità a basso consumo (solo Android) |
| Receive boot completed | Ripristinare i promemoria pianificati dopo un riavvio del dispositivo (solo Android) |
| Vibrazione | Feedback aptico sulle interazioni |
| Internet / Stato rete | Sincronizzazione cloud, backup foto |
Tutti i permessi legati ai contenuti utente (Fotocamera, Libreria foto, Notifiche) sono opzionali. L'app funziona anche senza concederli, con funzionalità ridotte.
10. Cookie e tecnologie di tracciamento
MyDailyMemory è un'applicazione mobile e non utilizza cookie HTTP. Utilizziamo i seguenti meccanismi di archiviazione locale:
- SharedPreferences: Archiviazione locale chiave-valore per le impostazioni dell'app, i progressi di gioco e le preferenze utente. Questi dati restano sul tuo dispositivo.
- Flutter Secure Storage: Archiviazione locale crittografata per la chiave di crittografia derivata dalla tua password di backup. Questi dati restano sul tuo dispositivo.
- Servizi Firebase: Archiviazione cloud come descritto nella Sezione 3. Firebase può utilizzare i propri meccanismi interni per la gestione delle sessioni.
Non utilizziamo SDK di analytics, tracciamento, profilazione comportamentale o pubblicità di terze parti.
11. Modifiche a questa informativa
Potremmo aggiornare questa Informativa sulla Privacy di tanto in tanto. La data di "Ultimo aggiornamento" in alto riflettera la revisione più recente. L'uso continuato dell'app dopo le modifiche costituisce accettazione dell'informativa aggiornata.
12. Titolare del trattamento e contatti
Titolare del trattamento: Alberto Bissacco (sviluppatore indipendente)
Email: privacy@mydailymemory.app
Per qualsiasi domanda sulla privacy, richieste di accesso ai dati, richieste di cancellazione o preoccupazioni, contattaci all'email sopra indicata. Risponderemo entro 30 giorni come richiesto dal GDPR.