From 4181ef35baf0e4c5fe99561a99e66dc6a1db237c Mon Sep 17 00:00:00 2001 From: Jean-Luc Makiola Date: Tue, 28 Jul 2026 19:01:29 +0200 Subject: [PATCH] Add the Calendula app privacy policy --- src/pages/calendula/privacy.astro | 221 ++++++++++++++++++++++++++++++ 1 file changed, 221 insertions(+) create mode 100644 src/pages/calendula/privacy.astro diff --git a/src/pages/calendula/privacy.astro b/src/pages/calendula/privacy.astro new file mode 100644 index 0000000..a9e5513 --- /dev/null +++ b/src/pages/calendula/privacy.astro @@ -0,0 +1,221 @@ +--- +import BaseLayout from '../../layouts/BaseLayout.astro'; +import { LEGAL } from '../../consts'; + +// App privacy policy for Calendula — required as a public URL by the Google +// Play Console (mandatory for every app) and linked from the app's About card. +// Deliberately separate from /datenschutz, which covers this website only. +// +// Kept in English because SITE.lang is 'en' and Play's default store listing is +// en-US; /datenschutz and /impressum stay German for legal reasons. +// +// Source of truth for the facts below: the Calendula repository. If the app's +// permissions or data paths change, update this page and the "Last updated" +// date. The claim "no INTERNET permission" is verifiable via +// `aapt2 dump permissions` on any released APK. +const lastUpdated = '28 July 2026'; +--- + + +
+

Privacy Policy — Calendula

+ +

+ Last updated: {lastUpdated}
+ Applies to the Android app Calendula + (package de.jeanlucmakiola.calendula), all versions and all + distribution channels. +

+ +

In short

+

+ Calendula collects nothing, sends nothing, and has no user accounts. + It has no internet permission at all — the app is + technically incapable of transmitting your data anywhere. Everything it + shows you is read from the calendars that already exist on your device. +

+ +

1. Controller

+

+ {LEGAL.business}
+ {LEGAL.street}
+ {LEGAL.city}
+ Email: {LEGAL.email} +

+ +

2. No data collection

+

+ Calendula contains no analytics, no tracking, no advertising, no + crash-reporting SDK and no third-party services of any kind. No + user profile is created, no identifier is generated, and no data is shared + with or sold to anyone. +

+

+ The app does not request the android.permission.INTERNET permission. + Without it, Android prevents the app from opening any network connection. + This is verifiable: inspect the permission list of any released APK, or read + the source code. +

+ +

3. Data Calendula accesses on your device

+

+ All of the following is processed locally on your device only. + None of it is transmitted, and none of it is stored by the developer. +

+ +

Calendar data

+

+ Calendula is a viewer and editor for the calendars Android already manages. + It reads and writes events, reminders and calendar settings through + Android's system calendar provider. The app keeps no database of + its own — your events live in the system calendar, exactly where + they lived before you installed Calendula, and they remain there if you + uninstall it. +

+

+ Note: if one of those system calendars is itself synchronised with an + online account (for example a Google account, or a CalDAV server via + DAVx5), that synchronisation is performed by Android and that other app — + not by Calendula. The privacy policy of the respective provider applies + to it. +

+ +

Contacts (optional)

+

+ The “Contact special dates” feature reads birthdays and anniversaries from + your contacts and mirrors them one-way into a local calendar, so they + appear alongside your other events. This feature is switched off by + default, the contacts permission is requested only when you enable it, and + it is never requested at startup. Contacts are only ever read, never + modified, and the data does not leave your device. +

+ +

Notifications

+

+ Reminders are displayed as local notifications on your device. Nothing is + sent to a push service. +

+ +

Files

+

+ When you import or export an ICS file, Calendula reads or writes exactly + the file you select through Android's system file picker. The optional + automatic backup writes an ICS export to the folder you choose. The app has + no access to other files. +

+ +

App settings

+

+ Your preferences (view options, theme, reminder defaults and similar) are + stored locally on your device and are removed when you uninstall the app. +

+ +

4. Crash reports — the only case where data can leave your device

+

+ If Calendula crashes, it offers to report the problem. Nothing is sent + automatically. The report is copied to your clipboard and your browser is + opened with the project's issue tracker, the text + pre-filled. You see the full content, you decide whether to submit + it, and you can edit or discard it. +

+

Such a report contains:

+
    +
  • app version,
  • +
  • Android version,
  • +
  • device manufacturer and model,
  • +
  • your device language,
  • +
  • the timestamp,
  • +
  • and the technical stack trace.
  • +
+

+ It contains no event data, no contacts + and no personal identifiers. +

+

+ If you choose to submit it, the report becomes a public issue on the + project's issue tracker at Codeberg, operated by Codeberg e. V. + Their privacy policy then applies to that submission. +

+ +

5. External links

+

+ The settings screen contains links to the source code, the licence, the + issue tracker and a voluntary donation page (Ko-fi). Following one of these + links opens your browser and leaves the app; the privacy policy of the + respective website then applies. Calendula transmits no data of yours in + the process — it only opens the address. +

+ +

6. Permissions and why they exist

+
    +
  • + READ_CALENDAR, WRITE_CALENDAR — display and + edit your events; the core function. +
  • +
  • POST_NOTIFICATIONS — show reminders.
  • +
  • + READ_CONTACTS — optional, only for the “Contact special + dates” feature. +
  • +
  • + USE_EXACT_ALARM, SCHEDULE_EXACT_ALARM — deliver + reminders at the exact time, including after snoozing. +
  • +
  • + RECEIVE_BOOT_COMPLETED — re-register pending reminders after + a restart. +
  • +
  • + REQUEST_IGNORE_BATTERY_OPTIMIZATIONS — only to open the + system dialog for the “Reliable delivery” setting. +
  • +
  • + WAKE_LOCK, FOREGROUND_SERVICE, ACCESS_NETWORK_STATE + — required by the Android system component used for scheduled background + work (WorkManager). +
  • +
+

+ ACCESS_NETWORK_STATE allows reading whether a network + connection exists — it does not permit using one. + Without INTERNET, no connection is possible. +

+ +

7. Distribution channels

+

+ Calendula is distributed via F-Droid, Obtainium, a self-hosted repository + and, where applicable, the Google Play Store. When you download or update + the app, the operator of that channel processes data (such as your IP + address) under their own privacy policy. This is outside the developer's + control and unrelated to the app's own behaviour. +

+ +

8. Children

+

+ Calendula is suitable for all ages. Since it collects no data at all, no + data of children is processed either. +

+ +

9. Your rights

+

+ Because the developer processes no personal data of yours, there is no + stored data to which rights of access, rectification, erasure, + restriction, data portability or objection (Art. 15–21 GDPR) could + apply. You may nevertheless contact the address above at any time with any + question. You also have the right to lodge a complaint with a supervisory + authority. +

+ +

10. Changes to this policy

+

+ Should the app's functionality change in a way that affects data + processing, this policy will be updated and the date at the top adjusted. + The version history is publicly traceable in the project's source + repository. +

+
+