A modern Android instant messaging and logging application.
Imlog is a personal-first messaging app designed for private logging and direct communication. It prioritizes local data ownership and offline-first functionality.
- Local-First Architecture: All messages and data are stored locally on your device
- Multi-Format Support: Send and receive text, images, audio recordings, videos, and files
- Topic-Based Organization: Organize conversations into topics for better management
- Rich Media Playback: Built-in audio and video playback using Media3
- Privacy Focused: No cloud sync, no account required - your data stays on your device
| Category | Technology |
|---|---|
| Language | Kotlin |
| UI | Jetpack Compose |
| Database | SQLDelight |
| Dependency Injection | Hilt |
| Media Playback | Media3 (ExoPlayer) |
| Image Loading | Coil |
| Serialization | Kotlinx Serialization |
| Background Tasks | WorkManager |
| Architecture | Clean Architecture + MVVM |
- Android 11 (API 30) or higher
- Android Studio Hedgehog or later
git clone https://github.com/fseasy/imlog.git
cd imlog./gradlew assembleDebugadb install app/build/outputs/apk/debug/app-debug.apkapp/src/main/kotlin/top/fseasy/imlog/
├── data/ # Data layer - repositories, database, datastore
├── di/ # Dependency injection modules
├── domain/ # Domain layer - models, use cases, repository interfaces
├── features/ # Feature modules
│ ├── auth/ # Authentication (user creation & selection)
│ ├── home/ # Main home screen with topics
│ ├── settings/ # Settings and preferences
│ └── view/ # Media viewing
├── ui/ # Shared UI components and theme
└── worker/ # Background workers
Imlog follows Clean Architecture with three distinct layers:
- Domain Layer: Contains business logic, use cases, and domain models
- Data Layer: Implements repositories, manages database operations via SQLDelight
- UI Layer: Jetpack Compose screens and ViewModels
Apache License 2.0 - see LICENSE for details.
Contributions are welcome. Please feel free to submit issues or pull requests.