A modern Android calendar application built with Jetpack Compose and following clean architecture principles. The app allows users to manage their tasks with local storage and server synchronization capabilities, implementing an offline-first approach.
- Monthly calendar view with task indicators
- Intuitive navigation between months
- Year and month picker with side-by-side dropdowns
- Current day highlighting
- Task count display for each day
- Add new tasks with title, description, and date
- Delete existing tasks
- View tasks for selected dates
- Task list with expandable/collapsible view
- Real-time task updates
- Local-first data storage
- Automatic background synchronization
- Conflict resolution strategy
- Queue-based sync operations
- Network state awareness
- Data consistency maintenance
- Optimistic UI updates
- Background synchronization with server
- Offline support with local storage
- Progress tracking during sync
- Ability to cancel sync process
- Visual feedback for sync status
- Automatic retry mechanism
- Sync queue management
- Material Design 3 implementation
- Dark/Light theme support
- Smooth animations and transitions
- Responsive layout
- User-friendly error handling
- Clean Architecture
- MVVM and MVI pattern
- Repository pattern
- Single Activity architecture
- Dependency Injection with Hilt
- Offline-First design pattern
- Jetpack Compose: UI toolkit
- Room: Local database
- Kotlin Coroutines: Asynchronous programming
- Flow: Reactive programming
- Hilt: Dependency injection
- WorkManager: Background tasks
- Material3: Design system
- ViewModel: UI state management
- Task Entity with fields:
- ID (Primary Key)
- User ID
- Title
- Description
- Date
- Sync Status
- Remote ID
- Mark for Deletion
- Last Modified
app/
├── data/
│ ├── api/ # API service interfaces and models
│ ├── local/ # Room database and DAOs
│ └── repository/ # Repository implementations
├── di/ # Dependency injection modules
├── domain/
│ ├── model/ # Domain models
│ └── repository/ # Repository interfaces
├── presentation/
│ ├── calendar/ # Calendar screen and components
│ └── splash/ # Splash screen
├── ui/
│ └── theme/ # Theme configuration
└── worker/ # Background workers for sync
- Monthly calendar grid
- Task list section
- Date selection
- Navigation controls
- Sync status indicator
- Task creation dialog
- Task list display
- Task deletion functionality
- Task synchronization
- Local Database Operations
- Immediate local storage
- Optimistic UI updates
- Conflict detection
- Sync status tracking
- Sync Queue Management
- Operation queuing
- Priority-based execution
- Retry mechanism
- Error handling
- Network State Management
- Connection monitoring
- Automatic sync triggers
- Background sync scheduling
- Battery optimization
- Background sync worker
- Progress tracking
- Error handling
- Network state management
- Room database for task persistence
- Reactive queries with Flow
- Efficient data access patterns
- Optimistic locking
- Conflict resolution
-
Data Operations
- All operations first saved locally
- Immediate UI feedback
- Sync status tracking
- Conflict resolution
-
Sync Process
- Background sync worker
- Queue-based operation processing
- Automatic retry on failure
- Network state awareness
-
Conflict Resolution
- Last-write-wins strategy
- WorkManager for background sync
- Progress updates
- Error handling
- Queue management
- Custom calendar grid
- Date picker dialog
- Loading indicators
- Error messages
- Sync status indicators
- ETAG Support and Pagination
- Multi-user support
- Task categories and tags
- Task reminders and notifications
- Calendar view customization
- Task sharing capabilities
- Advanced sync options
- Calendar export/import
- Widget support
- Enhanced conflict resolution
- Offline analytics
- Data compression
- Batch operations
- Clone the repository
- Open in Android Studio
- Sync Gradle files
- Run on emulator or device
- Android Studio Arctic Fox or newer
- Minimum SDK: 28 (Android 9.0)
- Target SDK: 34 (Android 14)
- Kotlin 1.9.0 or newer
Feel free to submit issues and enhancement requests.
