Film Recipes

Privacy Policy

Effective date: September 28, 2026

Film Recipes: Color Cards (package app.filmode.recipes) is an Android app published by FightTech VN. In short: your photos are processed on your phone and never uploaded, and there is no account. The app sends anonymous usage counts and crash reports to Google's Firebase, which you can switch off in Settings, and talks to Google Play for purchases. There are no ads, no advertising ID, and we do not sell any data.

What the app does

Film Recipes keeps colour recipes (short lists of camera-style colour settings) as cards. It shows each recipe on a preview photo, applies a recipe to photos you choose, and lets you share a recipe as a card image with a QR code, as a link or as text. All image processing (previews, the before-and-after comparison, full-resolution photos, recipe cards and .cube files) runs on your phone's own processor and graphics chip. There is no cloud processing, no account and no sign-in. Nothing the app sends over the internet contains your photos or anything taken from them.

Permissions the app declares

This is every permission in the app's final (merged) manifest, including the ones Google's libraries add. On Android 10 and newer the app never shows a permission prompt. On Android 8 and 9 it asks once for storage access, the first time you save a photo or a card (see below).

No camera, no photo library. The app does not declare CAMERA, READ_MEDIA_IMAGES, READ_MEDIA_VIDEO or READ_EXTERNAL_STORAGE, and it cannot browse your gallery. Photos come in through Android's photo picker, which gives the app only the photos you choose. .cube files come in through the system file picker in the same way. Scanning a QR code uses Google's scanner, which runs in Google Play services, not in the app (see below).

The app declares no location, microphone, contacts, phone, calendar or SMS permission, and no "all files access". It also declares no advertising permission: AD_ID and the Android Ad Services permissions (ACCESS_ADSERVICES_AD_ID, ACCESS_ADSERVICES_ATTRIBUTION) are explicitly removed from the build, and advertising-ID collection is switched off in the analytics SDK, so the app cannot read your advertising identifier.

Your photos

The preview photo. Recipes are previewed on one photo. Until you choose your own, that is one of the eight sample photos built into the app (see sample photos). If you pick a photo of your own, the app keeps a reduced copy of it (about 1,600 pixels on the long edge) in its private storage on your phone, which other apps cannot read, so the previews still work next time. Choosing a sample photo again deletes that copy. Your original photo is not changed, moved or deleted.

Applying a recipe. When you apply a recipe, the app reads each photo you chose, makes a new picture from it at full resolution on your phone, and saves it as a new JPEG file in Pictures/Film Recipes on your phone's shared storage, where your gallery and other apps can see it. The original is never changed. From the original's EXIF metadata the new file keeps only the capture date and time (and its time-zone offset); it gets an orientation tag and the software name "Film Recipes". Nothing else is copied: no GPS location, no camera or lens serial numbers.

Recipe cards. A recipe card is an image made on your phone from the recipe and the current preview photo. Save writes it to Pictures/Film Recipes; Share card places it in the app's private cache and hands it to the app you choose in Android's share sheet. Where it goes after that is your choice; the app sends it nowhere by itself.

Sample photos. The eight sample photos are winners of Wiki Loves Earth, published on Wikimedia Commons under Creative Commons licences. They are stored inside the app, so showing them needs no download. Their authors and licences are listed in the app under Settings → About → Photo credits; tapping one there opens its Wikimedia Commons page in your browser.

Your own recipes, the sample photo you chose and your settings are stored in the app's private storage on your phone.

What a recipe code contains. A recipe's QR code, link and text are made on your phone and contain only the recipe's settings (base tone, grain, white balance, dynamic range and so on), its name and, if you typed one, the author name you chose. They contain no photo, no account or device identifier and no location. Anyone who can see a code or a link can read those settings; where you show or send them is your choice.

Recipe links. A link looks like https://filmode-recipes.web.app/r#1.…, with the recipe after the #. On a phone with Film Recipes installed, Android opens the link in the app directly. Opened in a web browser, it loads a page of this website that reads the recipe with a script in your browser: a browser never sends the part after the # to the server, so this website receives only an ordinary page request, and never the recipe, its name or its author. The page's Open in Film Recipes button hands the recipe to the app on the same phone, not to any server.

Scanning a QR code. Scanning uses Google's code scanner, which is part of Google Play services. It opens its own camera screen, processes the camera image on your phone, and returns only the decoded text to Film Recipes. The app never receives the camera image and needs no camera permission. Google Play services may download the scanner module ahead of your first scan, and Google may receive diagnostic information about the scanner itself, under the Google Privacy Policy.

Pasting and sharing to the app. Text you paste into the app, or share to it from another app, is read on your phone to find a recipe in it. It is not stored unless you save the recipe, and it is never sent anywhere.

.cube files

.cube files you import are converted on your phone and kept in the app's private storage, where you can delete them. With Pro you can export a recipe as a .cube file, which the app writes to its private cache and hands to the app you choose in Android's share sheet.

Applied photos and recent recipes

So you can come back to a photo, compare it with the original and apply the same recipe again, the app keeps a history on your phone. You find it in the library's Recent tab, under Settings → History, and after a batch is applied. It stays on your phone: it is kept in the app's private storage, is left out of Android backup and device transfer, and is never uploaded.

To clear it: use the clear button at the top of the applied photos list, or Clear history under Settings → History, or remove a single photo from its page. This deletes the list, both small copies of each photo and the recent recipes. Photos saved in Pictures/Film Recipes stay; if you delete one from your gallery, its history entry shows it as missing until you remove it. Uninstalling the app or clearing its storage also deletes the whole history.

Analytics and crash reporting

The app uses Google Analytics for Firebase and Firebase Crashlytics, both provided by Google, to learn which features get used and to fix crashes. Both are on by default. Both stop when you switch off Settings → Send usage and crash reports, and the choice is remembered across launches.

What the app never sends: your photos or any part of one, thumbnails, file names, a recipe's name, author or text, what a QR code or link contains, anything you paste, the names or contents of .cube files, your location, your advertising identifier, your name, your email or any account identifier.

This data is processed by Google on our behalf, under the Firebase privacy and security terms. It is used only to improve the app: never for advertising, never combined with other data to identify you, and never sold.

Every event the app sends

Each event is a name and a few values. Built-in recipes are identified by their catalogue number (b01–b16); your own recipes are never identified.

EventWhenValues sent with it
screen_viewA screen opensScreen name: library, detail, apply, card, add, settings, credits, paywall, history (the applied photos list) or history_photo (one applied photo)
recipe_openA recipe is openedBuilt-in, your own or added (scanned, pasted or from a link); the catalogue number if built in; whether it is a Pro recipe
recipe_saveA recipe is saved to MineWhether it started from a built-in, your own or an added recipe; new or updated; the name of its base tone (for example amber), or my_lut for your own .cube, or none
recipe_deleteOne of your recipes is deletedNone
photo_pickYou pick a photoWhether it could be read; for applying, how many photos
photo_sampleYou choose a sample photoWhich of the eight sample photos
apply_startApplying startsNumber of photos; built-in, your own or added recipe; whether Pro is active
apply_doneApplying endsPhotos saved; photos that failed; seconds taken; whether you cancelled
card_shareA recipe card or text is saved, shared or copiedWhich (save, image, copy, text); for saving, whether it worked
recipe_importA recipe is added by QR code, link, pasting or sharingHow (qr, link, text for pasted text, shared from another app); the result (read, needs a base tone, not a recipe, made by a newer version, scan cancelled, scanner unavailable); how many settings were read
cube_importA .cube file is importedThe result (ok, wrong file type, failed)
cube_exportA recipe is exported as .cubeThe result (ok, failed)
history_openYou open the applied photos listWhere from (recent for the library’s Recent tab, apply after applying, or settings)
history_reuseYou apply or open a recipe again from the historyKind (recipe); apply or open; the catalogue number if built in; where from (the list or a photo’s page)
history_deleteYou remove a photo from the history or clear itOne or all; how many entries; where from (a photo’s page, the list or Settings)
settings_reportsYou turn the reports switch on or offOn or off (switching off is the last event sent)
paywall_viewThe Pro screen opensWhat led there (pro_recipe with that recipe’s catalogue number, own_limit, batch_limit, cube_export or settings)
paywall_plan_selectYou select a planProduct ID; offer ID (the Google Play discount offer, such as a launch sale, or none)
paywall_redeemYou tap Redeem codeWhat led to the Pro screen
paywall_dismissThe Pro screen closesWhat led there; seconds it was open; the selected product ID and offer ID
purchase_startA purchase startsProduct ID; offer ID; what led to it
purchaseA purchase completesProduct ID; offer ID; what led to it; price and currency as shown by Google Play; whether it began with a free trial
purchase_cancelYou cancel in Google Play's purchase screenProduct ID; offer ID; what led to it
purchase_failA purchase failsProduct ID; offer ID; the reason (Google Play unavailable, the purchase failed verification, or Google Play’s error code)
purchase_restoreYou tap Restore purchasesThe result (restored, none found, error)
pro_stateEach time the app checks your purchase with Google Play (when the app opens or comes back to the screen, and on restore)Whether Pro is active; the product ID

In addition, every usage report carries the user property app_variant = recipes, and every crash report carries the keys app = recipes and where, the part of the app where a recovered error happened: apply_photo, apply_batch, scanner, cube_export, preview or card.

Data we collect

Only the anonymous usage counts and crash reports described above, which we see as totals and individual crash reports in the Firebase console. We, FightTech VN, hold no database of users, and we never see your photos, your recipes or your settings. There is no account system and no newsletter. If you email us, we receive what you choose to write and use it only to answer you.

This website (filmode-recipes.web.app) is hosted on Google's Firebase Hosting. It sets no cookies, runs no analytics or tracking, and loads nothing from other websites. Like any web server, the hosting service processes your IP address and browser details to deliver the pages, and may keep them briefly in routine logs.

Purchases

Film Recipes Pro (all 16 recipes, unlimited recipes of your own, 100 photos per batch and .cube export) is sold as a monthly or yearly subscription, or a one-time lifetime purchase, through Google Play Billing. Google processes the payment under the Google Privacy Policy; your card details and billing address are never given to us or to the app. As the seller, Google Play Console shows us the order record for each purchase (order ID, product, date, price and country), which we use only for refunds, tax and support, not to identify or contact you. The app checks the purchase on your phone and remembers the result locally; it sends nothing about it to us apart from the anonymous purchase events listed above. Everything outside Pro is free.

Third parties

No data is sold or shared for advertising. The only other company involved is Google, as a service provider: it runs Firebase (the usage counts and crash reports, as our processor, and the hosting of this website), Google Play Billing (purchases) and the code scanner in Google Play services. Google never receives your photos from the app.

Android backup

If you use Android's own backup, or move to a new phone with Android's transfer tool, Android may include the app's private data (your recipes, imported .cube files, settings and the preview photo's reduced copy) in a backup stored in your Google account or copied to your new phone. That is done by Android and Google under your account and its settings; we have no access to it. The history of applied photos, with its small copies, and the recent recipes are left out of both.

Retention and deletion

Your recipes, settings, imported .cube files, preview photo and history live on your phone and are removed when you uninstall the app or clear its storage; you can also clear the history on its own (see Applied photos and recent recipes). Photos and cards you saved are yours and stay in Pictures/Film Recipes until you delete them.

Firebase Crashlytics keeps crash reports for 90 days. Google Analytics keeps event data for the retention period set in our project, at most 14 months, after which only aggregated totals remain. Switching off Send usage and crash reports stops any new data. Clearing the app's storage or reinstalling it creates a new random app-instance ID, so earlier data can no longer be linked to your phone.

To delete your Film Recipes data:

  1. In the app, open Settings and switch off Send usage and crash reports, so nothing new is sent.
  2. Uninstall Film Recipes, or clear its storage in Android's Settings → Apps → Film Recipes → Storage → Clear storage. This deletes your recipes, settings, .cube files, preview photo and history from the phone and resets the random app-instance ID. Photos you saved in Pictures/Film Recipes stay until you delete them.
  3. To have usage counts and crash reports already sent deleted too, email trunghieu4121993@gmail.com with the subject "Film Recipes data deletion". We will delete them from Firebase within 30 days and reply to confirm. Otherwise they are removed automatically after the periods above.

You can cancel a subscription or ask for a refund in the Google Play app under Payments & subscriptions. Google Play keeps its own order records under the Google Privacy Policy. We keep nothing else about you.

Security

Your recipes, preview photo and history sit in the app's private storage, which Android keeps out of reach of other apps. Reports to Firebase and all Google Play traffic are encrypted in transit (HTTPS). Purchases are verified with Google Play on the phone. No system is perfectly secure, but because your photos never leave the phone, there is no copy of them on any server of ours to leak.

Children

Film Recipes is not directed at children under 13, and we do not knowingly collect personal information from children. If you believe a child has sent us personal information, for example by email, contact us and we will delete it.

Changes to this policy

If the app's data practices change, this page will be updated and the date above revised before the new version is released. If a future version adds a permission, an SDK or an event, it will be listed here first. Written on September 28, 2026 for the first release of Film Recipes: Color Cards (version 1.0.0).

Contact

FightTech VN, Vietnam. Questions about this policy, or a request about your data? Email trunghieu4121993@gmail.com.