Add the Calendula app privacy policy
This commit is contained in:
221
src/pages/calendula/privacy.astro
Normal file
221
src/pages/calendula/privacy.astro
Normal file
@@ -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';
|
||||
---
|
||||
|
||||
<BaseLayout
|
||||
title="Calendula — Privacy Policy"
|
||||
description="Privacy policy for the Calendula Android calendar app. No data collection, no tracking, no internet permission."
|
||||
width="narrow"
|
||||
>
|
||||
<article class="prose">
|
||||
<h1 class="page-title">Privacy Policy — Calendula</h1>
|
||||
|
||||
<p>
|
||||
<strong>Last updated:</strong> {lastUpdated}<br />
|
||||
Applies to the Android app <strong>Calendula</strong>
|
||||
(package <code>de.jeanlucmakiola.calendula</code>), all versions and all
|
||||
distribution channels.
|
||||
</p>
|
||||
|
||||
<h2>In short</h2>
|
||||
<p>
|
||||
Calendula collects nothing, sends nothing, and has no user accounts.
|
||||
It has <strong>no internet permission at all</strong> — 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.
|
||||
</p>
|
||||
|
||||
<h2>1. Controller</h2>
|
||||
<p>
|
||||
{LEGAL.business}<br />
|
||||
{LEGAL.street}<br />
|
||||
{LEGAL.city}<br />
|
||||
Email: <a href={`mailto:${LEGAL.email}`}>{LEGAL.email}</a>
|
||||
</p>
|
||||
|
||||
<h2>2. No data collection</h2>
|
||||
<p>
|
||||
Calendula contains <strong>no analytics, no tracking, no advertising, no
|
||||
crash-reporting SDK and no third-party services of any kind</strong>. No
|
||||
user profile is created, no identifier is generated, and no data is shared
|
||||
with or sold to anyone.
|
||||
</p>
|
||||
<p>
|
||||
The app does not request the <code>android.permission.INTERNET</code> 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 <a href="https://codeberg.org/jlmakiola/calendula" rel="noopener">source code</a>.
|
||||
</p>
|
||||
|
||||
<h2>3. Data Calendula accesses on your device</h2>
|
||||
<p>
|
||||
All of the following is processed <strong>locally on your device only</strong>.
|
||||
None of it is transmitted, and none of it is stored by the developer.
|
||||
</p>
|
||||
|
||||
<h3>Calendar data</h3>
|
||||
<p>
|
||||
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 <strong>no database of
|
||||
its own</strong> — your events live in the system calendar, exactly where
|
||||
they lived before you installed Calendula, and they remain there if you
|
||||
uninstall it.
|
||||
</p>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
|
||||
<h3>Contacts (optional)</h3>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
|
||||
<h3>Notifications</h3>
|
||||
<p>
|
||||
Reminders are displayed as local notifications on your device. Nothing is
|
||||
sent to a push service.
|
||||
</p>
|
||||
|
||||
<h3>Files</h3>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
|
||||
<h3>App settings</h3>
|
||||
<p>
|
||||
Your preferences (view options, theme, reminder defaults and similar) are
|
||||
stored locally on your device and are removed when you uninstall the app.
|
||||
</p>
|
||||
|
||||
<h2>4. Crash reports — the only case where data can leave your device</h2>
|
||||
<p>
|
||||
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. <strong>You see the full content, you decide whether to submit
|
||||
it, and you can edit or discard it.</strong>
|
||||
</p>
|
||||
<p>Such a report contains:</p>
|
||||
<ul>
|
||||
<li>app version,</li>
|
||||
<li>Android version,</li>
|
||||
<li>device manufacturer and model,</li>
|
||||
<li>your device language,</li>
|
||||
<li>the timestamp,</li>
|
||||
<li>and the technical stack trace.</li>
|
||||
</ul>
|
||||
<p>
|
||||
It contains <strong>no</strong> event data, <strong>no</strong> contacts
|
||||
and <strong>no</strong> personal identifiers.
|
||||
</p>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
|
||||
<h2>5. External links</h2>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
|
||||
<h2>6. Permissions and why they exist</h2>
|
||||
<ul>
|
||||
<li>
|
||||
<code>READ_CALENDAR</code>, <code>WRITE_CALENDAR</code> — display and
|
||||
edit your events; the core function.
|
||||
</li>
|
||||
<li><code>POST_NOTIFICATIONS</code> — show reminders.</li>
|
||||
<li>
|
||||
<code>READ_CONTACTS</code> — optional, only for the “Contact special
|
||||
dates” feature.
|
||||
</li>
|
||||
<li>
|
||||
<code>USE_EXACT_ALARM</code>, <code>SCHEDULE_EXACT_ALARM</code> — deliver
|
||||
reminders at the exact time, including after snoozing.
|
||||
</li>
|
||||
<li>
|
||||
<code>RECEIVE_BOOT_COMPLETED</code> — re-register pending reminders after
|
||||
a restart.
|
||||
</li>
|
||||
<li>
|
||||
<code>REQUEST_IGNORE_BATTERY_OPTIMIZATIONS</code> — only to open the
|
||||
system dialog for the “Reliable delivery” setting.
|
||||
</li>
|
||||
<li>
|
||||
<code>WAKE_LOCK</code>, <code>FOREGROUND_SERVICE</code>, <code>ACCESS_NETWORK_STATE</code>
|
||||
— required by the Android system component used for scheduled background
|
||||
work (WorkManager).
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
<code>ACCESS_NETWORK_STATE</code> allows reading <em>whether</em> a network
|
||||
connection exists — it does <strong>not</strong> permit using one.
|
||||
Without <code>INTERNET</code>, no connection is possible.
|
||||
</p>
|
||||
|
||||
<h2>7. Distribution channels</h2>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
|
||||
<h2>8. Children</h2>
|
||||
<p>
|
||||
Calendula is suitable for all ages. Since it collects no data at all, no
|
||||
data of children is processed either.
|
||||
</p>
|
||||
|
||||
<h2>9. Your rights</h2>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
|
||||
<h2>10. Changes to this policy</h2>
|
||||
<p>
|
||||
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.
|
||||
</p>
|
||||
</article>
|
||||
</BaseLayout>
|
||||
Reference in New Issue
Block a user