Module Overview
The project consists of 30+ modules organized into several categories:Module Categories
Base Modules
Foundation modules that define core patterns and annotations.Interactor<P>: Base class for use casesSubjectInteractor<P, T>: Base class for observable use casesResultInteractor<P, R>: Base class for result-based operationsCoroutineDispatchers: Abstraction for coroutine dispatchers
Core Modules
Shared functionality used across features.core:analytics
core:analytics
Analytics and logging functionality
- Firebase Analytics integration
- Event logging abstraction
- Crashlytics reporting
core:downloader
core:downloader
Download management
- File downloading with progress
- Download queue management
- Based on DatMusic
core:image-loading
core:image-loading
Image loading utilities
- Coil integration
- Image caching strategies
- Cover art loading
core:networking
core:networking
Network layer setup
- Ktor client configuration
- API interceptors
- Network error handling
core:play
core:play
Playback functionality
- Audio player integration
- Uses Sarahang library
- Playback controls
core:remote-config
core:remote-config
Remote configuration
- Firebase Remote Config
- Feature flags
- A/B testing support
Data Layer Modules
Modules responsible for data management and persistence.data:database
Room database implementation with entities and DAOs.data:models
Data transfer objects and API models.- Network response models
- Serialization with kotlinx.serialization
- Archive.org API models
- Search filters and queries
data:repo
Repository implementations.data:prefs
DataStore-based preferences management.- User preferences
- App settings
- Reading state persistence
data:platform
Platform-specific data utilities.- User country detection
- App version information
- Platform-specific storage paths
Domain Module
Business logic layer with interactors and observers.UI Modules
Feature-based UI modules using Jetpack Compose.ui:auth
Authentication screens
- Sign in/Sign up
- Google authentication
- Password reset
ui:homepage
Main homepage
- Featured collections
- Recent items
- Recommendations
ui:search
Search functionality
- Query builder
- Filters (subject, creator, language)
- Search history
ui:library
User library
- Favorites
- Downloads
- Reading history
ui:item:detail
Item details
- Metadata display
- Files list
- Actions (favorite, download, share)
ui:reader
Readers (epub, pdf, online)
- PDF reader
- EPUB reader
- Online text reader
ui:profile
User profile
- Account settings
- Preferences
- Feedback
ui:components
Shared UI components
- Reusable composables
- Item cards
- Common widgets
Module Dependencies
The app module brings everything together:Dependency Flow
Modules follow a strict dependency hierarchy:Lower layers never depend on higher layers, ensuring clean architecture.
Kotlin Multiplatform Modules
Modules marked with// kmp are shared between Android and Desktop:
- All
data:*modules (database, models, prefs, repo, platform) base:domaindomaincore:*modules- Some
ui:*modules (common, components, theme, homepage, reader, etc.)
Build Configuration
Kafka uses Gradle convention plugins for consistent build configuration:- Kotlin/Compose compiler settings
- Android SDK versions
- Dependency versions
- Build optimizations