diff --git a/.planning/PROJECT.md b/.planning/PROJECT.md new file mode 100644 index 0000000..da53fb1 --- /dev/null +++ b/.planning/PROJECT.md @@ -0,0 +1,39 @@ +# Calendula + +## What This Is + +A modern Material 3 Expressive Android calendar app, read-only V1. Lives +entirely on top of Android's `CalendarContract` — any calendar synced to the +device (CalDAV via DAVx5, Google, local, WebCal, …) shows up automatically. +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 + +**v0.1 — Foundation & CI:** Buildable Android project scaffold with theme, +icon, i18n, Hilt, DataStore, green CI. + +## Stack + +Kotlin 2.3, Jetpack Compose + Material 3 Expressive (alpha for 1.5 APIs), +Hilt, DataStore. Gradle Kotlin DSL with Version Catalog. AGP 9.1, Gradle 9.5. + +Read-only V1, write support V2. + +Android-only (minSdk 29, targetSdk 36). No iOS. + +## 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`. diff --git a/.planning/REQUIREMENTS.md b/.planning/REQUIREMENTS.md new file mode 100644 index 0000000..fb7820e --- /dev/null +++ b/.planning/REQUIREMENTS.md @@ -0,0 +1,45 @@ +# Calendula — Requirements + +See full design spec: `docs/superpowers/specs/2026-06-08-calendar-app-design.md` + +## V1 Scope (Variant "B") + +### Validated (shipped) +- (none yet — first milestone in progress) + +### Active (V1) + +- [ ] Foundation & CI infrastructure +- [ ] Data Layer over `CalendarContract` +- [ ] Permission flow (`READ_CALENDAR`) +- [ ] Month view (S1) +- [ ] Week view (S2) +- [ ] Day view (S3) +- [ ] Event Detail Sheet (S4) +- [ ] Multi-Calendar Filter (M3) +- [ ] Today button + Jump-to-Date (M2) +- [ ] View-Switcher (M1) +- [ ] Settings screen (M4) +- [ ] Empty / no-permission / no-calendars states +- [ ] German + English localization +- [ ] Loading/Failure/Success states per screen (architectural pattern) + +### Out of Scope (V2+) + +- Event create / edit / delete (V2) +- Home-screen widget +- Full-text search +- Quick-add +- Custom notifications/reminders (system already handles these) +- Tablet/foldable-specific layouts +- iOS support (Android-only by design) + +## Constraints + +- **Tech stack:** Kotlin + Jetpack Compose + Material 3 Expressive, Hilt, DataStore +- **Platform:** Android 10+ (API 29 minimum), Android 16 (API 36) target +- **Offline-first:** all data lives in `CalendarContract`; no app-side network +- **Privacy:** zero telemetry, no analytics +- **i18n:** German + English from day one +- **Tests + CI from day one** +- **License:** MIT diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md new file mode 100644 index 0000000..ad9096f --- /dev/null +++ b/.planning/ROADMAP.md @@ -0,0 +1,32 @@ +# Calendula — Roadmap + +## v0.x — Pre-Release + +| Version | Milestone | Status | +|---|---|---| +| v0.1 | Foundation & CI | in progress | +| v0.2 | Data Layer & Permission Flow | pending | +| v0.3 | Month view | pending | +| v0.4 | Week view | pending | +| v0.5 | Day view | pending | +| v0.6 | Event Detail Sheet | pending | +| v0.7 | Filter & Settings | pending | + +## v1.0 — First Public Release + +All V1 features shipped, polished, on F-Droid. Read-only calendar. + +## v2.0 — Write Support + +- Event create / edit / delete via `CalendarContract` writes +- Quick-add sheet +- Conflict UX (event modified externally during edit) + +## v3.0 — Power-User Features + +- Home-screen widget +- Full-text search +- Tablet / foldable layouts +- Optional: ICS file import (drag-and-drop) + +Order is indicative — community feedback after V1 may re-prioritize. diff --git a/.planning/STATE.md b/.planning/STATE.md new file mode 100644 index 0000000..0c2d765 --- /dev/null +++ b/.planning/STATE.md @@ -0,0 +1,21 @@ +# Calendula — Current State + +*Last updated: 2026-06-08* + +## Status + +**Milestone:** v0.1 — Foundation & CI +**Phase:** Implementation in progress (Plan 01 active) + +## Progress + +- [x] Design spec written and committed (`docs/superpowers/specs/2026-06-08-calendar-app-design.md`) +- [x] V1 design decisions resolved (App name "Calendula", icon, seed color) +- [x] Plan 01 written (`docs/superpowers/plans/2026-06-08-01-foundation.md`) +- [ ] Plan 01 executed + +## Next + +1. Execute Plan 01 to land foundation +2. Write and execute Plan 02 (Data Layer & Permission Flow) +3. Iterate on UI design (mockups) before screens are built