diff --git a/src/consts.ts b/src/consts.ts index 8d666f7..ec3ce92 100644 --- a/src/consts.ts +++ b/src/consts.ts @@ -22,7 +22,7 @@ export const LEGAL = { // Social / external links shown in the footer. `icon` is an Iconify name. export const SOCIALS: { label: string; href: string; icon: string }[] = [ - { label: 'Gitea', href: 'https://gitea.jeanlucmakiola.de/makiolaj', icon: 'simple-icons:gitea' }, + { label: 'Codeberg', href: 'https://codeberg.org/jlmakiola', icon: 'simple-icons:codeberg' }, { label: 'Ko-fi', href: 'https://ko-fi.com/jeanlucmakiola', icon: 'simple-icons:kofi' }, { label: 'Email', href: `mailto:${LEGAL.email}`, icon: 'mdi:email-outline' }, ]; diff --git a/src/content.config.ts b/src/content.config.ts index f9c398d..d6e86c2 100644 --- a/src/content.config.ts +++ b/src/content.config.ts @@ -39,8 +39,10 @@ const projects = defineCollection({ .default([]), links: z .object({ - gitea: z.string().url().optional(), + // Canonical source is Codeberg; the self-hosted Gitea is build infra. + codeberg: z.string().url().optional(), fdroid: z.string().url().optional(), + play: z.string().url().optional(), donate: z.string().url().optional(), translate: z.string().url().optional(), }) diff --git a/src/content/projects/agendula.md b/src/content/projects/agendula.md index 21ba1ec..5df72a4 100644 --- a/src/content/projects/agendula.md +++ b/src/content/projects/agendula.md @@ -6,37 +6,51 @@ 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. + The task-list sibling to Calendula. Keeps your tasks in its own store built + around iCalendar VTODOs — or on top of a tasks provider you already sync — + with no account required. tech: - Kotlin - Jetpack Compose - Material 3 Expressive + - Room features: - - title: Provider-native + - title: Two places to keep tasks 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 + By default, Agendula's own database, designed around RFC 5545's VTODO — + no account, no permission, no other app needed. Or a provider you already + have (OpenTasks, tasks.org), left to whatever syncs it for you. + - title: Coexists, never replaces 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 + Agendula's store is an ordinary app database, published to nothing, so + installing it never breaks OpenTasks — and if you already sync through a + provider, that keeps working exactly as it did. + - title: Nothing quietly lost body: >- - The Material 3 Expressive screens are being built on top of the tested - data layer, one at a time. + Recurring tasks are expanded per RFC 5545, and anything the schema doesn't + model is round-tripped verbatim rather than dropped. Export to standard + .ics files is built in, because data you can't take with you isn't yours. - 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. + CalDAV, iCalendar, and DecSync are the lane; a CalDAV sync engine of + Agendula's own is being built now. Google Tasks and Microsoft To Do are + out of scope by design. links: - gitea: https://gitea.jeanlucmakiola.de/makiolaj/agendula + codeberg: https://codeberg.org/jlmakiola/agendula donate: https://ko-fi.com/jeanlucmakiola + translate: https://weblate.dev.jeanlucmakiola.de/engage/agendula/ --- 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. +carries **its own store** — a database designed against `VTODO`, the same shape +DAVx5 (and SmoothSync, DecSync, …) syncs out of a CalDAV server. Using a tasks +provider you already have is a choice rather than a requirement. 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. + +**Where it stands:** the store, reminders, export, and the Material 3 Expressive +screens through task detail, editing and settings are built; German and +Brazilian Portuguese are the first community translations. Still ahead: a Glance +widget, the first F-Droid release, and Agendula's own CalDAV sync. Its +[privacy policy](/agendula/privacy) is already published. diff --git a/src/content/projects/calendula.md b/src/content/projects/calendula.md index 975fd24..87f9f48 100644 --- a/src/content/projects/calendula.md +++ b/src/content/projects/calendula.md @@ -32,10 +32,12 @@ features: - 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. + leaves the device. Dynamic color on Android 12+, and fifteen community + translations alongside English. links: - gitea: https://gitea.jeanlucmakiola.de/makiolaj/calendula + codeberg: https://codeberg.org/jlmakiola/calendula fdroid: https://f-droid.org/packages/de.jeanlucmakiola.calendula/ + play: https://play.google.com/store/apps/details?id=de.jeanlucmakiola.calendula donate: https://ko-fi.com/jeanlucmakiola translate: https://weblate.dev.jeanlucmakiola.de/engage/calendula/ --- @@ -46,3 +48,8 @@ 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.** + +Install it from F-Droid or Google Play — same app, same MIT source on Codeberg, +and still no internet permission in either build. There is also a +[privacy policy](/calendula/privacy) covering what the app does and doesn't do +with your data. diff --git a/src/content/projects/floret-kit.md b/src/content/projects/floret-kit.md index 545ed07..0becca0 100644 --- a/src/content/projects/floret-kit.md +++ b/src/content/projects/floret-kit.md @@ -10,22 +10,31 @@ summary: >- app family — so each app draws from one bloom instead of reinventing it. tech: - Kotlin + - Jetpack Compose - 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 + - title: Identity and components 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 + The M3 Expressive theme factory, navigation motion and predictive-back + peek, plus the shared Compose vocabulary each screen is written out of — + grouped rows, inline fields, option cards, full-screen pickers, + collapsing scaffolds. + - title: Plumbing, not looks body: >- - Identity/theme, components, screen recipes, and provider / prefs / - reminders / crash plumbing land as they're extracted from the apps. + core-time (local-day windows, locale-aware formatting), core-reminders + (lead-time model and codec), core-locale (per-app language), core-crash + (on-device capture and issue hand-off) — each app layers its own storage + and strings on top. + - title: Mechanics shared, look per-app + body: >- + The principle the kit is held to: a component moves here once two apps + need the same behaviour, while palette and personality stay with the app. links: - gitea: https://gitea.jeanlucmakiola.de/makiolaj/floret-kit + codeberg: https://codeberg.org/jlmakiola/floret-kit donate: https://ko-fi.com/jeanlucmakiola --- diff --git a/src/pages/uses.astro b/src/pages/uses.astro index 4d32f9d..ddde7b1 100644 --- a/src/pages/uses.astro +++ b/src/pages/uses.astro @@ -46,23 +46,34 @@ import { LEGAL } from '../consts';
CalendarContract, the OpenTasks{' '}
- TaskContract) and open standards like CalDAV, iCalendar, and
- DecSync.
+ Open standards over proprietary services — CalDAV, iCalendar, DecSync.
+ Calendula is a pure front-end over Android's CalendarContract;
+ Agendula keeps its own VTODO store, or rides a tasks
+ provider you already sync.
Code, translations, builds, and this site all run on infrastructure I host myself.