9c4ebbc65a7a96213e83e433bdf733a375ece918
The onboarding screen is the first thing a new user sees; it was a bare centred title + body + button. Rebuild it as a proper Material 3 Expressive welcome: - Branded hero reconstructing the launcher mark (slate squircle + foreground vector); the denied state adds a lock badge over the corner - App-name eyebrow, a benefit-led headline, and three trust rows (stays on device / every calendar together / no tracking) with tonal icon chips - Full-width filled CTA with a trailing arrow, pinned in a Scaffold bottom bar clear of the navigation bar; scrollable body for short screens - "Read-only · no internet permission" footnote — accurate: the app declares only READ_CALENDAR - Denied/recovery state reuses the same shell with Open-settings (primary) and Try-again (text) actions - 8dp spacing scale, edge-to-edge insets handled via Scaffold Built with the newly installed material-3 skill's token/component guidance. Resolves the pre-1.0 polish backlog item. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Calendula
A modern Material 3 Expressive calendar app for Android.
Calendula is named after the flower of the same name, whose name comes from
the Latin kalendae — the first day of the month — the same root as the
word "calendar". Calendula reads from Android's built-in CalendarContract,
so any calendar source synced to your device (CalDAV via DAVx5, Google,
local, WebCal subscriptions, ...) is shown.
Features (V1)
- Month, Week, and Day views
- Read-only event details (write support comes in V2)
- Multi-calendar visibility toggle
- Material You Dynamic Color (Android 12+)
- Light/Dark theme follows system
- German + English UI
Building
Requires Android SDK 36 and JDK 17. The Gradle wrapper is checked in, so no host Gradle install is needed:
# Build debug APK
./gradlew assembleDebug
# Run unit tests
./gradlew test
# Run lint
./gradlew lint
If your default JDK is something other than 17, set JAVA_HOME explicitly:
JAVA_HOME=/path/to/jdk-17 ./gradlew assembleDebug
License
MIT — Jean-Luc Makiola, 2026