Secretary

Apps/calendar
Login

Apps/calendar

Secretary Calendar (Android)

CalDAV calendar client for secretary-server with offline cache, continuous day-list view, event editing, and ICS import/export.

What it does

Changelog

Every released version: Apps/calendar/changelog

Screenshots

Agenda Termin Sammlungen Einstellungen

Directory Structure

secretary-calendar-android/
├── build.gradle.kts              # Root build
├── settings.gradle.kts
├── gradle.properties
├── CONTEXT.md
├── gradle/wrapper/
└── app/
    ├── build.gradle.kts
    ├── proguard-rules.pro
    └── src/main/
        ├── AndroidManifest.xml
        ├── res/values/
        │   ├── strings.xml
        │   └── themes.xml
        ├── java/org/beowulf/secretary/calendar/
        │   ├── SecretaryCalendarApp.kt
        │   ├── MainActivity.kt
        │   ├── data/
        │   │   ├── Models.kt              # Calendar, CalendarEvent, Attendee, Reminder
        │   │   ├── VEvent.kt              # RFC 5545 parse/serialize
        │   │   ├── CalendarCaldavClient.kt # CalDAV HTTP client
        │   │   ├── CalendarRepository.kt  # Account + prefs
        │   │   └── CalendarStore.kt       # JSON cache + pending queue + snapshot()
        │   ├── system/
        │   │   ├── CalendarSystemSyncAdapter.kt  # System-Provider-Sync (com.android.calendar)
        │   │   ├── CalendarSystemSyncService.kt  # Sync-Service (IBinder)
        │   │   └── CalendarSystemScheduler.kt    # periodisch + manueller Sync
        │   ├── vm/
        │   │   └── CalendarViewModel.kt
        │   └── ui/
        │       ├── Theme.kt
        │       ├── LoginScreen.kt
        │       ├── CalendarListScreen.kt   # Continuous day list (+ month nav)
        │       ├── CollectionsScreen.kt   # Calendar picker (overview + calendars)
        │       ├── EventEditScreen.kt
        │       └── navigation/NavGraph.kt
        └── src/test/java/org/beowulf/secretary/calendar/data/
            └── VEventTest.kt

Commands

Prerequisites: JDK 21, Android SDK (platform 37, build-tools 34) and Gradle 9.x. The repository deliberately ships no Gradle wrapper -- either use Android Studio (it brings its own Gradle) or install Gradle 9 yourself, which is why the examples below call gradle directly.

export ANDROID_HOME="$HOME/Android/Sdk"   # bzw. sdk.dir=... in local.properties

gradle :calendar:assembleDebug        # debug APK
gradle :calendar:testDebugUnitTest    # unit tests
gradle :calendar:lintDebug            # lint

Concepts

Permissions

Systemkalender (Sync in den System-Provider)

Server Reference


Attachments: