# Conflicts: # app/build.gradle.kts # app/src/main/java/de/jeanlucmakiola/agendula/data/di/DataModule.kt # app/src/main/java/de/jeanlucmakiola/agendula/data/di/Qualifiers.kt # app/src/main/java/de/jeanlucmakiola/agendula/ui/export/ExportScreen.kt # app/src/main/java/de/jeanlucmakiola/agendula/ui/settings/SettingsScreen.kt # docs/PRIVACY.md # gradle/libs.versions.toml
96 lines
4.8 KiB
Markdown
96 lines
4.8 KiB
Markdown
<div align="center">
|
|
|
|
<h1>Agendula</h1>
|
|
|
|
<p><strong>A modern Material 3 Expressive task app for Android.</strong><br>
|
|
Keeps your tasks on your device, or on top of a tasks provider you already use.
|
|
Open standards, no account required.</p>
|
|
|
|
<a href="https://codeberg.org/jlmakiola/agendula/actions"><img src="https://codeberg.org/jlmakiola/agendula/actions/workflows/ci.yaml/badge.svg?branch=main" alt="CI"></a>
|
|
<img src="https://img.shields.io/badge/Android-10%2B-3DDC84?logo=android&logoColor=white" alt="Android 10+">
|
|
<img src="https://img.shields.io/badge/Kotlin-Compose-7F52FF?logo=kotlin&logoColor=white" alt="Kotlin + Compose">
|
|
<img src="https://img.shields.io/badge/Material%203-Expressive-4285F4" alt="Material 3 Expressive">
|
|
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-green" alt="MIT License"></a>
|
|
|
|
</div>
|
|
|
|
Agendula is the task-list sibling to [Calendula](https://codeberg.org/jlmakiola/calendula).
|
|
Where Calendula is a pure front-end over Android's `CalendarContract`, Agendula
|
|
keeps its own store, designed around RFC 5545's `VTODO` — the same tasks DAVx5
|
|
(and SmoothSync, DecSync, …) sync out of your CalDAV server. It can also read and
|
|
write a tasks provider you already have, for anyone already syncing that way.
|
|
|
|
The name rhymes with its sibling on purpose: **Agendula** is *agenda* — Latin for
|
|
“things to be done” — given Calendula's `-ula` ending. Calendula keeps your days;
|
|
Agendula keeps your to-dos. (A Calendula flower head is botanically a cluster of
|
|
many small *florets* — so the two apps are florets of one bloom.)
|
|
|
|
## Where your tasks live — your choice
|
|
|
|
| | Where | Sync | Needs |
|
|
|---|---|---|---|
|
|
| **On your device** *(default)* | Agendula's own database | none yet — CalDAV sync of our own is planned | nothing. No account, no permissions, no other app |
|
|
| **In a provider you already use** | OpenTasks or tasks.org | whatever syncs it for you — DAVx5 and friends | that app installed, and its read/write permission |
|
|
|
|
Agendula's own store is an ordinary app database — nothing is published to other
|
|
apps, so there is no authority to clash over and no permission to grant. It
|
|
**coexists with OpenTasks rather than replacing it**: installing one never breaks
|
|
the other, and if you already sync through a provider, that keeps working exactly
|
|
as it did.
|
|
|
|
Switching between the two moves nothing — each store keeps its own tasks — so
|
|
Settings → Storage asks before it switches, and offers to **copy** a provider's
|
|
tasks into Agendula's own store when you want to move over. The copy is taken
|
|
once and the originals stay where they are; it is not an ongoing sync in either
|
|
direction.
|
|
|
|
Recurring tasks are expanded per RFC 5545, and everything the schema does not
|
|
model is round-tripped verbatim rather than dropped — so passing your tasks
|
|
through Agendula does not quietly lose fields a server sent.
|
|
|
|
Your tasks are exportable as standard iCalendar `.ics` files at any time, because
|
|
data you can't take with you isn't really yours.
|
|
|
|
> **Status: backend complete, UI catching up.** Storage, reads and
|
|
> writes, smart-list filtering, a self-scheduled reminder engine, and export are
|
|
> built and unit-tested. The Material 3 Expressive screens are being built on
|
|
> top, one at a time — the storage-mode picker and export screen are not there
|
|
> yet. See [`docs/ROADMAP.md`](docs/ROADMAP.md) for status,
|
|
> [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) for how it's built, and
|
|
> [`docs/STORAGE-AND-SYNC.md`](docs/STORAGE-AND-SYNC.md) for why storage works
|
|
> the way it does.
|
|
|
|
## Sync sources (by design)
|
|
|
|
In external-provider mode Agendula works with anything that writes to that provider —
|
|
**DAVx5** (CalDAV), **SmoothSync**, **CalDAV-Sync**, **DecSync CC**, or any
|
|
Android sync adapter — because it builds on the provider, not on any one sync
|
|
app. Google Tasks / Microsoft To Do are out of scope by design (proprietary; they
|
|
would mean owning a sync stack). Open standards — CalDAV / iCalendar / DecSync —
|
|
are the lane.
|
|
|
|
## Translations
|
|
|
|
Agendula ships in English so far, and would like not to. Translations are
|
|
managed on a self-hosted **Weblate**, and partial ones are fine — an
|
|
untranslated string simply falls back to English.
|
|
|
|
**→ [Help translate Agendula](https://weblate.dev.jeanlucmakiola.de/engage/agendula/)**
|
|
|
|
No coding needed: register on the Weblate server, pick (or request) a language,
|
|
and translate the strings in your browser. You can also reach this link in the
|
|
app from the top of **Settings → App language**.
|
|
|
|
## Privacy
|
|
|
|
No servers, no account, no analytics, no advertising, no tracking, no
|
|
third-party SDK. Your tasks stay on your device unless you add a CalDAV account
|
|
yourself, and then they go only to the server you chose — never to the
|
|
developer.
|
|
|
|
**→ [Privacy policy](https://jeanlucmakiola.de/agendula/privacy)**
|
|
|
|
## License
|
|
|
|
MIT — see [LICENSE](LICENSE).
|