Initial site: Astro + M3 Expressive, projects, blog
Personal site & blog for jeanlucmakiola.de. - Astro 7 static output; self-hosted Inter + JetBrains Mono (Fontsource) - Material 3 Expressive design tokens (red accent over neutral surfaces) - Home (hero + about + selected work + latest writing) - /work index + per-app pages (Calendula, Agendula, floret-kit) with build-time Gitea release tags, brand-icon link rows, features grid, and an at-a-glance facts panel - Blog via Markdown content collection; RSS, sitemap, robots, OG/SEO - Privacy-respecting Umami analytics, env-gated (off in dev) - Dockerfile (build -> Caddy) + Caddyfile for Coolify deploy Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
42
src/content/projects/agendula.md
Normal file
42
src/content/projects/agendula.md
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
name: Agendula
|
||||
order: 2
|
||||
status: In development
|
||||
released: false
|
||||
platform: Android 10+
|
||||
license: MIT
|
||||
summary: >-
|
||||
The task-list sibling to Calendula — a pure front-end over the OpenTasks
|
||||
provider (CalDAV VTODOs), with no reinvented sync stack.
|
||||
tech:
|
||||
- Kotlin
|
||||
- Jetpack Compose
|
||||
- Material 3 Expressive
|
||||
features:
|
||||
- title: Provider-native
|
||||
body: >-
|
||||
A pure front-end over the OpenTasks TaskContract provider. DAVx5,
|
||||
SmoothSync, and DecSync sync your CalDAV VTODOs in; Agendula reads and
|
||||
writes them — no own database.
|
||||
- title: Data layer done
|
||||
body: >-
|
||||
Provider resolution, live-updating reads, writes, smart-list filtering,
|
||||
and a self-scheduled reminder engine are built and unit-tested.
|
||||
- title: UI in progress
|
||||
body: >-
|
||||
The Material 3 Expressive screens are being built on top of the tested
|
||||
data layer, one at a time.
|
||||
- title: Open standards only
|
||||
body: >-
|
||||
CalDAV, iCalendar, and DecSync are the lane. Proprietary task services are
|
||||
out of scope by design — they would mean owning a sync stack.
|
||||
links:
|
||||
gitea: https://gitea.jeanlucmakiola.de/makiolaj/agendula
|
||||
donate: https://ko-fi.com/jeanlucmakiola
|
||||
---
|
||||
|
||||
Where Calendula is a pure front-end over Android's `CalendarContract`, Agendula
|
||||
is a pure front-end over the **OpenTasks `TaskContract` provider**. The name
|
||||
rhymes with its sibling on purpose: *Agendula* is *agenda* — Latin for "things
|
||||
to be done" — given Calendula's `-ula` ending. A Calendula flower head is a
|
||||
cluster of many small *florets*, so the two apps are florets of one bloom.
|
||||
48
src/content/projects/calendula.md
Normal file
48
src/content/projects/calendula.md
Normal file
@@ -0,0 +1,48 @@
|
||||
---
|
||||
name: Calendula
|
||||
order: 1
|
||||
status: Released
|
||||
released: true
|
||||
platform: Android 10+
|
||||
license: MIT
|
||||
summary: >-
|
||||
A Material 3 Expressive calendar for Android. Reads, writes, and reminds on
|
||||
top of the system calendar — any CalDAV account just appears — with zero
|
||||
network access of its own.
|
||||
tech:
|
||||
- Kotlin
|
||||
- Jetpack Compose
|
||||
- Material 3 Expressive
|
||||
features:
|
||||
- title: Calendar views
|
||||
body: >-
|
||||
Month, week, and day views with a one-tap switcher. Full event detail —
|
||||
attendees and responses, reminders, humanized recurrence, availability,
|
||||
visibility, and foreign time zones.
|
||||
- title: Safe editing
|
||||
body: >-
|
||||
Scoped writes for recurring events (only this, this-and-following, or the
|
||||
whole series), a recurrence picker for presets and custom rules, and
|
||||
conflict-safe saves that ask before overwriting.
|
||||
- title: Built-in reminders
|
||||
body: >-
|
||||
Delivered by Calendula itself as notifications — essential when it's your
|
||||
only calendar app, since Android delegates reminder delivery to calendar
|
||||
apps. Tap a reminder to land on the event.
|
||||
- title: Private by default
|
||||
body: >-
|
||||
Zero telemetry, zero analytics, no internet permission — your data never
|
||||
leaves the device. Dynamic color on Android 12+, German and English UI.
|
||||
links:
|
||||
gitea: https://gitea.jeanlucmakiola.de/makiolaj/calendula
|
||||
fdroid: https://f-droid.org/packages/de.jeanlucmakiola.calendula/
|
||||
donate: https://ko-fi.com/jeanlucmakiola
|
||||
translate: https://weblate.dev.jeanlucmakiola.de/engage/calendula/
|
||||
---
|
||||
|
||||
Calendula is named after the flower whose name — like the word *calendar* —
|
||||
comes from the Latin *kalendae*, the first day of the month. It lives entirely
|
||||
on top of Android's `CalendarContract`: any calendar synced to your device
|
||||
(CalDAV via DAVx5, Google, local, WebCal subscriptions, …) simply appears, and
|
||||
everything you create or edit syncs back the same way. **No own database, no
|
||||
sync stack reinvented.**
|
||||
37
src/content/projects/floret-kit.md
Normal file
37
src/content/projects/floret-kit.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
name: floret-kit
|
||||
order: 3
|
||||
status: Design system
|
||||
released: false
|
||||
platform: Android library
|
||||
license: MIT
|
||||
summary: >-
|
||||
The shared Material 3 Expressive design system and plumbing behind the Floret
|
||||
app family — so each app draws from one bloom instead of reinventing it.
|
||||
tech:
|
||||
- Kotlin
|
||||
- Gradle composite build
|
||||
features:
|
||||
- title: Built from source
|
||||
body: >-
|
||||
Embedded as a git submodule and wired in with a Gradle composite build —
|
||||
no published artifacts, which keeps every app reproducible for F-Droid.
|
||||
- title: core-time
|
||||
body: >-
|
||||
Pure-Kotlin date/time helpers: local-day windows for smart-list logic and
|
||||
locale/zone-aware display formatting. No Android, no dependencies.
|
||||
- title: Growing
|
||||
body: >-
|
||||
Identity/theme, components, screen recipes, and provider / prefs /
|
||||
reminders / crash plumbing land as they're extracted from the apps.
|
||||
links:
|
||||
gitea: https://gitea.jeanlucmakiola.de/makiolaj/floret-kit
|
||||
donate: https://ko-fi.com/jeanlucmakiola
|
||||
---
|
||||
|
||||
"Floret" is the family's design language: a Calendula flower head is a cluster
|
||||
of many small *florets*, and each app is one of them. floret-kit is the bloom
|
||||
they share — so a new app doesn't reinvent a settings screen, an edit form, or a
|
||||
theme; it draws from here. Gradle's dependency substitution maps
|
||||
`de.jeanlucmakiola.floret:<module>` to local source, so editing the kit updates
|
||||
every app immediately.
|
||||
Reference in New Issue
Block a user