Files
calendula/.planning/PROJECT.md
Jean-Luc Makiola 82c3e1d605
All checks were successful
CI / ci (push) Successful in 4m38s
docs: architecture tour, docs index, showcase README; ci: Gitea release per tag
Documentation pass after the 2.0 milestone:
- docs/ARCHITECTURE.md — principles (provider as single source of truth,
  observer-driven UI, JVM-first tests, no network), layer + reminder
  mermaid diagrams, navigation (overlay/held-key, no nav lib), and the
  provider lessons (recurring-write invariants, conflict snapshots)
- docs/README.md — map of what documentation lives where, incl. the
  convention that superpowers/ plans are historical artifacts while
  .planning/ stays current
- README.md — showcase layout (centered header, badges, screenshot
  gallery from the fastlane assets, grouped features, install/build/
  architecture/roadmap sections); renders on Gitea
- .planning/{PROJECT,REQUIREMENTS,STATE}.md unstaled: read-only-V1 talk
  removed, V1/V2 checklists marked shipped, state points at v3 + the
  Locations & People go/no-go

release.yaml gains a gitea-release job: on every tag push it extracts the
tag's CHANGELOG section and creates a Gitea release with it as the notes.
No APK assets — distribution stays with the F-Droid repo. Idempotent
(skips an existing release), gated on the test job only so notes appear
even when the F-Droid upload hiccups.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 22:35:03 +02:00

1.7 KiB
Raw Permalink Blame History

Calendula

What This Is

A modern Material 3 Expressive Android calendar app. Lives entirely on top of Android's CalendarContract — any calendar synced to the device (CalDAV via DAVx5, Google, local, WebCal, …) shows up automatically; creating, editing, and deleting writes straight back, and reminders are delivered by the app itself (Etar model). The differentiator is visual: real Material 3 Expressive design that no existing FOSS calendar app delivers.

Core Value

A calendar app that is genuinely pleasant to look at and use, without re-inventing the calendar sync stack — leave that to DAVx5 and the system.

Current Milestone

Milestones 1 (read, v1.0) and 2 (write support, v1.1v2.0.0 incl. reminder delivery) are complete — v2.0.0 shipped 2026-06-11. Next is v3.0 (power-user features) plus an undecided "Locations & People" idea backlog; see ROADMAP.md.

Stack

Kotlin 2.3.21 (paired with KSP 2.3.9 — Kotlin 2.4.0 has no KSP release yet, do not upgrade until one ships). Jetpack Compose + Material 3 Expressive 1.5.0-alpha21 (alpha is intentional — Expressive APIs only live in the 1.5 alpha line). Hilt 2.59.2, DataStore. Gradle Kotlin DSL with Version Catalog. AGP 9.1.1, Gradle 9.5.1. JVM target 17.

Android-only (minSdk 29, targetSdk 36). No iOS. No INTERNET permission — any feature that would need one is an explicit product decision first.

Naming

"Calendula" — Latin kalendae ("first day of the month", root of "calendar") is also the etymological root of the marigold flower Calendula. The icon shows a stylized "1" on a slate squircle.

Source

Hosted on self-hosted Gitea, released through self-hosted F-Droid repo on Hetzner. Same infrastructure as HouseHoldKeaper.