docs: changelog, docs/ set, CONTRIBUTING, LICENSE
Bring floret-kit up to the family's repo conventions: - CHANGELOG.md (Keep a Changelog) — what each module added. - README.md — full module table (core-time/core-crash/identity/components) + consumption notes and a docs index. - docs/README.md (index), docs/ARCHITECTURE.md (module layering, the submodule + composite-build consumption model, JVM vs android-library, the reproducibility rules, the share-mechanics-not-look contract), docs/ROADMAP.md (extracted vs deferred vs deliberately-not-shared, from the cross-app survey). - CONTRIBUTING.md — the no-app-coupling rules, how to add a module, how an app adopts the kit. - LICENSE (MIT, matching the apps). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
68
docs/ROADMAP.md
Normal file
68
docs/ROADMAP.md
Normal file
@@ -0,0 +1,68 @@
|
||||
# floret-kit — roadmap
|
||||
|
||||
What's extracted, what's deferred, and what's deliberately **not** shared. The
|
||||
defer/skip calls come from a cross-app survey of both Calendula and Agendula —
|
||||
the guiding rule is to share only what is genuinely common, and to keep
|
||||
divergent or app-specific code where it lives.
|
||||
|
||||
---
|
||||
|
||||
## Extracted (done)
|
||||
|
||||
| Module | Type | Consumers |
|
||||
|---|---|---|
|
||||
| `core-time` | JVM | Agendula (and Calendula's pending branch) |
|
||||
| `core-crash` | Android | Agendula |
|
||||
| `identity` | Android | Agendula |
|
||||
| `components` | Android | Agendula |
|
||||
|
||||
See [`../CHANGELOG.md`](../CHANGELOG.md) for the contents of each.
|
||||
|
||||
---
|
||||
|
||||
## Deferred / not yet worth it
|
||||
|
||||
- **`core-prefs`** (DataStore base: `ThemeMode`, `dynamicColor`, the typed
|
||||
wrapper, `toEnum()`) and **`core-di`** (`@IoDispatcher` + provider) — genuinely
|
||||
shared but **low value**: pure relocation, no new capability, the shared
|
||||
surface is tiny once the store name and bindings stay app-local. Sensible to
|
||||
defer until a third app makes the duplication hurt.
|
||||
- **`ReminderFormatting`** (`ReminderUnit` + `reminderLeadTimeLabel` +
|
||||
`decomposeReminder`) — the labels are `@Composable` over app-specific
|
||||
`R.plurals`, and the presets differ per app. Extract later behind a
|
||||
**label/preset callback API**, not before.
|
||||
|
||||
## Deferred — needs migration first
|
||||
|
||||
- **`core-provider`** (the ContentProvider seam: `ColumnReader`, failures,
|
||||
observer→Flow) — the two apps' `ColumnReader`s diverged (Calendula index-based,
|
||||
Agendula name-based + null-safe). True sharing means migrating Calendula to the
|
||||
better name-based design first (~a few hundred LOC), so it waits until Calendula
|
||||
is actively on the kit.
|
||||
|
||||
## Not shared (by design)
|
||||
|
||||
- **A generic Settings scaffold** — the two apps' settings *domains* are too
|
||||
divergent for a config-driven `SettingsScaffold` to stay readable. The win is
|
||||
captured instead at the **component** level (shared `GroupedRow`/section
|
||||
primitives + `CollapsingScaffold` + `OptionPicker`); each app composes its own
|
||||
settings from those.
|
||||
- **`core-reminders`** (unified) — Agendula self-schedules alarms (pull),
|
||||
Calendula is provider-event-driven (push). Opposite architectures over
|
||||
incompatible data models; forcing a shared abstraction would be leaky. A tiny
|
||||
`core-notification` (idempotent channel setup, `POST_NOTIFICATIONS` checks)
|
||||
*might* land later; schedulers stay app-local.
|
||||
- Domain-specific UI (date/time fields tied to a domain, calendar/timeline
|
||||
widgets, recurrence text, domain pickers) and all string wording — these encode
|
||||
each app's model and resist parameterization.
|
||||
|
||||
---
|
||||
|
||||
## Consumers & cadence
|
||||
|
||||
- **Agendula** consumes the kit on `main` (active development).
|
||||
- **Calendula** (ships via official F-Droid reproducible builds) has a pending
|
||||
adoption branch. Bringing it onto the kit is where the canonical-`GroupedSurface`
|
||||
convergence becomes visible, and where the F-Droid reproducibility checklist
|
||||
(`submodules: true` in the recipe; the repro guard scanning the submodule)
|
||||
applies — see [`ARCHITECTURE.md`](ARCHITECTURE.md) §2 and §5.
|
||||
Reference in New Issue
Block a user