How infomaniak/android-calendar works
This is an Android calendar app with reusable Jetpack Compose calendar components. Users enter through account onboarding or an authenticated calendar view, navigate month, week, day, or planning screens, and can inspect, create, or edit events. The sampled activity establishes the navigation entry point; the sync manager explicitly downloads a date range and then synchronizes through CalendarManager. The tree documents additional UI capabilities, but most screen-to-view-model and data wiring was not sampled, so those links are omitted.
Main entry points: MainNavHost.kt Navigation host · MainActivity.kt Main activity · EventItem.kt Event display · MonthScreen.kt Month screen
Components 22
App shell
- Main activity
app/src/main/java/com/infomaniak/calendar/MainActivity.kt - Navigation host
app/src/main/java/com/infomaniak/calendar/ui/navigation/MainNavHost.kt - Calendar drawer
app/src/main/java/com/infomaniak/calendar/ui/component/drawer/CalendarDrawer.kt
Calendar views
- Month screen
app/src/main/java/com/infomaniak/calendar/ui/screen/month/MonthScreen.kt - Week screen
app/src/main/java/com/infomaniak/calendar/ui/screen/week/WeekScreen.kt - Day screen
app/src/main/java/com/infomaniak/calendar/ui/screen/day/DayScreen.kt - Three-day screen
app/src/main/java/com/infomaniak/calendar/ui/screen/threeDays/ThreeDayScreen.kt - Planning screen
app/src/main/java/com/infomaniak/calendar/ui/screen/planning/PlanningScreen.kt
Event workflows
- Event detail screen
app/src/main/java/com/infomaniak/calendar/ui/screen/eventDetail/detail/EventDetailScreen.kt - Event detail UI
CalendarComponents/EventDetail/src/main/kotlin/com/infomaniak/calendar/components/eventdetail/detail/EventDetail.kt - Event creation
app/src/main/java/com/infomaniak/calendar/ui/screen/eventDetail/creation/EventCreationScreen.kt - Event editing
app/src/main/java/com/infomaniak/calendar/ui/screen/eventDetail/edit/EventEditScreen.kt
Shared components
- Calendar components
CalendarComponents/Calendar/src/main/kotlin/com/infomaniak/calendar/components/calendar/component/ExpandableCalendar.kt - Day timeline
CalendarComponents/Day/src/main/kotlin/com/infomaniak/calendar/components/day/DayTimeline.kt - Planning components
CalendarComponents/Planning/src/main/kotlin/com/infomaniak/calendar/components/planning/Planning.kt - Event display
CalendarComponents/Event/src/main/kotlin/com/infomaniak/calendar/components/event/EventItem.kt - Event and date models
CalendarComponents/Foundation/src/main/kotlin/com/infomaniak/calendar/components/foundation/models/EventUi.kt
Accounts and sync
- Onboarding
app/src/main/java/com/infomaniak/calendar/ui/screen/onboarding/OnboardingScreen.kt - Account management
app/src/main/java/com/infomaniak/calendar/ui/screen/accounts/AccountsListScreen.kt - Event sync manager
app/src/main/java/com/infomaniak/calendar/manager/SyncEventsManager.kt
Other components
- Calendar user
- Calendar manager
Connections 23
- Calendar user → Main activity: opens app
- Main activity → Navigation host: hosts
- Navigation host → Month screen: routes
- Navigation host → Week screen: routes
- Navigation host → Day screen: routes
- Navigation host → Three-day screen: routes
- Navigation host → Planning screen: routes
- Navigation host → Onboarding: routes
- Navigation host → Event detail screen: routes
- Navigation host → Event creation: routes
- Navigation host → Event editing: routes
- Month screen → Calendar components: renders with
- Week screen → Calendar components: renders with
- Day screen → Day timeline: renders with
- Planning screen → Planning components: renders with
- Day timeline → Event display: displays
- Planning components → Event display: displays
- Event display → Event and date models: uses models
- Event detail screen → Event detail UI: renders with
- Main activity → Event sync manager: observes errors
- Event sync manager → Calendar manager: downloads and syncs
- Calendar user → Account management: manages accounts
- Calendar user → Calendar drawer: selects calendars