docs: add .planning/ project-tracking documents
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
39
.planning/PROJECT.md
Normal file
39
.planning/PROJECT.md
Normal file
@@ -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`.
|
||||||
45
.planning/REQUIREMENTS.md
Normal file
45
.planning/REQUIREMENTS.md
Normal file
@@ -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
|
||||||
32
.planning/ROADMAP.md
Normal file
32
.planning/ROADMAP.md
Normal file
@@ -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.
|
||||||
21
.planning/STATE.md
Normal file
21
.planning/STATE.md
Normal file
@@ -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
|
||||||
Reference in New Issue
Block a user