Wenlan
Wenlan is a source-backed AI knowledge base and LLM wiki for AI work: organize documents and decisions into pages you can find, inspect, and review.
Agenda Tech : agenda Android 100% local et chiffré. Jours fériés de dix pays, partage d'un événement, le mois en points, en titres ou une ligne par jour, rappels exacts, sauvegarde chiffrée automatiqu
Translation pending
ProductivityKotlin · PythonGitHub @gitubpatriceOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
A 100% local, encrypted, zero-network Android calendar—no cloud required.
Translation pending
Loading the full README.
Read the full README ↗A fully local, encrypted, zero-network Android calendar — the calendar piece of the Files Tech suite, built without cloud.
Bug reports are welcome in the issues.
agenda-tech-universel-<version>.apk) from the
latest release.The APK is universal (works on every device, no variant to pick) and signed.
.ics file (editor's ⋮ menu), to the app of your choice — the
app sends nothing itself.RECURRENCE-ID model)..atbak backup: export/restore everything (calendars, events, recurrences,
places, reminders) in a password-protected file (PBKDF2 600,000 iterations + AES-256-GCM) — keep
it wherever you like, cloud included..atbak, written on its own once a week into
a folder you pick, keeping the four most recent. It is the one place where the app keeps a
password — wrapped by the AndroidKeyStore, erased when you turn the option off; the trade-off is
spelled out in SECURITY.md..ics import / export (RFC 5545) through the system file picker — an interchange format,
which does not replace the backup (it loses reminders, colours and the calendar structure)..atbak file is encrypted by your password alone: it stays
unreadable even sitting on a cloud. Format documented in SECURITY.md.FLAG_SECURE (no preview in Recents, screenshots blocked), cloud backups
excluded (allowBackup=false).Details: SECURITY.md · PRIVACY.md.
Kotlin · Jetpack Compose (Material 3) · Hilt · Room + SQLCipher · Coroutines/Flow · typed
Outcome/AppError · Timber · JUnit5 + Truth + MockK tests.
applicationId: com.filestech.agenda_tech — minSdk 26 (native java.time) / compileSdk 37.
core/ Outcome, AppError, crypto (AeadCipher, KeystoreManager, PinHasher), text, logging
domain/ pure models (Calendar, Event, RecurrenceRule, Reminder, DeviceCalendar/DeviceEvent
+ enums), repository interfaces, use cases, recurrence engine (DST-correct),
device/ pure mapper from a calendar row to an Event ← no Android dependency
data/ Room entities, DAOs, AppDatabase (SQLCipher), mappers, repository impls — including
Calendar Provider access (device import), hidden behind a domain interface
di/ Hilt modules
ui/ theme, navigation, screens (Month/Week/Day/Agenda, editor, settings, lock…)
system/ exact alarms for reminders · notifications
widget/ Glance widgets (agenda + date icon)
The domain is 100% pure; the only domain↔Room crossing point is
data/repository/EntityMappers.kt. Recurrence is stored in structured columns (rrule_*) on the
event — the iCalendar model (RRULE is a property of the VEVENT).
git clone https://github.com/gitubpatrice/AGENDA-TECH.git
cd AGENDA-TECH
./gradlew :app:assembleDebug # debug APK (splits + universal)
./gradlew :app:testDebugUnitTest # unit tests
Release signing expects a keystore.properties file (not versioned); the debug build does not need
one.
version.properties, at the root, is the single source of versionCode / versionName:
versionCode=NN # see the file for the current values
versionName=X.Y.Z
The versionCode must always increase: Android refuses to install an APK whose versionCode is
lower than the installed one, and the user only sees an unexplained failure. It is bumped by
hand, before building a release APK — never after.
The build fails if the file is missing or unreadable: producing nothing beats producing an APK carrying a silently wrong version.
Apache License 2.0 — © 2026 Patrice Haltaya / Files Tech. Third-party libraries and their licences: THIRD_PARTY_NOTICES.md.