A minimalist calendar for Android.
Recently I switched to GrapheneOS as my main mobile OS. And as it turns out, it does not ship with a built-in calendar app. So I created MatCal as both, a personal learning project and a practical solution.
The goal is to provide a lightweight, functional, and system-native calendar experience without compromising privacy.
- Event Management: Create, view and manage events
- Offline first: All data is stored locally using SQLite (Room)
- iCal Sync: Import and sync external calendars (University, Work, Holidays) via URL
- No Bloat: No ads, no tracking, no unneeded permissions
- Events are stored locally in an embedded SQLite database managed through Room.
- MatCal includes no trackers, analytics, or background data collection.
android.permission.INTERNETis only used when you explicitly add or refresh an iCal subscription URL
MatCal utilizes the system's Dynamic Colors, adapting automatically to your wallpaper and system theme (light/dark mode)
| Calendar (Dark Theme / Black background) |
|---|
![]() |
| Calendar (Light Theme / Red background) |
|---|
![]() |
(WIP)
- Recommended: Android 12+ (API 31) for full Dynamic Color support.
- Tested Environment: Google Pixel 9a running GrapheneOS (Android 16, API 36).
You can grab the latest APK from the Releases Page.
- Language: Kotlin
- UI: Jetpack Compose & Material 3
- Database: Room.
- Libraries:
- Biweekly: Parsing iCalendar (.ics)
- Calendar Compose: The core Compose calendar component
- AboutLibraries: Automatic open-source license attribution.
MatCal is a learning-focused project and contributions are appreciated!
If you find a bug or have an idea for improvement, feel free to open an issue or submit a pull request.
Distributed under MIT License. See LICENSE for more information.

