As a Team, our task is to develop a personal task management app for Android.
You can download and install the latest version of Tudee here:
β¬οΈ Download Tudee APK (v1.0.0)
Record_2025-07-03-01-45-22_5e1cf1462d20f76061894a02b0d23938.mp4
This app is a practical demonstration of:
- Jetpack Compose UI
- Clean MVI Architecture
- Koin for Dependency Injection
- Coil
- Single Responsibility & SOLID Principles
- onboarding screen to appear only the first time I launch the app.
- home screen displaying statistics about todayβs tasks.
- create a new task with a title, description, priority, and category.
- view the full details of any task.
- view all tasks based on a selected date.
- delete any task.
- change a taskβs status from "To Do" to "In Progress," and from "In Progress" to "Done."
- see a list of predefined categories.
- add a new category, including selecting an image from my device.
- edit or delete any category that I created.
- switch between light and dark mode.
- the app to follow the deviceβs language settings and support both English and Arabic (no separate settings screen is required).
| Tech | Usage |
|---|---|
| Kotlin | Programming Language |
| Jetpack Compose | Declarative UI Framework |
| MVI | Architecture Pattern |
| Koin | Dependency Injection |
βββ data β βββ database β β βββ CategoryDao.kt β β βββ TaskDao.kt β β βββ TudeeDatabase.kt β βββ mapper β β βββ CategoryMapper.kt β β βββ TaskMapper.kt β βββ model β β βββ CategoryEntity.kt β β βββ TaskEntity.kt β βββ service β β βββ CategoryServiceImp.kt β β βββ MainServiceImpl.kt β β βββ SplashService.kt β β βββ TasksServiceImp.kt β βββ util β βββ Constants.kt β βββ safeCall.kt βββ design_system β βββ color β β βββ darkThemeColor.kt β β βββ lightThemeColor.kt β β βββ TudeeColors.kt β βββ component β β βββ AlertBottomSheet.kt β β βββ AppBar.kt β β βββ button_type β β β βββ FabButton.kt β β β βββ NegativeButton.kt β β β βββ NegativeTextButton.kt β β β βββ PrimaryButton.kt β β β βββ SecondaryButton.kt β β β βββ TextButton.kt β β βββ CategoryBottomSheet.kt β β βββ CategoryItem.kt β β βββ DatePickerDialog.kt β β βββ DayCard.kt β β βββ DefaultTextField.kt β β βββ HeaderContent.kt β β βββ LabelIconBox.kt β β βββ NavBar.kt β β βββ NoTasksSection.kt β β βββ ParagraphTextField.kt β β βββ Priority.kt β β βββ Slider.kt β β βββ TabsBar.kt β β βββ TaskCard.kt β β βββ ThemeSwitch.kt β β βββ TudeeSnackBar.kt β β βββ TudeeTopBar.kt β βββ resources β β βββ TudeeResources.kt β βββ text_style β β βββ defaultTextStyle.kt β β βββ Font.kt β β βββ TudeeTextStyle.kt β βββ theme β βββ Theme.kt β βββ TudeeTheme.kt βββ di β βββ appModule.kt β βββ dataModule.kt βββ domain β βββ model β β βββ Category.kt β β βββ task β β βββ Task.kt β β βββ TaskPriority.kt β β βββ TaskStatus.kt β βββ service β β βββ CategoriesService.kt β β βββ MainService.kt β β βββ SplashService.kt β β βββ TasksService.kt β βββ util β βββ DomainError.kt β βββ Result.kt βββ MainActivity.kt βββ presentation β βββ categories β β βββ CategoriesRoute.kt β β βββ CategoriesScreenActions.kt β β βββ CategoriesScreenEvents.kt β β βββ CategoriesScreen.kt β β βββ CategoriesScreenState.kt β β βββ CategoryViewModel.kt β βββ home β β βββ composable β β β βββ CardOverView.kt β β β βββ NoTask.kt β β β βββ OverViewSection.kt β β β βββ SliderStatus.kt β β β βββ TaskSection.kt β β β βββ TitleOverView.kt β β β βββ TopSlider.kt β β βββ HomeActions.kt β β βββ HomeEvent.kt β β βββ HomeRoute.kt β β βββ HomeScreen.kt β β βββ HomeUiState.kt β β βββ HomeViewModel.kt β βββ navigation β β βββ Screen.kt β β βββ TudeeNavGraph.kt β βββ shared β β βββ MainViewModel.kt β β βββ taskdetails β β β βββ TaskDetailsBottomSheet.kt β β β βββ TaskDetailsState.kt β β β βββ TaskDetailsViewModel.kt β β βββ taskeditor β β βββ TaskEditorActions.kt β β βββ TaskEditorBottomSheetContent.kt β β βββ TaskEditorBottomSheet.kt β β βββ TaskEditorEvent.kt β β βββ TaskEditorUiState.kt β β βββ TaskEditorViewModel.kt β βββ splash β β βββ onboard β β β βββ OnboardingRoute.kt β β β βββ OnboardingScreen.kt β β βββ splashscreen β β β βββ SplashReoute.kt β β β βββ SplashScreen.kt β β βββ viewmodel β β βββ SplashViewModel.kt β βββ tasks β β βββ DatePicker.kt β β βββ MonthHeader.kt β β βββ SwipableTask.kt β β βββ TaskDeleteButton.kt β β βββ TasksRoute.kt β β βββ TasksScreen.kt β β βββ viewmodel β β βββ TasksScreenActions.kt β β βββ TasksScreenState.kt β β βββ TasksViewModel.kt β β βββ TaskUi.kt β βββ tasks_by_category β β βββ TasksByCategoryEvents.kt β β βββ TasksByCategoryRoute.kt β β βββ TasksByCategoryScreenActions.kt β β βββ TasksByCategoryScreen.kt β β βββ TasksByCategoryScreenState.kt β β βββ TasksByCategoryViewModel.kt β βββ uimodel β β βββ TaskUi.kt β βββ utils β βββ errorToMessage.kt β βββ EventListener.kt β βββ GetCurrentDate.kt β βββ getCurrentLocalDateTime.kt β βββ Mapper.kt β βββ millisToLocalDateTime.kt βββ TudeeApp.kt











