diff --git a/mobile/integration_test/test_utils/general_helper.dart b/mobile/integration_test/test_utils/general_helper.dart
index 50900cd874..bf2b252b2b 100644
--- a/mobile/integration_test/test_utils/general_helper.dart
+++ b/mobile/integration_test/test_utils/general_helper.dart
@@ -4,7 +4,7 @@ import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
 import 'package:integration_test/integration_test.dart';
 import 'package:isar/isar.dart';
 // ignore: depend_on_referenced_packages
diff --git a/mobile/lib/main.dart b/mobile/lib/main.dart
index 6ecf7e43a9..b2c10fdace 100644
--- a/mobile/lib/main.dart
+++ b/mobile/lib/main.dart
@@ -11,7 +11,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:timezone/data/latest.dart';
 import 'package:immich_mobile/constants/locales.dart';
-import 'package:immich_mobile/modules/backup/background_service/background.service.dart';
+import 'package:immich_mobile/services/background.service.dart';
 import 'package:immich_mobile/entities/backup_album.entity.dart';
 import 'package:immich_mobile/entities/duplicated_asset.entity.dart';
 import 'package:immich_mobile/routing/router.dart';
@@ -26,10 +26,10 @@ import 'package:immich_mobile/entities/ios_device_asset.entity.dart';
 import 'package:immich_mobile/entities/logger_message.entity.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
 import 'package:immich_mobile/entities/user.entity.dart';
-import 'package:immich_mobile/shared/providers/app_state.provider.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
-import 'package:immich_mobile/shared/services/immich_logger.service.dart';
-import 'package:immich_mobile/shared/services/local_notification.service.dart';
+import 'package:immich_mobile/providers/app_life_cycle.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
+import 'package:immich_mobile/services/immich_logger.service.dart';
+import 'package:immich_mobile/services/local_notification.service.dart';
 import 'package:immich_mobile/utils/http_ssl_cert_override.dart';
 import 'package:immich_mobile/utils/immich_app_theme.dart';
 import 'package:immich_mobile/utils/migration.dart';
diff --git a/mobile/lib/module_template/models/store_model_here.txt b/mobile/lib/module_template/models/store_model_here.txt
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/mobile/lib/module_template/providers/store_providers_here.txt b/mobile/lib/module_template/providers/store_providers_here.txt
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/mobile/lib/module_template/services/store_services_here.txt b/mobile/lib/module_template/services/store_services_here.txt
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/mobile/lib/module_template/views/store_views_here.txt b/mobile/lib/module_template/views/store_views_here.txt
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/mobile/lib/module_template/widgets/store_ui_here.txt b/mobile/lib/module_template/widgets/store_ui_here.txt
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/mobile/lib/modules/activities/views/activities_page.dart b/mobile/lib/modules/activities/views/activities_page.dart
index d861afec7f..4dc0f5252b 100644
--- a/mobile/lib/modules/activities/views/activities_page.dart
+++ b/mobile/lib/modules/activities/views/activities_page.dart
@@ -6,13 +6,13 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/asyncvalue_extensions.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/models/activities/activity.model.dart';
-import 'package:immich_mobile/modules/activities/providers/activity.provider.dart';
+import 'package:immich_mobile/providers/activity.provider.dart';
 import 'package:immich_mobile/modules/activities/widgets/activity_text_field.dart';
 import 'package:immich_mobile/modules/activities/widgets/activity_tile.dart';
 import 'package:immich_mobile/modules/activities/widgets/dismissible_activity.dart';
-import 'package:immich_mobile/modules/album/providers/current_album.provider.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/current_asset.provider.dart';
-import 'package:immich_mobile/shared/providers/user.provider.dart';
+import 'package:immich_mobile/providers/album/current_album.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/current_asset.provider.dart';
+import 'package:immich_mobile/providers/user.provider.dart';
 
 @RoutePage()
 class ActivitiesPage extends HookConsumerWidget {
diff --git a/mobile/lib/modules/activities/widgets/activity_text_field.dart b/mobile/lib/modules/activities/widgets/activity_text_field.dart
index 1d50fafaa5..0e17d8c8ba 100644
--- a/mobile/lib/modules/activities/widgets/activity_text_field.dart
+++ b/mobile/lib/modules/activities/widgets/activity_text_field.dart
@@ -2,10 +2,10 @@ import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/activities/providers/activity.provider.dart';
-import 'package:immich_mobile/modules/album/providers/current_album.provider.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/current_asset.provider.dart';
-import 'package:immich_mobile/shared/providers/user.provider.dart';
+import 'package:immich_mobile/providers/activity.provider.dart';
+import 'package:immich_mobile/providers/album/current_album.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/current_asset.provider.dart';
+import 'package:immich_mobile/providers/user.provider.dart';
 import 'package:immich_mobile/shared/ui/user_circle_avatar.dart';
 
 class ActivityTextField extends HookConsumerWidget {
diff --git a/mobile/lib/modules/activities/widgets/activity_tile.dart b/mobile/lib/modules/activities/widgets/activity_tile.dart
index 963d3295ad..1a13c5a9e1 100644
--- a/mobile/lib/modules/activities/widgets/activity_tile.dart
+++ b/mobile/lib/modules/activities/widgets/activity_tile.dart
@@ -3,8 +3,8 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/extensions/datetime_extensions.dart';
 import 'package:immich_mobile/models/activities/activity.model.dart';
-import 'package:immich_mobile/modules/asset_viewer/image_providers/immich_remote_thumbnail_provider.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/current_asset.provider.dart';
+import 'package:immich_mobile/providers/image/immich_remote_thumbnail_provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/current_asset.provider.dart';
 import 'package:immich_mobile/shared/ui/user_circle_avatar.dart';
 
 class ActivityTile extends HookConsumerWidget {
diff --git a/mobile/lib/modules/album/ui/add_to_album_bottom_sheet.dart b/mobile/lib/modules/album/ui/add_to_album_bottom_sheet.dart
index 046648f822..8d7db56a7b 100644
--- a/mobile/lib/modules/album/ui/add_to_album_bottom_sheet.dart
+++ b/mobile/lib/modules/album/ui/add_to_album_bottom_sheet.dart
@@ -4,9 +4,9 @@ import 'package:flutter/material.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/album/providers/album.provider.dart';
-import 'package:immich_mobile/modules/album/providers/shared_album.provider.dart';
-import 'package:immich_mobile/modules/album/services/album.service.dart';
+import 'package:immich_mobile/providers/album/album.provider.dart';
+import 'package:immich_mobile/providers/album/shared_album.provider.dart';
+import 'package:immich_mobile/services/album.service.dart';
 import 'package:immich_mobile/modules/album/ui/add_to_album_sliverlist.dart';
 import 'package:immich_mobile/routing/router.dart';
 import 'package:immich_mobile/entities/album.entity.dart';
diff --git a/mobile/lib/modules/album/ui/add_to_album_sliverlist.dart b/mobile/lib/modules/album/ui/add_to_album_sliverlist.dart
index 0af5ac7408..2986c50ad6 100644
--- a/mobile/lib/modules/album/ui/add_to_album_sliverlist.dart
+++ b/mobile/lib/modules/album/ui/add_to_album_sliverlist.dart
@@ -1,7 +1,7 @@
 import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/album/providers/album_sort_by_options.provider.dart';
+import 'package:immich_mobile/providers/album/album_sort_by_options.provider.dart';
 import 'package:immich_mobile/modules/album/ui/album_thumbnail_listtile.dart';
 import 'package:immich_mobile/entities/album.entity.dart';
 
diff --git a/mobile/lib/modules/album/ui/album_title_text_field.dart b/mobile/lib/modules/album/ui/album_title_text_field.dart
index ace174c9c6..8715c0c038 100644
--- a/mobile/lib/modules/album/ui/album_title_text_field.dart
+++ b/mobile/lib/modules/album/ui/album_title_text_field.dart
@@ -2,7 +2,7 @@ import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/album/providers/album_title.provider.dart';
+import 'package:immich_mobile/providers/album/album_title.provider.dart';
 
 class AlbumTitleTextField extends ConsumerWidget {
   const AlbumTitleTextField({
diff --git a/mobile/lib/modules/album/ui/album_viewer_appbar.dart b/mobile/lib/modules/album/ui/album_viewer_appbar.dart
index 98b14a2fd9..366b2543e1 100644
--- a/mobile/lib/modules/album/ui/album_viewer_appbar.dart
+++ b/mobile/lib/modules/album/ui/album_viewer_appbar.dart
@@ -4,10 +4,10 @@ import 'package:flutter/material.dart';
 import 'package:fluttertoast/fluttertoast.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/activities/providers/activity_statistics.provider.dart';
-import 'package:immich_mobile/modules/album/providers/album.provider.dart';
-import 'package:immich_mobile/modules/album/providers/album_viewer.provider.dart';
-import 'package:immich_mobile/modules/album/providers/shared_album.provider.dart';
+import 'package:immich_mobile/providers/activity_statistics.provider.dart';
+import 'package:immich_mobile/providers/album/album.provider.dart';
+import 'package:immich_mobile/providers/album/album_viewer.provider.dart';
+import 'package:immich_mobile/providers/album/shared_album.provider.dart';
 import 'package:immich_mobile/routing/router.dart';
 import 'package:immich_mobile/entities/album.entity.dart';
 import 'package:immich_mobile/shared/ui/immich_toast.dart';
diff --git a/mobile/lib/modules/album/ui/album_viewer_editable_title.dart b/mobile/lib/modules/album/ui/album_viewer_editable_title.dart
index 6f8df81a2e..5114d7ba7f 100644
--- a/mobile/lib/modules/album/ui/album_viewer_editable_title.dart
+++ b/mobile/lib/modules/album/ui/album_viewer_editable_title.dart
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/album/providers/album_viewer.provider.dart';
+import 'package:immich_mobile/providers/album/album_viewer.provider.dart';
 import 'package:immich_mobile/entities/album.entity.dart';
 
 class AlbumViewerEditableTitle extends HookConsumerWidget {
diff --git a/mobile/lib/modules/album/views/album_options_part.dart b/mobile/lib/modules/album/views/album_options_part.dart
index a3106e8e5a..e83a0dca67 100644
--- a/mobile/lib/modules/album/views/album_options_part.dart
+++ b/mobile/lib/modules/album/views/album_options_part.dart
@@ -5,8 +5,8 @@ import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:fluttertoast/fluttertoast.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/album/providers/shared_album.provider.dart';
-import 'package:immich_mobile/modules/login/providers/authentication.provider.dart';
+import 'package:immich_mobile/providers/album/shared_album.provider.dart';
+import 'package:immich_mobile/providers/authentication.provider.dart';
 import 'package:immich_mobile/routing/router.dart';
 import 'package:immich_mobile/entities/album.entity.dart';
 import 'package:immich_mobile/entities/user.entity.dart';
diff --git a/mobile/lib/modules/album/views/album_viewer_page.dart b/mobile/lib/modules/album/views/album_viewer_page.dart
index 57fb1603d3..36f9f40ffe 100644
--- a/mobile/lib/modules/album/views/album_viewer_page.dart
+++ b/mobile/lib/modules/album/views/album_viewer_page.dart
@@ -9,19 +9,19 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/asyncvalue_extensions.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/models/albums/asset_selection_page_result.model.dart';
-import 'package:immich_mobile/modules/album/providers/album.provider.dart';
-import 'package:immich_mobile/modules/album/providers/current_album.provider.dart';
-import 'package:immich_mobile/modules/album/providers/shared_album.provider.dart';
-import 'package:immich_mobile/modules/album/services/album.service.dart';
+import 'package:immich_mobile/providers/album/album.provider.dart';
+import 'package:immich_mobile/providers/album/current_album.provider.dart';
+import 'package:immich_mobile/providers/album/shared_album.provider.dart';
+import 'package:immich_mobile/services/album.service.dart';
 import 'package:immich_mobile/modules/album/ui/album_action_outlined_button.dart';
 import 'package:immich_mobile/modules/album/ui/album_viewer_editable_title.dart';
-import 'package:immich_mobile/modules/home/providers/multiselect.provider.dart';
-import 'package:immich_mobile/modules/login/providers/authentication.provider.dart';
+import 'package:immich_mobile/providers/multiselect.provider.dart';
+import 'package:immich_mobile/providers/authentication.provider.dart';
 import 'package:immich_mobile/modules/album/ui/album_viewer_appbar.dart';
 import 'package:immich_mobile/routing/router.dart';
 import 'package:immich_mobile/entities/album.entity.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/asset.provider.dart';
+import 'package:immich_mobile/providers/asset.provider.dart';
 import 'package:immich_mobile/shared/ui/asset_grid/multiselect_grid.dart';
 import 'package:immich_mobile/shared/ui/immich_toast.dart';
 import 'package:immich_mobile/shared/ui/user_circle_avatar.dart';
diff --git a/mobile/lib/modules/album/views/asset_selection_page.dart b/mobile/lib/modules/album/views/asset_selection_page.dart
index 2a37f12d5a..bcf94e62ae 100644
--- a/mobile/lib/modules/album/views/asset_selection_page.dart
+++ b/mobile/lib/modules/album/views/asset_selection_page.dart
@@ -6,7 +6,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/asyncvalue_extensions.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/models/albums/asset_selection_page_result.model.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/render_list.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/render_list.provider.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/asset_grid_data_structure.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/immich_asset_grid.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
diff --git a/mobile/lib/modules/album/views/create_album_page.dart b/mobile/lib/modules/album/views/create_album_page.dart
index 58620d8fb5..1329c1e74b 100644
--- a/mobile/lib/modules/album/views/create_album_page.dart
+++ b/mobile/lib/modules/album/views/create_album_page.dart
@@ -5,14 +5,14 @@ import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/models/albums/asset_selection_page_result.model.dart';
-import 'package:immich_mobile/modules/album/providers/album.provider.dart';
-import 'package:immich_mobile/modules/album/providers/album_title.provider.dart';
+import 'package:immich_mobile/providers/album/album.provider.dart';
+import 'package:immich_mobile/providers/album/album_title.provider.dart';
 import 'package:immich_mobile/modules/album/ui/album_action_outlined_button.dart';
 import 'package:immich_mobile/modules/album/ui/album_title_text_field.dart';
 import 'package:immich_mobile/modules/album/ui/shared_album_thumbnail_image.dart';
 import 'package:immich_mobile/routing/router.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/asset.provider.dart';
+import 'package:immich_mobile/providers/asset.provider.dart';
 
 @RoutePage()
 // ignore: must_be_immutable
diff --git a/mobile/lib/modules/album/views/library_page.dart b/mobile/lib/modules/album/views/library_page.dart
index b8b1b6b392..5f089f70ff 100644
--- a/mobile/lib/modules/album/views/library_page.dart
+++ b/mobile/lib/modules/album/views/library_page.dart
@@ -4,11 +4,11 @@ import 'package:flutter/material.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/album/providers/album.provider.dart';
-import 'package:immich_mobile/modules/album/providers/album_sort_by_options.provider.dart';
+import 'package:immich_mobile/providers/album/album.provider.dart';
+import 'package:immich_mobile/providers/album/album_sort_by_options.provider.dart';
 import 'package:immich_mobile/modules/album/ui/album_thumbnail_card.dart';
 import 'package:immich_mobile/routing/router.dart';
-import 'package:immich_mobile/shared/providers/server_info.provider.dart';
+import 'package:immich_mobile/providers/server_info.provider.dart';
 import 'package:immich_mobile/shared/ui/immich_app_bar.dart';
 
 @RoutePage()
diff --git a/mobile/lib/modules/album/views/select_additional_user_for_sharing_page.dart b/mobile/lib/modules/album/views/select_additional_user_for_sharing_page.dart
index d1532cde02..c83faa17a6 100644
--- a/mobile/lib/modules/album/views/select_additional_user_for_sharing_page.dart
+++ b/mobile/lib/modules/album/views/select_additional_user_for_sharing_page.dart
@@ -5,7 +5,7 @@ import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/asyncvalue_extensions.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/album/providers/suggested_shared_users.provider.dart';
+import 'package:immich_mobile/providers/album/suggested_shared_users.provider.dart';
 import 'package:immich_mobile/entities/album.entity.dart';
 import 'package:immich_mobile/entities/user.entity.dart';
 import 'package:immich_mobile/shared/ui/user_circle_avatar.dart';
diff --git a/mobile/lib/modules/album/views/select_user_for_sharing_page.dart b/mobile/lib/modules/album/views/select_user_for_sharing_page.dart
index b2b16b4552..bb94389466 100644
--- a/mobile/lib/modules/album/views/select_user_for_sharing_page.dart
+++ b/mobile/lib/modules/album/views/select_user_for_sharing_page.dart
@@ -5,9 +5,9 @@ import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/asyncvalue_extensions.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/album/providers/album_title.provider.dart';
-import 'package:immich_mobile/modules/album/providers/shared_album.provider.dart';
-import 'package:immich_mobile/modules/album/providers/suggested_shared_users.provider.dart';
+import 'package:immich_mobile/providers/album/album_title.provider.dart';
+import 'package:immich_mobile/providers/album/shared_album.provider.dart';
+import 'package:immich_mobile/providers/album/suggested_shared_users.provider.dart';
 import 'package:immich_mobile/routing/router.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
 import 'package:immich_mobile/entities/user.entity.dart';
diff --git a/mobile/lib/modules/album/views/sharing_page.dart b/mobile/lib/modules/album/views/sharing_page.dart
index 44a7faee46..f8de408c2e 100644
--- a/mobile/lib/modules/album/views/sharing_page.dart
+++ b/mobile/lib/modules/album/views/sharing_page.dart
@@ -4,13 +4,13 @@ import 'package:flutter/material.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/album/providers/album_sort_by_options.provider.dart';
-import 'package:immich_mobile/modules/album/providers/shared_album.provider.dart';
+import 'package:immich_mobile/providers/album/album_sort_by_options.provider.dart';
+import 'package:immich_mobile/providers/album/shared_album.provider.dart';
 import 'package:immich_mobile/modules/album/ui/album_thumbnail_card.dart';
-import 'package:immich_mobile/modules/partner/providers/partner.provider.dart';
+import 'package:immich_mobile/providers/partner.provider.dart';
 import 'package:immich_mobile/modules/partner/ui/partner_list.dart';
 import 'package:immich_mobile/routing/router.dart';
-import 'package:immich_mobile/shared/providers/user.provider.dart';
+import 'package:immich_mobile/providers/user.provider.dart';
 import 'package:immich_mobile/shared/ui/immich_app_bar.dart';
 import 'package:immich_mobile/shared/ui/immich_thumbnail.dart';
 
diff --git a/mobile/lib/modules/archive/services/store_services_here.txt b/mobile/lib/modules/archive/services/store_services_here.txt
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/mobile/lib/modules/archive/views/archive_page.dart b/mobile/lib/modules/archive/views/archive_page.dart
index 1f96425f48..fce3cadf39 100644
--- a/mobile/lib/modules/archive/views/archive_page.dart
+++ b/mobile/lib/modules/archive/views/archive_page.dart
@@ -2,8 +2,8 @@ import 'package:auto_route/auto_route.dart';
 import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/archive/providers/archive_asset_provider.dart';
-import 'package:immich_mobile/modules/home/providers/multiselect.provider.dart';
+import 'package:immich_mobile/providers/archive.provider.dart';
+import 'package:immich_mobile/providers/multiselect.provider.dart';
 import 'package:immich_mobile/shared/ui/asset_grid/multiselect_grid.dart';
 
 @RoutePage()
diff --git a/mobile/lib/modules/asset_viewer/ui/bottom_gallery_bar.dart b/mobile/lib/modules/asset_viewer/ui/bottom_gallery_bar.dart
index 691d6ac958..7178939e7e 100644
--- a/mobile/lib/modules/asset_viewer/ui/bottom_gallery_bar.dart
+++ b/mobile/lib/modules/asset_viewer/ui/bottom_gallery_bar.dart
@@ -6,17 +6,17 @@ import 'package:flutter/material.dart';
 import 'package:fluttertoast/fluttertoast.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/asset_stack.provider.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/image_viewer_page_state.provider.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/show_controls.provider.dart';
-import 'package:immich_mobile/modules/asset_viewer/services/asset_stack.service.dart';
+import 'package:immich_mobile/providers/asset_viewer/asset_stack.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/image_viewer_page_state.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/show_controls.provider.dart';
+import 'package:immich_mobile/services/asset_stack.service.dart';
 import 'package:immich_mobile/modules/asset_viewer/ui/video_controls.dart';
 import 'package:immich_mobile/modules/home/ui/delete_dialog.dart';
 import 'package:immich_mobile/routing/router.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/asset.provider.dart';
-import 'package:immich_mobile/shared/providers/server_info.provider.dart';
-import 'package:immich_mobile/shared/providers/user.provider.dart';
+import 'package:immich_mobile/providers/asset.provider.dart';
+import 'package:immich_mobile/providers/server_info.provider.dart';
+import 'package:immich_mobile/providers/user.provider.dart';
 import 'package:immich_mobile/shared/ui/immich_toast.dart';
 
 class BottomGalleryBar extends ConsumerWidget {
diff --git a/mobile/lib/modules/asset_viewer/ui/custom_video_player_controls.dart b/mobile/lib/modules/asset_viewer/ui/custom_video_player_controls.dart
index 0e8f14301a..7e7c71de60 100644
--- a/mobile/lib/modules/asset_viewer/ui/custom_video_player_controls.dart
+++ b/mobile/lib/modules/asset_viewer/ui/custom_video_player_controls.dart
@@ -1,9 +1,9 @@
 import 'package:flutter/material.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/show_controls.provider.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/video_player_controls_provider.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/video_player_value_provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/show_controls.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/video_player_controls_provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/video_player_value_provider.dart';
 import 'package:immich_mobile/modules/asset_viewer/ui/center_play_button.dart';
 import 'package:immich_mobile/shared/ui/delayed_loading_indicator.dart';
 import 'package:immich_mobile/shared/ui/hooks/timer_hook.dart';
diff --git a/mobile/lib/modules/asset_viewer/ui/description_input.dart b/mobile/lib/modules/asset_viewer/ui/description_input.dart
index cee4237751..713f06da10 100644
--- a/mobile/lib/modules/asset_viewer/ui/description_input.dart
+++ b/mobile/lib/modules/asset_viewer/ui/description_input.dart
@@ -3,9 +3,9 @@ import 'package:flutter/material.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/asset_description.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/asset_description.provider.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/user.provider.dart';
+import 'package:immich_mobile/providers/user.provider.dart';
 import 'package:immich_mobile/shared/ui/immich_toast.dart';
 import 'package:logging/logging.dart';
 
diff --git a/mobile/lib/modules/asset_viewer/ui/exif_sheet/exif_bottom_sheet.dart b/mobile/lib/modules/asset_viewer/ui/exif_sheet/exif_bottom_sheet.dart
index 1b03997b04..d9dedf6d6a 100644
--- a/mobile/lib/modules/asset_viewer/ui/exif_sheet/exif_bottom_sheet.dart
+++ b/mobile/lib/modules/asset_viewer/ui/exif_sheet/exif_bottom_sheet.dart
@@ -11,7 +11,7 @@ import 'package:immich_mobile/modules/asset_viewer/ui/exif_sheet/exif_location.d
 import 'package:immich_mobile/modules/asset_viewer/ui/exif_sheet/exif_people.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
 import 'package:immich_mobile/entities/exif_info.entity.dart';
-import 'package:immich_mobile/shared/providers/asset.provider.dart';
+import 'package:immich_mobile/providers/asset.provider.dart';
 import 'package:immich_mobile/utils/selection_handlers.dart';
 
 class ExifBottomSheet extends HookConsumerWidget {
diff --git a/mobile/lib/modules/asset_viewer/ui/exif_sheet/exif_people.dart b/mobile/lib/modules/asset_viewer/ui/exif_sheet/exif_people.dart
index c7920355c6..f59f43fee0 100644
--- a/mobile/lib/modules/asset_viewer/ui/exif_sheet/exif_people.dart
+++ b/mobile/lib/modules/asset_viewer/ui/exif_sheet/exif_people.dart
@@ -5,7 +5,7 @@ import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/asset_people.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/asset_people.provider.dart';
 import 'package:immich_mobile/models/search/search_curated_content.model.dart';
 import 'package:immich_mobile/modules/search/ui/curated_people_row.dart';
 import 'package:immich_mobile/modules/search/ui/person_name_edit_form.dart';
diff --git a/mobile/lib/modules/asset_viewer/ui/gallery_app_bar.dart b/mobile/lib/modules/asset_viewer/ui/gallery_app_bar.dart
index 73582b9616..b0ce21cd5a 100644
--- a/mobile/lib/modules/asset_viewer/ui/gallery_app_bar.dart
+++ b/mobile/lib/modules/asset_viewer/ui/gallery_app_bar.dart
@@ -2,19 +2,19 @@ import 'package:auto_route/auto_route.dart';
 import 'package:flutter/material.dart';
 import 'package:fluttertoast/fluttertoast.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/album/providers/current_album.provider.dart';
+import 'package:immich_mobile/providers/album/current_album.provider.dart';
 import 'package:immich_mobile/modules/album/ui/add_to_album_bottom_sheet.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/image_viewer_page_state.provider.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/show_controls.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/image_viewer_page_state.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/show_controls.provider.dart';
 import 'package:immich_mobile/modules/asset_viewer/ui/top_control_app_bar.dart';
-import 'package:immich_mobile/modules/backup/providers/manual_upload.provider.dart';
-import 'package:immich_mobile/modules/trash/providers/trashed_asset.provider.dart';
+import 'package:immich_mobile/providers/backup/manual_upload.provider.dart';
+import 'package:immich_mobile/providers/trash.provider.dart';
 import 'package:immich_mobile/modules/home/ui/upload_dialog.dart';
-import 'package:immich_mobile/modules/partner/providers/partner.provider.dart';
+import 'package:immich_mobile/providers/partner.provider.dart';
 import 'package:immich_mobile/routing/router.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/asset.provider.dart';
-import 'package:immich_mobile/shared/providers/user.provider.dart';
+import 'package:immich_mobile/providers/asset.provider.dart';
+import 'package:immich_mobile/providers/user.provider.dart';
 import 'package:immich_mobile/shared/ui/immich_toast.dart';
 
 class GalleryAppBar extends ConsumerWidget {
diff --git a/mobile/lib/modules/asset_viewer/ui/top_control_app_bar.dart b/mobile/lib/modules/asset_viewer/ui/top_control_app_bar.dart
index db3da0b173..6406725b21 100644
--- a/mobile/lib/modules/asset_viewer/ui/top_control_app_bar.dart
+++ b/mobile/lib/modules/asset_viewer/ui/top_control_app_bar.dart
@@ -1,10 +1,10 @@
 import 'package:auto_route/auto_route.dart';
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/activities/providers/activity_statistics.provider.dart';
-import 'package:immich_mobile/modules/album/providers/current_album.provider.dart';
+import 'package:immich_mobile/providers/activity_statistics.provider.dart';
+import 'package:immich_mobile/providers/album/current_album.provider.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/asset.provider.dart';
+import 'package:immich_mobile/providers/asset.provider.dart';
 
 class TopControlAppBar extends HookConsumerWidget {
   const TopControlAppBar({
diff --git a/mobile/lib/modules/asset_viewer/ui/video_controls.dart b/mobile/lib/modules/asset_viewer/ui/video_controls.dart
index 45a9372099..a5f5f18ce8 100644
--- a/mobile/lib/modules/asset_viewer/ui/video_controls.dart
+++ b/mobile/lib/modules/asset_viewer/ui/video_controls.dart
@@ -2,9 +2,9 @@ import 'dart:math';
 
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/show_controls.provider.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/video_player_controls_provider.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/video_player_value_provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/show_controls.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/video_player_controls_provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/video_player_value_provider.dart';
 
 /// The video controls for the [videPlayerControlsProvider]
 class VideoControls extends ConsumerWidget {
diff --git a/mobile/lib/modules/asset_viewer/views/gallery_viewer.dart b/mobile/lib/modules/asset_viewer/views/gallery_viewer.dart
index dfc5842faa..033df23cc1 100644
--- a/mobile/lib/modules/asset_viewer/views/gallery_viewer.dart
+++ b/mobile/lib/modules/asset_viewer/views/gallery_viewer.dart
@@ -8,19 +8,19 @@ import 'package:flutter/services.dart';
 import 'package:flutter_hooks/flutter_hooks.dart' hide Store;
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/asset_viewer/image_providers/immich_remote_image_provider.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/asset_stack.provider.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/current_asset.provider.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/show_controls.provider.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/video_player_value_provider.dart';
+import 'package:immich_mobile/providers/image/immich_remote_image_provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/asset_stack.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/current_asset.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/show_controls.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/video_player_value_provider.dart';
 import 'package:immich_mobile/modules/asset_viewer/ui/advanced_bottom_sheet.dart';
 import 'package:immich_mobile/modules/asset_viewer/ui/bottom_gallery_bar.dart';
 import 'package:immich_mobile/modules/asset_viewer/ui/exif_sheet/exif_bottom_sheet.dart';
 import 'package:immich_mobile/modules/asset_viewer/ui/gallery_app_bar.dart';
 import 'package:immich_mobile/modules/asset_viewer/views/video_viewer_page.dart';
-import 'package:immich_mobile/modules/settings/providers/app_settings.provider.dart';
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
-import 'package:immich_mobile/shared/providers/haptic_feedback.provider.dart';
+import 'package:immich_mobile/providers/app_settings.provider.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
+import 'package:immich_mobile/providers/haptic_feedback.provider.dart';
 import 'package:immich_mobile/shared/ui/immich_image.dart';
 import 'package:immich_mobile/shared/ui/immich_thumbnail.dart';
 import 'package:immich_mobile/shared/ui/photo_view/photo_view_gallery.dart';
diff --git a/mobile/lib/modules/asset_viewer/views/video_viewer_page.dart b/mobile/lib/modules/asset_viewer/views/video_viewer_page.dart
index 7f76a81995..a2a1dd8f1b 100644
--- a/mobile/lib/modules/asset_viewer/views/video_viewer_page.dart
+++ b/mobile/lib/modules/asset_viewer/views/video_viewer_page.dart
@@ -2,10 +2,10 @@ import 'package:auto_route/auto_route.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/show_controls.provider.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/video_player_controller_provider.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/video_player_controls_provider.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/video_player_value_provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/show_controls.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/video_player_controller_provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/video_player_controls_provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/video_player_value_provider.dart';
 import 'package:immich_mobile/modules/asset_viewer/ui/video_player.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
 import 'package:immich_mobile/shared/ui/delayed_loading_indicator.dart';
diff --git a/mobile/lib/modules/backup/ui/album_info_card.dart b/mobile/lib/modules/backup/ui/album_info_card.dart
index bf41bf1b6d..3a4c533d87 100644
--- a/mobile/lib/modules/backup/ui/album_info_card.dart
+++ b/mobile/lib/modules/backup/ui/album_info_card.dart
@@ -5,9 +5,9 @@ import 'package:fluttertoast/fluttertoast.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/models/backup/available_album.model.dart';
-import 'package:immich_mobile/modules/backup/providers/backup.provider.dart';
+import 'package:immich_mobile/providers/backup/backup.provider.dart';
 import 'package:immich_mobile/routing/router.dart';
-import 'package:immich_mobile/shared/providers/haptic_feedback.provider.dart';
+import 'package:immich_mobile/providers/haptic_feedback.provider.dart';
 import 'package:immich_mobile/shared/ui/immich_toast.dart';
 
 class AlbumInfoCard extends HookConsumerWidget {
diff --git a/mobile/lib/modules/backup/ui/album_info_list_tile.dart b/mobile/lib/modules/backup/ui/album_info_list_tile.dart
index 02c54a84ba..0eef22a445 100644
--- a/mobile/lib/modules/backup/ui/album_info_list_tile.dart
+++ b/mobile/lib/modules/backup/ui/album_info_list_tile.dart
@@ -5,9 +5,9 @@ import 'package:fluttertoast/fluttertoast.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/models/backup/available_album.model.dart';
-import 'package:immich_mobile/modules/backup/providers/backup.provider.dart';
+import 'package:immich_mobile/providers/backup/backup.provider.dart';
 import 'package:immich_mobile/routing/router.dart';
-import 'package:immich_mobile/shared/providers/haptic_feedback.provider.dart';
+import 'package:immich_mobile/providers/haptic_feedback.provider.dart';
 import 'package:immich_mobile/shared/ui/immich_toast.dart';
 
 class AlbumInfoListTile extends HookConsumerWidget {
diff --git a/mobile/lib/modules/backup/ui/current_backup_asset_info_box.dart b/mobile/lib/modules/backup/ui/current_backup_asset_info_box.dart
index ffd26ddf1e..2520acedf1 100644
--- a/mobile/lib/modules/backup/ui/current_backup_asset_info_box.dart
+++ b/mobile/lib/modules/backup/ui/current_backup_asset_info_box.dart
@@ -8,9 +8,9 @@ import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/models/backup/backup_state.model.dart';
-import 'package:immich_mobile/modules/backup/providers/backup.provider.dart';
-import 'package:immich_mobile/modules/backup/providers/error_backup_list.provider.dart';
-import 'package:immich_mobile/modules/backup/providers/manual_upload.provider.dart';
+import 'package:immich_mobile/providers/backup/backup.provider.dart';
+import 'package:immich_mobile/providers/backup/error_backup_list.provider.dart';
+import 'package:immich_mobile/providers/backup/manual_upload.provider.dart';
 import 'package:immich_mobile/routing/router.dart';
 import 'package:photo_manager/photo_manager.dart';
 
diff --git a/mobile/lib/modules/backup/ui/ios_debug_info_tile.dart b/mobile/lib/modules/backup/ui/ios_debug_info_tile.dart
index 283c329b68..7919e72ea6 100644
--- a/mobile/lib/modules/backup/ui/ios_debug_info_tile.dart
+++ b/mobile/lib/modules/backup/ui/ios_debug_info_tile.dart
@@ -1,7 +1,7 @@
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/backup/providers/ios_background_settings.provider.dart';
+import 'package:immich_mobile/providers/backup/ios_background_settings.provider.dart';
 import 'package:intl/intl.dart';
 
 /// This is a simple debug widget which should be removed later on when we are
diff --git a/mobile/lib/modules/backup/views/backup_album_selection_page.dart b/mobile/lib/modules/backup/views/backup_album_selection_page.dart
index c2bcbb15cd..d151b4f2cf 100644
--- a/mobile/lib/modules/backup/views/backup_album_selection_page.dart
+++ b/mobile/lib/modules/backup/views/backup_album_selection_page.dart
@@ -5,7 +5,7 @@ import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/constants/immich_colors.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/backup/providers/backup.provider.dart';
+import 'package:immich_mobile/providers/backup/backup.provider.dart';
 import 'package:immich_mobile/modules/backup/ui/album_info_card.dart';
 import 'package:immich_mobile/modules/backup/ui/album_info_list_tile.dart';
 import 'package:immich_mobile/shared/ui/immich_loading_indicator.dart';
diff --git a/mobile/lib/modules/backup/views/backup_controller_page.dart b/mobile/lib/modules/backup/views/backup_controller_page.dart
index 0278284ea1..fb1f7f9c91 100644
--- a/mobile/lib/modules/backup/views/backup_controller_page.dart
+++ b/mobile/lib/modules/backup/views/backup_controller_page.dart
@@ -7,15 +7,15 @@ import 'package:flutter/material.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/album/providers/album.provider.dart';
-import 'package:immich_mobile/modules/backup/providers/error_backup_list.provider.dart';
-import 'package:immich_mobile/modules/backup/providers/ios_background_settings.provider.dart';
-import 'package:immich_mobile/modules/backup/providers/manual_upload.provider.dart';
+import 'package:immich_mobile/providers/album/album.provider.dart';
+import 'package:immich_mobile/providers/backup/error_backup_list.provider.dart';
+import 'package:immich_mobile/providers/backup/ios_background_settings.provider.dart';
+import 'package:immich_mobile/providers/backup/manual_upload.provider.dart';
 import 'package:immich_mobile/modules/backup/ui/current_backup_asset_info_box.dart';
 import 'package:immich_mobile/models/backup/backup_state.model.dart';
-import 'package:immich_mobile/modules/backup/providers/backup.provider.dart';
+import 'package:immich_mobile/providers/backup/backup.provider.dart';
 import 'package:immich_mobile/routing/router.dart';
-import 'package:immich_mobile/shared/providers/websocket.provider.dart';
+import 'package:immich_mobile/providers/websocket.provider.dart';
 import 'package:immich_mobile/modules/backup/ui/backup_info_card.dart';
 
 @RoutePage()
diff --git a/mobile/lib/modules/backup/views/failed_backup_status_page.dart b/mobile/lib/modules/backup/views/failed_backup_status_page.dart
index b92c3f4dbb..b4e75e7ae0 100644
--- a/mobile/lib/modules/backup/views/failed_backup_status_page.dart
+++ b/mobile/lib/modules/backup/views/failed_backup_status_page.dart
@@ -2,7 +2,7 @@ import 'package:auto_route/auto_route.dart';
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/backup/providers/error_backup_list.provider.dart';
+import 'package:immich_mobile/providers/backup/error_backup_list.provider.dart';
 import 'package:intl/intl.dart';
 import 'package:photo_manager/photo_manager.dart';
 import 'package:photo_manager_image_provider/photo_manager_image_provider.dart';
diff --git a/mobile/lib/modules/favorite/views/favorites_page.dart b/mobile/lib/modules/favorite/views/favorites_page.dart
index 1352a57c3a..f56360f13e 100644
--- a/mobile/lib/modules/favorite/views/favorites_page.dart
+++ b/mobile/lib/modules/favorite/views/favorites_page.dart
@@ -2,8 +2,8 @@ import 'package:auto_route/auto_route.dart';
 import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/favorite/providers/favorite_provider.dart';
-import 'package:immich_mobile/modules/home/providers/multiselect.provider.dart';
+import 'package:immich_mobile/providers/favorite_provider.dart';
+import 'package:immich_mobile/providers/multiselect.provider.dart';
 import 'package:immich_mobile/shared/ui/asset_grid/multiselect_grid.dart';
 
 @RoutePage()
diff --git a/mobile/lib/modules/home/ui/asset_grid/group_divider_title.dart b/mobile/lib/modules/home/ui/asset_grid/group_divider_title.dart
index 03236e3930..a2196cf763 100644
--- a/mobile/lib/modules/home/ui/asset_grid/group_divider_title.dart
+++ b/mobile/lib/modules/home/ui/asset_grid/group_divider_title.dart
@@ -3,9 +3,9 @@ import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/asset_grid_data_structure.dart';
-import 'package:immich_mobile/modules/settings/providers/app_settings.provider.dart';
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
-import 'package:immich_mobile/shared/providers/haptic_feedback.provider.dart';
+import 'package:immich_mobile/providers/app_settings.provider.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
+import 'package:immich_mobile/providers/haptic_feedback.provider.dart';
 
 class GroupDividerTitle extends HookConsumerWidget {
   const GroupDividerTitle({
diff --git a/mobile/lib/modules/home/ui/asset_grid/immich_asset_grid.dart b/mobile/lib/modules/home/ui/asset_grid/immich_asset_grid.dart
index 04505dc67b..140a3dd680 100644
--- a/mobile/lib/modules/home/ui/asset_grid/immich_asset_grid.dart
+++ b/mobile/lib/modules/home/ui/asset_grid/immich_asset_grid.dart
@@ -6,11 +6,11 @@ import 'package:flutter/material.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/asyncvalue_extensions.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/render_list.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/render_list.provider.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/asset_grid_data_structure.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/immich_asset_grid_view.dart';
-import 'package:immich_mobile/modules/settings/providers/app_settings.provider.dart';
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
+import 'package:immich_mobile/providers/app_settings.provider.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
 import 'package:scrollable_positioned_list/scrollable_positioned_list.dart';
 
diff --git a/mobile/lib/modules/home/ui/asset_grid/immich_asset_grid_view.dart b/mobile/lib/modules/home/ui/asset_grid/immich_asset_grid_view.dart
index c7f3a2ab6c..c0dcafe4ae 100644
--- a/mobile/lib/modules/home/ui/asset_grid/immich_asset_grid_view.dart
+++ b/mobile/lib/modules/home/ui/asset_grid/immich_asset_grid_view.dart
@@ -9,7 +9,7 @@ import 'package:flutter/rendering.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/extensions/collection_extensions.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/scroll_notifier.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/scroll_notifier.provider.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/asset_drag_region.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/thumbnail_image.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/thumbnail_placeholder.dart';
@@ -18,9 +18,9 @@ import 'package:fluttertoast/fluttertoast.dart';
 import 'package:immich_mobile/modules/home/ui/control_bottom_app_bar.dart';
 import 'package:immich_mobile/routing/router.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/scroll_to_date_notifier.provider.dart';
-import 'package:immich_mobile/shared/providers/haptic_feedback.provider.dart';
-import 'package:immich_mobile/shared/providers/tab.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/scroll_to_date_notifier.provider.dart';
+import 'package:immich_mobile/providers/haptic_feedback.provider.dart';
+import 'package:immich_mobile/providers/tab.provider.dart';
 import 'package:scrollable_positioned_list/scrollable_positioned_list.dart';
 
 import 'asset_grid_data_structure.dart';
diff --git a/mobile/lib/modules/home/ui/asset_grid/thumbnail_image.dart b/mobile/lib/modules/home/ui/asset_grid/thumbnail_image.dart
index 51e386098e..0a974f8dfc 100644
--- a/mobile/lib/modules/home/ui/asset_grid/thumbnail_image.dart
+++ b/mobile/lib/modules/home/ui/asset_grid/thumbnail_image.dart
@@ -4,7 +4,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/routing/router.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/haptic_feedback.provider.dart';
+import 'package:immich_mobile/providers/haptic_feedback.provider.dart';
 import 'package:immich_mobile/shared/ui/immich_thumbnail.dart';
 import 'package:immich_mobile/utils/storage_indicator.dart';
 import 'package:isar/isar.dart';
diff --git a/mobile/lib/modules/home/ui/control_bottom_app_bar.dart b/mobile/lib/modules/home/ui/control_bottom_app_bar.dart
index 19f93f0963..11fec2d4f6 100644
--- a/mobile/lib/modules/home/ui/control_bottom_app_bar.dart
+++ b/mobile/lib/modules/home/ui/control_bottom_app_bar.dart
@@ -3,13 +3,13 @@ import 'package:flutter/material.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/album/providers/album.provider.dart';
-import 'package:immich_mobile/modules/album/providers/shared_album.provider.dart';
+import 'package:immich_mobile/providers/album/album.provider.dart';
+import 'package:immich_mobile/providers/album/shared_album.provider.dart';
 import 'package:immich_mobile/modules/album/ui/add_to_album_sliverlist.dart';
 import 'package:immich_mobile/models/asset_selection_state.dart';
 import 'package:immich_mobile/modules/home/ui/delete_dialog.dart';
 import 'package:immich_mobile/modules/home/ui/upload_dialog.dart';
-import 'package:immich_mobile/shared/providers/server_info.provider.dart';
+import 'package:immich_mobile/providers/server_info.provider.dart';
 import 'package:immich_mobile/shared/ui/drag_sheet.dart';
 import 'package:immich_mobile/entities/album.entity.dart';
 import 'package:immich_mobile/utils/draggable_scroll_controller.dart';
diff --git a/mobile/lib/modules/home/views/home_page.dart b/mobile/lib/modules/home/views/home_page.dart
index 687355c000..eb74160fad 100644
--- a/mobile/lib/modules/home/views/home_page.dart
+++ b/mobile/lib/modules/home/views/home_page.dart
@@ -6,14 +6,14 @@ import 'package:flutter/material.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/album/providers/album.provider.dart';
-import 'package:immich_mobile/modules/album/providers/shared_album.provider.dart';
-import 'package:immich_mobile/modules/home/providers/multiselect.provider.dart';
+import 'package:immich_mobile/providers/album/album.provider.dart';
+import 'package:immich_mobile/providers/album/shared_album.provider.dart';
+import 'package:immich_mobile/providers/multiselect.provider.dart';
 import 'package:immich_mobile/modules/memories/ui/memory_lane.dart';
-import 'package:immich_mobile/shared/providers/asset.provider.dart';
-import 'package:immich_mobile/shared/providers/server_info.provider.dart';
-import 'package:immich_mobile/shared/providers/user.provider.dart';
-import 'package:immich_mobile/shared/providers/websocket.provider.dart';
+import 'package:immich_mobile/providers/asset.provider.dart';
+import 'package:immich_mobile/providers/server_info.provider.dart';
+import 'package:immich_mobile/providers/user.provider.dart';
+import 'package:immich_mobile/providers/websocket.provider.dart';
 import 'package:immich_mobile/shared/ui/asset_grid/multiselect_grid.dart';
 import 'package:immich_mobile/shared/ui/immich_app_bar.dart';
 import 'package:immich_mobile/shared/ui/immich_loading_indicator.dart';
diff --git a/mobile/lib/modules/login/ui/change_password_form.dart b/mobile/lib/modules/login/ui/change_password_form.dart
index e66f67d3e7..87f7cab886 100644
--- a/mobile/lib/modules/login/ui/change_password_form.dart
+++ b/mobile/lib/modules/login/ui/change_password_form.dart
@@ -5,11 +5,11 @@ import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:fluttertoast/fluttertoast.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/backup/providers/backup.provider.dart';
-import 'package:immich_mobile/modules/backup/providers/manual_upload.provider.dart';
-import 'package:immich_mobile/modules/login/providers/authentication.provider.dart';
-import 'package:immich_mobile/shared/providers/asset.provider.dart';
-import 'package:immich_mobile/shared/providers/websocket.provider.dart';
+import 'package:immich_mobile/providers/backup/backup.provider.dart';
+import 'package:immich_mobile/providers/backup/manual_upload.provider.dart';
+import 'package:immich_mobile/providers/authentication.provider.dart';
+import 'package:immich_mobile/providers/asset.provider.dart';
+import 'package:immich_mobile/providers/websocket.provider.dart';
 import 'package:immich_mobile/shared/ui/immich_toast.dart';
 
 class ChangePasswordForm extends HookConsumerWidget {
diff --git a/mobile/lib/modules/login/ui/login_form.dart b/mobile/lib/modules/login/ui/login_form.dart
index 57dc5c58cb..6ac3156bfc 100644
--- a/mobile/lib/modules/login/ui/login_form.dart
+++ b/mobile/lib/modules/login/ui/login_form.dart
@@ -6,15 +6,15 @@ import 'package:flutter_hooks/flutter_hooks.dart' hide Store;
 import 'package:fluttertoast/fluttertoast.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/login/providers/oauth.provider.dart';
-import 'package:immich_mobile/modules/onboarding/providers/gallery_permission.provider.dart';
+import 'package:immich_mobile/providers/oauth.provider.dart';
+import 'package:immich_mobile/providers/gallery_permission.provider.dart';
 import 'package:immich_mobile/routing/router.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
-import 'package:immich_mobile/shared/providers/api.provider.dart';
-import 'package:immich_mobile/shared/providers/asset.provider.dart';
-import 'package:immich_mobile/modules/login/providers/authentication.provider.dart';
-import 'package:immich_mobile/modules/backup/providers/backup.provider.dart';
-import 'package:immich_mobile/shared/providers/server_info.provider.dart';
+import 'package:immich_mobile/providers/api.provider.dart';
+import 'package:immich_mobile/providers/asset.provider.dart';
+import 'package:immich_mobile/providers/authentication.provider.dart';
+import 'package:immich_mobile/providers/backup/backup.provider.dart';
+import 'package:immich_mobile/providers/server_info.provider.dart';
 import 'package:immich_mobile/shared/ui/immich_logo.dart';
 import 'package:immich_mobile/shared/ui/immich_title_text.dart';
 import 'package:immich_mobile/shared/ui/immich_toast.dart';
diff --git a/mobile/lib/modules/map/views/map_page.dart b/mobile/lib/modules/map/views/map_page.dart
index d414f5c5c1..383130de64 100644
--- a/mobile/lib/modules/map/views/map_page.dart
+++ b/mobile/lib/modules/map/views/map_page.dart
@@ -13,8 +13,8 @@ import 'package:immich_mobile/extensions/latlngbounds_extension.dart';
 import 'package:immich_mobile/extensions/maplibrecontroller_extensions.dart';
 import 'package:immich_mobile/models/map/map_event.model.dart';
 import 'package:immich_mobile/models/map/map_marker.model.dart';
-import 'package:immich_mobile/modules/map/providers/map_marker.provider.dart';
-import 'package:immich_mobile/modules/map/providers/map_state.provider.dart';
+import 'package:immich_mobile/providers/map/map_marker.provider.dart';
+import 'package:immich_mobile/providers/map/map_state.provider.dart';
 import 'package:immich_mobile/modules/map/utils/map_utils.dart';
 import 'package:immich_mobile/modules/map/widgets/map_app_bar.dart';
 import 'package:immich_mobile/modules/map/widgets/map_asset_grid.dart';
@@ -23,7 +23,7 @@ import 'package:immich_mobile/modules/map/widgets/map_theme_override.dart';
 import 'package:immich_mobile/modules/map/widgets/positioned_asset_marker_icon.dart';
 import 'package:immich_mobile/routing/router.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
 import 'package:immich_mobile/shared/ui/immich_toast.dart';
 import 'package:immich_mobile/shared/views/immich_loading_overlay.dart';
 import 'package:immich_mobile/utils/debounce.dart';
diff --git a/mobile/lib/modules/map/widgets/map_app_bar.dart b/mobile/lib/modules/map/widgets/map_app_bar.dart
index ecc73d1a5e..0d28356634 100644
--- a/mobile/lib/modules/map/widgets/map_app_bar.dart
+++ b/mobile/lib/modules/map/widgets/map_app_bar.dart
@@ -5,7 +5,7 @@ import 'package:flutter/material.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/map/providers/map_state.provider.dart';
+import 'package:immich_mobile/providers/map/map_state.provider.dart';
 import 'package:immich_mobile/modules/map/widgets/map_settings_sheet.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
 import 'package:immich_mobile/shared/views/immich_loading_overlay.dart';
diff --git a/mobile/lib/modules/map/widgets/map_asset_grid.dart b/mobile/lib/modules/map/widgets/map_asset_grid.dart
index 6981178963..ac2fdc6a17 100644
--- a/mobile/lib/modules/map/widgets/map_asset_grid.dart
+++ b/mobile/lib/modules/map/widgets/map_asset_grid.dart
@@ -6,12 +6,12 @@ import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/extensions/collection_extensions.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/render_list.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/render_list.provider.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/asset_grid_data_structure.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/immich_asset_grid.dart';
 import 'package:immich_mobile/models/map/map_event.model.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
 import 'package:immich_mobile/shared/ui/drag_sheet.dart';
 import 'package:immich_mobile/utils/color_filter_generator.dart';
 import 'package:immich_mobile/utils/throttle.dart';
diff --git a/mobile/lib/modules/map/widgets/map_settings_sheet.dart b/mobile/lib/modules/map/widgets/map_settings_sheet.dart
index 3f47afe3c6..76a2b1ce64 100644
--- a/mobile/lib/modules/map/widgets/map_settings_sheet.dart
+++ b/mobile/lib/modules/map/widgets/map_settings_sheet.dart
@@ -1,6 +1,6 @@
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/map/providers/map_state.provider.dart';
+import 'package:immich_mobile/providers/map/map_state.provider.dart';
 import 'package:immich_mobile/modules/map/widgets/map_settings/map_settings_list_tile.dart';
 import 'package:immich_mobile/modules/map/widgets/map_settings/map_settings_time_dropdown.dart';
 import 'package:immich_mobile/modules/map/widgets/map_settings/map_theme_picker.dart';
diff --git a/mobile/lib/modules/map/widgets/map_theme_override.dart b/mobile/lib/modules/map/widgets/map_theme_override.dart
index bd6429a5a2..f56942c69c 100644
--- a/mobile/lib/modules/map/widgets/map_theme_override.dart
+++ b/mobile/lib/modules/map/widgets/map_theme_override.dart
@@ -1,7 +1,7 @@
 import 'package:flutter/material.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/map/providers/map_state.provider.dart';
+import 'package:immich_mobile/providers/map/map_state.provider.dart';
 import 'package:immich_mobile/utils/immich_app_theme.dart';
 
 /// Overrides the theme below the widget tree to use the theme data based on the
diff --git a/mobile/lib/modules/memories/ui/memory_bottom_info.dart b/mobile/lib/modules/memories/ui/memory_bottom_info.dart
index eb4d600fae..408bdc909a 100644
--- a/mobile/lib/modules/memories/ui/memory_bottom_info.dart
+++ b/mobile/lib/modules/memories/ui/memory_bottom_info.dart
@@ -4,7 +4,7 @@ import 'package:auto_route/auto_route.dart';
 import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:immich_mobile/models/memories/memory.model.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/scroll_to_date_notifier.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/scroll_to_date_notifier.provider.dart';
 
 class MemoryBottomInfo extends StatelessWidget {
   final Memory memory;
diff --git a/mobile/lib/modules/memories/ui/memory_lane.dart b/mobile/lib/modules/memories/ui/memory_lane.dart
index d48785a78b..94b11793b6 100644
--- a/mobile/lib/modules/memories/ui/memory_lane.dart
+++ b/mobile/lib/modules/memories/ui/memory_lane.dart
@@ -2,9 +2,9 @@ import 'package:auto_route/auto_route.dart';
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/thumbnail_placeholder.dart';
-import 'package:immich_mobile/modules/memories/providers/memory.provider.dart';
+import 'package:immich_mobile/providers/memory.provider.dart';
 import 'package:immich_mobile/routing/router.dart';
-import 'package:immich_mobile/shared/providers/haptic_feedback.provider.dart';
+import 'package:immich_mobile/providers/haptic_feedback.provider.dart';
 import 'package:immich_mobile/shared/ui/immich_image.dart';
 
 class MemoryLane extends HookConsumerWidget {
diff --git a/mobile/lib/modules/memories/views/memory_page.dart b/mobile/lib/modules/memories/views/memory_page.dart
index afc7befd7a..07b2836574 100644
--- a/mobile/lib/modules/memories/views/memory_page.dart
+++ b/mobile/lib/modules/memories/views/memory_page.dart
@@ -9,7 +9,7 @@ import 'package:immich_mobile/modules/memories/ui/memory_card.dart';
 import 'package:immich_mobile/modules/memories/ui/memory_epilogue.dart';
 import 'package:immich_mobile/modules/memories/ui/memory_progress_indicator.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/haptic_feedback.provider.dart';
+import 'package:immich_mobile/providers/haptic_feedback.provider.dart';
 import 'package:immich_mobile/shared/ui/immich_image.dart';
 
 @RoutePage()
diff --git a/mobile/lib/modules/onboarding/views/permission_onboarding_page.dart b/mobile/lib/modules/onboarding/views/permission_onboarding_page.dart
index 47ad6f26a6..38b67387aa 100644
--- a/mobile/lib/modules/onboarding/views/permission_onboarding_page.dart
+++ b/mobile/lib/modules/onboarding/views/permission_onboarding_page.dart
@@ -3,7 +3,7 @@ import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/onboarding/providers/gallery_permission.provider.dart';
+import 'package:immich_mobile/providers/gallery_permission.provider.dart';
 import 'package:immich_mobile/routing/router.dart';
 import 'package:immich_mobile/shared/ui/immich_logo.dart';
 import 'package:immich_mobile/shared/ui/immich_title_text.dart';
diff --git a/mobile/lib/modules/partner/views/partner_detail_page.dart b/mobile/lib/modules/partner/views/partner_detail_page.dart
index 0e563dce45..efef6f49c3 100644
--- a/mobile/lib/modules/partner/views/partner_detail_page.dart
+++ b/mobile/lib/modules/partner/views/partner_detail_page.dart
@@ -2,10 +2,10 @@ import 'package:auto_route/auto_route.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/home/providers/multiselect.provider.dart';
-import 'package:immich_mobile/modules/partner/providers/partner.provider.dart';
+import 'package:immich_mobile/providers/multiselect.provider.dart';
+import 'package:immich_mobile/providers/partner.provider.dart';
 import 'package:immich_mobile/entities/user.entity.dart';
-import 'package:immich_mobile/shared/providers/asset.provider.dart';
+import 'package:immich_mobile/providers/asset.provider.dart';
 import 'package:immich_mobile/shared/ui/asset_grid/multiselect_grid.dart';
 import 'package:immich_mobile/shared/ui/immich_toast.dart';
 
diff --git a/mobile/lib/modules/partner/views/partner_page.dart b/mobile/lib/modules/partner/views/partner_page.dart
index 89ba55290f..83b5370a61 100644
--- a/mobile/lib/modules/partner/views/partner_page.dart
+++ b/mobile/lib/modules/partner/views/partner_page.dart
@@ -3,8 +3,8 @@ import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/partner/providers/partner.provider.dart';
-import 'package:immich_mobile/modules/partner/services/partner.service.dart';
+import 'package:immich_mobile/providers/partner.provider.dart';
+import 'package:immich_mobile/services/partner.service.dart';
 import 'package:immich_mobile/entities/user.entity.dart';
 import 'package:immich_mobile/shared/ui/confirm_dialog.dart';
 import 'package:immich_mobile/shared/ui/immich_toast.dart';
diff --git a/mobile/lib/modules/search/ui/person_name_edit_form.dart b/mobile/lib/modules/search/ui/person_name_edit_form.dart
index e32d4a9e0a..6038966ca1 100644
--- a/mobile/lib/modules/search/ui/person_name_edit_form.dart
+++ b/mobile/lib/modules/search/ui/person_name_edit_form.dart
@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/search/providers/people.provider.dart';
+import 'package:immich_mobile/providers/search/people.provider.dart';
 
 class PersonNameEditFormResult {
   final bool success;
diff --git a/mobile/lib/modules/search/ui/search_filter/camera_picker.dart b/mobile/lib/modules/search/ui/search_filter/camera_picker.dart
index 01d871817b..fc7f1090d7 100644
--- a/mobile/lib/modules/search/ui/search_filter/camera_picker.dart
+++ b/mobile/lib/modules/search/ui/search_filter/camera_picker.dart
@@ -4,7 +4,7 @@ import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/models/search/search_filter.model.dart';
-import 'package:immich_mobile/modules/search/providers/search_filter.provider.dart';
+import 'package:immich_mobile/providers/search/search_filter.provider.dart';
 import 'package:openapi/api.dart';
 
 class CameraPicker extends HookConsumerWidget {
diff --git a/mobile/lib/modules/search/ui/search_filter/location_picker.dart b/mobile/lib/modules/search/ui/search_filter/location_picker.dart
index 94cfbc5cde..46fdee289e 100644
--- a/mobile/lib/modules/search/ui/search_filter/location_picker.dart
+++ b/mobile/lib/modules/search/ui/search_filter/location_picker.dart
@@ -4,7 +4,7 @@ import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/models/search/search_filter.model.dart';
-import 'package:immich_mobile/modules/search/providers/search_filter.provider.dart';
+import 'package:immich_mobile/providers/search/search_filter.provider.dart';
 import 'package:openapi/api.dart';
 
 class LocationPicker extends HookConsumerWidget {
diff --git a/mobile/lib/modules/search/ui/search_filter/people_picker.dart b/mobile/lib/modules/search/ui/search_filter/people_picker.dart
index f00bd18304..a8308cb9d1 100644
--- a/mobile/lib/modules/search/ui/search_filter/people_picker.dart
+++ b/mobile/lib/modules/search/ui/search_filter/people_picker.dart
@@ -3,7 +3,7 @@ import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/asyncvalue_extensions.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/search/providers/people.provider.dart';
+import 'package:immich_mobile/providers/search/people.provider.dart';
 import 'package:immich_mobile/entities/store.entity.dart' as local_store;
 import 'package:immich_mobile/utils/image_url_builder.dart';
 import 'package:openapi/api.dart';
diff --git a/mobile/lib/modules/search/views/all_motion_videos_page.dart b/mobile/lib/modules/search/views/all_motion_videos_page.dart
index 2d68b8cfec..d2bb867ab7 100644
--- a/mobile/lib/modules/search/views/all_motion_videos_page.dart
+++ b/mobile/lib/modules/search/views/all_motion_videos_page.dart
@@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/asyncvalue_extensions.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/immich_asset_grid.dart';
-import 'package:immich_mobile/modules/search/providers/all_motion_photos.provider.dart';
+import 'package:immich_mobile/providers/search/all_motion_photos.provider.dart';
 
 @RoutePage()
 class AllMotionPhotosPage extends HookConsumerWidget {
diff --git a/mobile/lib/modules/search/views/all_people_page.dart b/mobile/lib/modules/search/views/all_people_page.dart
index bbd7137f9b..f3ffd30c76 100644
--- a/mobile/lib/modules/search/views/all_people_page.dart
+++ b/mobile/lib/modules/search/views/all_people_page.dart
@@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/asyncvalue_extensions.dart';
 import 'package:immich_mobile/models/search/search_curated_content.model.dart';
-import 'package:immich_mobile/modules/search/providers/people.provider.dart';
+import 'package:immich_mobile/providers/search/people.provider.dart';
 import 'package:immich_mobile/modules/search/ui/explore_grid.dart';
 
 @RoutePage()
diff --git a/mobile/lib/modules/search/views/all_places_page.dart b/mobile/lib/modules/search/views/all_places_page.dart
index c03a6ff6a8..ac821cd403 100644
--- a/mobile/lib/modules/search/views/all_places_page.dart
+++ b/mobile/lib/modules/search/views/all_places_page.dart
@@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/asyncvalue_extensions.dart';
 import 'package:immich_mobile/models/search/search_curated_content.model.dart';
-import 'package:immich_mobile/modules/search/providers/search_page_state.provider.dart';
+import 'package:immich_mobile/providers/search/search_page_state.provider.dart';
 import 'package:immich_mobile/modules/search/ui/explore_grid.dart';
 
 @RoutePage()
diff --git a/mobile/lib/modules/search/views/all_videos_page.dart b/mobile/lib/modules/search/views/all_videos_page.dart
index 98bfb97284..0734a4dbdd 100644
--- a/mobile/lib/modules/search/views/all_videos_page.dart
+++ b/mobile/lib/modules/search/views/all_videos_page.dart
@@ -2,7 +2,7 @@ import 'package:auto_route/auto_route.dart';
 import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/search/providers/all_video_assets.provider.dart';
+import 'package:immich_mobile/providers/search/all_video_assets.provider.dart';
 import 'package:immich_mobile/shared/ui/asset_grid/multiselect_grid.dart';
 
 @RoutePage()
diff --git a/mobile/lib/modules/search/views/person_result_page.dart b/mobile/lib/modules/search/views/person_result_page.dart
index 553ab158f3..526fd7e5f3 100644
--- a/mobile/lib/modules/search/views/person_result_page.dart
+++ b/mobile/lib/modules/search/views/person_result_page.dart
@@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
 import 'package:flutter_hooks/flutter_hooks.dart' hide Store;
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/search/providers/people.provider.dart';
+import 'package:immich_mobile/providers/search/people.provider.dart';
 import 'package:immich_mobile/modules/search/ui/person_name_edit_form.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
 import 'package:immich_mobile/shared/ui/asset_grid/multiselect_grid.dart';
diff --git a/mobile/lib/modules/search/views/recently_added_page.dart b/mobile/lib/modules/search/views/recently_added_page.dart
index bc17ef2af9..f8fe67d110 100644
--- a/mobile/lib/modules/search/views/recently_added_page.dart
+++ b/mobile/lib/modules/search/views/recently_added_page.dart
@@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/asyncvalue_extensions.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/immich_asset_grid.dart';
-import 'package:immich_mobile/modules/search/providers/recently_added.provider.dart';
+import 'package:immich_mobile/providers/search/recently_added_asset.provider.dart';
 
 @RoutePage()
 class RecentlyAddedPage extends HookConsumerWidget {
@@ -12,7 +12,7 @@ class RecentlyAddedPage extends HookConsumerWidget {
 
   @override
   Widget build(BuildContext context, WidgetRef ref) {
-    final recents = ref.watch(recentlyAddedProvider);
+    final recents = ref.watch(recentlyAddedAssetProvider);
 
     return Scaffold(
       appBar: AppBar(
diff --git a/mobile/lib/modules/search/views/search_input_page.dart b/mobile/lib/modules/search/views/search_input_page.dart
index 580a05e8a0..47096a8f29 100644
--- a/mobile/lib/modules/search/views/search_input_page.dart
+++ b/mobile/lib/modules/search/views/search_input_page.dart
@@ -6,7 +6,7 @@ import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/models/search/search_filter.model.dart';
-import 'package:immich_mobile/modules/search/providers/paginated_search.provider.dart';
+import 'package:immich_mobile/providers/search/paginated_search.provider.dart';
 import 'package:immich_mobile/modules/search/ui/search_filter/camera_picker.dart';
 import 'package:immich_mobile/modules/search/ui/search_filter/display_option_picker.dart';
 import 'package:immich_mobile/modules/search/ui/search_filter/filter_bottom_sheet_scaffold.dart';
diff --git a/mobile/lib/modules/search/views/search_page.dart b/mobile/lib/modules/search/views/search_page.dart
index 421184fbc5..ca68da727a 100644
--- a/mobile/lib/modules/search/views/search_page.dart
+++ b/mobile/lib/modules/search/views/search_page.dart
@@ -8,15 +8,15 @@ import 'package:immich_mobile/extensions/asyncvalue_extensions.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/models/search/search_curated_content.model.dart';
 import 'package:immich_mobile/models/search/search_filter.model.dart';
-import 'package:immich_mobile/modules/search/providers/people.provider.dart';
-import 'package:immich_mobile/modules/search/providers/search_page_state.provider.dart';
+import 'package:immich_mobile/providers/search/people.provider.dart';
+import 'package:immich_mobile/providers/search/search_page_state.provider.dart';
 import 'package:immich_mobile/modules/search/ui/curated_people_row.dart';
 import 'package:immich_mobile/modules/search/ui/curated_places_row.dart';
 import 'package:immich_mobile/modules/search/ui/person_name_edit_form.dart';
 import 'package:immich_mobile/modules/search/ui/search_row_title.dart';
 import 'package:immich_mobile/routing/router.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/server_info.provider.dart';
+import 'package:immich_mobile/providers/server_info.provider.dart';
 import 'package:immich_mobile/shared/ui/immich_app_bar.dart';
 import 'package:immich_mobile/shared/ui/scaffold_error_body.dart';
 
diff --git a/mobile/lib/modules/settings/ui/advanced_settings.dart b/mobile/lib/modules/settings/ui/advanced_settings.dart
index 65089ac5b3..5f4e13d422 100644
--- a/mobile/lib/modules/settings/ui/advanced_settings.dart
+++ b/mobile/lib/modules/settings/ui/advanced_settings.dart
@@ -8,9 +8,9 @@ import 'package:immich_mobile/modules/settings/ui/settings_sub_page_scaffold.dar
 import 'package:immich_mobile/modules/settings/ui/settings_switch_list_tile.dart';
 import 'package:immich_mobile/modules/settings/utils/app_settings_update_hook.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
-import 'package:immich_mobile/shared/providers/user.provider.dart';
-import 'package:immich_mobile/shared/services/immich_logger.service.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
+import 'package:immich_mobile/providers/user.provider.dart';
+import 'package:immich_mobile/services/immich_logger.service.dart';
 import 'package:immich_mobile/utils/http_ssl_cert_override.dart';
 import 'package:logging/logging.dart';
 
diff --git a/mobile/lib/modules/settings/ui/asset_list_settings/asset_list_group_settings.dart b/mobile/lib/modules/settings/ui/asset_list_settings/asset_list_group_settings.dart
index 315309c2f9..71cdb58aea 100644
--- a/mobile/lib/modules/settings/ui/asset_list_settings/asset_list_group_settings.dart
+++ b/mobile/lib/modules/settings/ui/asset_list_settings/asset_list_group_settings.dart
@@ -2,8 +2,8 @@ import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/asset_grid_data_structure.dart';
-import 'package:immich_mobile/modules/settings/providers/app_settings.provider.dart';
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
+import 'package:immich_mobile/providers/app_settings.provider.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
 import 'package:immich_mobile/modules/settings/ui/settings_radio_list_tile.dart';
 import 'package:immich_mobile/modules/settings/ui/settings_sub_title.dart';
 import 'package:immich_mobile/modules/settings/utils/app_settings_update_hook.dart';
diff --git a/mobile/lib/modules/settings/ui/asset_list_settings/asset_list_layout_settings.dart b/mobile/lib/modules/settings/ui/asset_list_settings/asset_list_layout_settings.dart
index 099d091e2f..49808057e0 100644
--- a/mobile/lib/modules/settings/ui/asset_list_settings/asset_list_layout_settings.dart
+++ b/mobile/lib/modules/settings/ui/asset_list_settings/asset_list_layout_settings.dart
@@ -1,8 +1,8 @@
 import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/settings/providers/app_settings.provider.dart';
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
+import 'package:immich_mobile/providers/app_settings.provider.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
 import 'package:immich_mobile/modules/settings/ui/settings_slider_list_tile.dart';
 import 'package:immich_mobile/modules/settings/ui/settings_sub_title.dart';
 import 'package:immich_mobile/modules/settings/ui/settings_switch_list_tile.dart';
diff --git a/mobile/lib/modules/settings/ui/asset_list_settings/asset_list_settings.dart b/mobile/lib/modules/settings/ui/asset_list_settings/asset_list_settings.dart
index 82a64dc3ed..e62dd455aa 100644
--- a/mobile/lib/modules/settings/ui/asset_list_settings/asset_list_settings.dart
+++ b/mobile/lib/modules/settings/ui/asset_list_settings/asset_list_settings.dart
@@ -1,8 +1,8 @@
 import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/settings/providers/app_settings.provider.dart';
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
+import 'package:immich_mobile/providers/app_settings.provider.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
 import 'package:immich_mobile/modules/settings/ui/asset_list_settings/asset_list_group_settings.dart';
 import 'package:immich_mobile/modules/settings/ui/settings_sub_page_scaffold.dart';
 import 'package:immich_mobile/modules/settings/ui/settings_switch_list_tile.dart';
diff --git a/mobile/lib/modules/settings/ui/backup_settings/background_settings.dart b/mobile/lib/modules/settings/ui/backup_settings/background_settings.dart
index 73f7d120c0..5dd11cc26e 100644
--- a/mobile/lib/modules/settings/ui/backup_settings/background_settings.dart
+++ b/mobile/lib/modules/settings/ui/backup_settings/background_settings.dart
@@ -5,8 +5,8 @@ import 'package:flutter/material.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/backup/providers/backup.provider.dart';
-import 'package:immich_mobile/modules/backup/providers/ios_background_settings.provider.dart';
+import 'package:immich_mobile/providers/backup/backup.provider.dart';
+import 'package:immich_mobile/providers/backup/ios_background_settings.provider.dart';
 import 'package:immich_mobile/modules/backup/ui/ios_debug_info_tile.dart';
 import 'package:immich_mobile/modules/settings/ui/settings_button_list_tile.dart';
 import 'package:immich_mobile/modules/settings/ui/settings_slider_list_tile.dart';
diff --git a/mobile/lib/modules/settings/ui/backup_settings/backup_settings.dart b/mobile/lib/modules/settings/ui/backup_settings/backup_settings.dart
index e095c8d053..2cfdd64ffe 100644
--- a/mobile/lib/modules/settings/ui/backup_settings/backup_settings.dart
+++ b/mobile/lib/modules/settings/ui/backup_settings/backup_settings.dart
@@ -2,8 +2,8 @@ import 'dart:io';
 
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/backup/providers/backup_verification.provider.dart';
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
+import 'package:immich_mobile/providers/backup/backup_verification.provider.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
 import 'package:immich_mobile/modules/settings/ui/backup_settings/background_settings.dart';
 import 'package:immich_mobile/modules/settings/ui/backup_settings/foreground_settings.dart';
 import 'package:immich_mobile/modules/settings/ui/settings_button_list_tile.dart';
diff --git a/mobile/lib/modules/settings/ui/backup_settings/foreground_settings.dart b/mobile/lib/modules/settings/ui/backup_settings/foreground_settings.dart
index 684fc95f2b..8201456015 100644
--- a/mobile/lib/modules/settings/ui/backup_settings/foreground_settings.dart
+++ b/mobile/lib/modules/settings/ui/backup_settings/foreground_settings.dart
@@ -2,7 +2,7 @@ import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/backup/providers/backup.provider.dart';
+import 'package:immich_mobile/providers/backup/backup.provider.dart';
 import 'package:immich_mobile/modules/settings/ui/settings_button_list_tile.dart';
 
 class ForegroundBackupSettings extends ConsumerWidget {
diff --git a/mobile/lib/modules/settings/ui/image_viewer_quality_setting.dart b/mobile/lib/modules/settings/ui/image_viewer_quality_setting.dart
index 21753ef544..e846aa0368 100644
--- a/mobile/lib/modules/settings/ui/image_viewer_quality_setting.dart
+++ b/mobile/lib/modules/settings/ui/image_viewer_quality_setting.dart
@@ -2,7 +2,7 @@ import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
 import 'package:immich_mobile/modules/settings/ui/settings_sub_page_scaffold.dart';
 import 'package:immich_mobile/modules/settings/ui/settings_switch_list_tile.dart';
 import 'package:immich_mobile/modules/settings/utils/app_settings_update_hook.dart';
diff --git a/mobile/lib/modules/settings/ui/language_settings.dart b/mobile/lib/modules/settings/ui/language_settings.dart
index ebe8673135..4569888541 100644
--- a/mobile/lib/modules/settings/ui/language_settings.dart
+++ b/mobile/lib/modules/settings/ui/language_settings.dart
@@ -4,7 +4,7 @@ import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/constants/locales.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/backup/background_service/localization.dart';
+import 'package:immich_mobile/services/localization.service.dart';
 
 class LanguageSettings extends HookConsumerWidget {
   const LanguageSettings({super.key});
diff --git a/mobile/lib/modules/settings/ui/local_storage_settings.dart b/mobile/lib/modules/settings/ui/local_storage_settings.dart
index 119979662c..f0413c228f 100644
--- a/mobile/lib/modules/settings/ui/local_storage_settings.dart
+++ b/mobile/lib/modules/settings/ui/local_storage_settings.dart
@@ -4,7 +4,7 @@ import 'package:flutter_hooks/flutter_hooks.dart' show useEffect, useState;
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/entities/duplicated_asset.entity.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
 
 class LocalStorageSettings extends HookConsumerWidget {
   const LocalStorageSettings({super.key});
diff --git a/mobile/lib/modules/settings/ui/notification_setting.dart b/mobile/lib/modules/settings/ui/notification_setting.dart
index 0d7f0f5b4f..fec72445c7 100644
--- a/mobile/lib/modules/settings/ui/notification_setting.dart
+++ b/mobile/lib/modules/settings/ui/notification_setting.dart
@@ -2,8 +2,8 @@ import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/settings/providers/notification_permission.provider.dart';
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
+import 'package:immich_mobile/providers/notification_permission.provider.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
 import 'package:immich_mobile/modules/settings/ui/settings_button_list_tile.dart';
 import 'package:immich_mobile/modules/settings/ui/settings_slider_list_tile.dart';
 import 'package:immich_mobile/modules/settings/ui/settings_sub_page_scaffold.dart';
diff --git a/mobile/lib/modules/settings/ui/preference_settings/haptic_setting.dart b/mobile/lib/modules/settings/ui/preference_settings/haptic_setting.dart
index 290dd5aafa..54e03dd0e1 100644
--- a/mobile/lib/modules/settings/ui/preference_settings/haptic_setting.dart
+++ b/mobile/lib/modules/settings/ui/preference_settings/haptic_setting.dart
@@ -2,7 +2,7 @@ import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
 import 'package:immich_mobile/modules/settings/ui/settings_sub_title.dart';
 import 'package:immich_mobile/modules/settings/ui/settings_switch_list_tile.dart';
 import 'package:immich_mobile/modules/settings/utils/app_settings_update_hook.dart';
diff --git a/mobile/lib/modules/settings/ui/preference_settings/theme_setting.dart b/mobile/lib/modules/settings/ui/preference_settings/theme_setting.dart
index 3dd023a45a..09360694b5 100644
--- a/mobile/lib/modules/settings/ui/preference_settings/theme_setting.dart
+++ b/mobile/lib/modules/settings/ui/preference_settings/theme_setting.dart
@@ -2,7 +2,7 @@ import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
 import 'package:immich_mobile/modules/settings/ui/settings_sub_title.dart';
 import 'package:immich_mobile/modules/settings/ui/settings_switch_list_tile.dart';
 import 'package:immich_mobile/modules/settings/utils/app_settings_update_hook.dart';
diff --git a/mobile/lib/modules/settings/utils/app_settings_update_hook.dart b/mobile/lib/modules/settings/utils/app_settings_update_hook.dart
index 6df27b8c33..a4968feeae 100644
--- a/mobile/lib/modules/settings/utils/app_settings_update_hook.dart
+++ b/mobile/lib/modules/settings/utils/app_settings_update_hook.dart
@@ -1,6 +1,6 @@
 import 'package:flutter/cupertino.dart';
 import 'package:flutter_hooks/flutter_hooks.dart' hide Store;
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
 
 ValueNotifier<T> useAppSettingsState<T>(
diff --git a/mobile/lib/modules/shared_link/ui/shared_link_item.dart b/mobile/lib/modules/shared_link/ui/shared_link_item.dart
index b6e5e72a14..c79a2d17bc 100644
--- a/mobile/lib/modules/shared_link/ui/shared_link_item.dart
+++ b/mobile/lib/modules/shared_link/ui/shared_link_item.dart
@@ -8,9 +8,9 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/modules/search/ui/thumbnail_with_info.dart';
 import 'package:immich_mobile/models/shared_link/shared_link.model.dart';
-import 'package:immich_mobile/modules/shared_link/providers/shared_link.provider.dart';
+import 'package:immich_mobile/providers/shared_link.provider.dart';
 import 'package:immich_mobile/routing/router.dart';
-import 'package:immich_mobile/shared/providers/server_info.provider.dart';
+import 'package:immich_mobile/providers/server_info.provider.dart';
 import 'package:immich_mobile/shared/ui/confirm_dialog.dart';
 import 'package:immich_mobile/shared/ui/immich_toast.dart';
 import 'package:immich_mobile/utils/image_url_builder.dart';
diff --git a/mobile/lib/modules/shared_link/views/shared_link_edit_page.dart b/mobile/lib/modules/shared_link/views/shared_link_edit_page.dart
index c1233d63b9..352bad7c8b 100644
--- a/mobile/lib/modules/shared_link/views/shared_link_edit_page.dart
+++ b/mobile/lib/modules/shared_link/views/shared_link_edit_page.dart
@@ -7,9 +7,9 @@ import 'package:fluttertoast/fluttertoast.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/models/shared_link/shared_link.model.dart';
-import 'package:immich_mobile/modules/shared_link/providers/shared_link.provider.dart';
-import 'package:immich_mobile/modules/shared_link/services/shared_link.service.dart';
-import 'package:immich_mobile/shared/providers/server_info.provider.dart';
+import 'package:immich_mobile/providers/shared_link.provider.dart';
+import 'package:immich_mobile/services/shared_link.service.dart';
+import 'package:immich_mobile/providers/server_info.provider.dart';
 import 'package:immich_mobile/shared/ui/immich_toast.dart';
 import 'package:immich_mobile/utils/url_helper.dart';
 
diff --git a/mobile/lib/modules/shared_link/views/shared_link_page.dart b/mobile/lib/modules/shared_link/views/shared_link_page.dart
index 855b3b3e6d..572371802f 100644
--- a/mobile/lib/modules/shared_link/views/shared_link_page.dart
+++ b/mobile/lib/modules/shared_link/views/shared_link_page.dart
@@ -6,7 +6,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/asyncvalue_extensions.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/models/shared_link/shared_link.model.dart';
-import 'package:immich_mobile/modules/shared_link/providers/shared_link.provider.dart';
+import 'package:immich_mobile/providers/shared_link.provider.dart';
 import 'package:immich_mobile/modules/shared_link/ui/shared_link_item.dart';
 
 @RoutePage()
diff --git a/mobile/lib/modules/trash/views/trash_page.dart b/mobile/lib/modules/trash/views/trash_page.dart
index 83b5db65c0..8216cfd00e 100644
--- a/mobile/lib/modules/trash/views/trash_page.dart
+++ b/mobile/lib/modules/trash/views/trash_page.dart
@@ -8,9 +8,9 @@ import 'package:immich_mobile/extensions/asyncvalue_extensions.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/immich_asset_grid.dart';
 import 'package:immich_mobile/modules/home/ui/delete_dialog.dart';
-import 'package:immich_mobile/modules/trash/providers/trashed_asset.provider.dart';
+import 'package:immich_mobile/providers/trash.provider.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/server_info.provider.dart';
+import 'package:immich_mobile/providers/server_info.provider.dart';
 import 'package:immich_mobile/shared/ui/confirm_dialog.dart';
 import 'package:immich_mobile/shared/ui/immich_toast.dart';
 import 'package:immich_mobile/shared/views/immich_loading_overlay.dart';
diff --git a/mobile/lib/modules/activities/providers/activity.provider.dart b/mobile/lib/providers/activity.provider.dart
similarity index 92%
rename from mobile/lib/modules/activities/providers/activity.provider.dart
rename to mobile/lib/providers/activity.provider.dart
index 124f035a4e..8ae218c817 100644
--- a/mobile/lib/modules/activities/providers/activity.provider.dart
+++ b/mobile/lib/providers/activity.provider.dart
@@ -1,6 +1,6 @@
 import 'package:immich_mobile/models/activities/activity.model.dart';
-import 'package:immich_mobile/modules/activities/providers/activity_service.provider.dart';
-import 'package:immich_mobile/modules/activities/providers/activity_statistics.provider.dart';
+import 'package:immich_mobile/providers/activity_service.provider.dart';
+import 'package:immich_mobile/providers/activity_statistics.provider.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
 
 part 'activity.provider.g.dart';
diff --git a/mobile/lib/modules/activities/providers/activity.provider.g.dart b/mobile/lib/providers/activity.provider.g.dart
similarity index 100%
rename from mobile/lib/modules/activities/providers/activity.provider.g.dart
rename to mobile/lib/providers/activity.provider.g.dart
diff --git a/mobile/lib/modules/activities/providers/activity_service.provider.dart b/mobile/lib/providers/activity_service.provider.dart
similarity index 60%
rename from mobile/lib/modules/activities/providers/activity_service.provider.dart
rename to mobile/lib/providers/activity_service.provider.dart
index 53f83cbf36..dcfaac883f 100644
--- a/mobile/lib/modules/activities/providers/activity_service.provider.dart
+++ b/mobile/lib/providers/activity_service.provider.dart
@@ -1,5 +1,5 @@
-import 'package:immich_mobile/modules/activities/services/activity.service.dart';
-import 'package:immich_mobile/shared/providers/api.provider.dart';
+import 'package:immich_mobile/services/activity.service.dart';
+import 'package:immich_mobile/providers/api.provider.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
 
 part 'activity_service.provider.g.dart';
diff --git a/mobile/lib/modules/activities/providers/activity_service.provider.g.dart b/mobile/lib/providers/activity_service.provider.g.dart
similarity index 100%
rename from mobile/lib/modules/activities/providers/activity_service.provider.g.dart
rename to mobile/lib/providers/activity_service.provider.g.dart
diff --git a/mobile/lib/modules/activities/providers/activity_statistics.provider.dart b/mobile/lib/providers/activity_statistics.provider.dart
similarity index 87%
rename from mobile/lib/modules/activities/providers/activity_statistics.provider.dart
rename to mobile/lib/providers/activity_statistics.provider.dart
index fc2a291a1d..afb43e8cba 100644
--- a/mobile/lib/modules/activities/providers/activity_statistics.provider.dart
+++ b/mobile/lib/providers/activity_statistics.provider.dart
@@ -1,4 +1,4 @@
-import 'package:immich_mobile/modules/activities/providers/activity_service.provider.dart';
+import 'package:immich_mobile/providers/activity_service.provider.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
 
 part 'activity_statistics.provider.g.dart';
diff --git a/mobile/lib/modules/activities/providers/activity_statistics.provider.g.dart b/mobile/lib/providers/activity_statistics.provider.g.dart
similarity index 100%
rename from mobile/lib/modules/activities/providers/activity_statistics.provider.g.dart
rename to mobile/lib/providers/activity_statistics.provider.g.dart
diff --git a/mobile/lib/modules/album/providers/album.provider.dart b/mobile/lib/providers/album/album.provider.dart
similarity index 94%
rename from mobile/lib/modules/album/providers/album.provider.dart
rename to mobile/lib/providers/album/album.provider.dart
index 3a12913184..df162d2db3 100644
--- a/mobile/lib/modules/album/providers/album.provider.dart
+++ b/mobile/lib/providers/album/album.provider.dart
@@ -1,13 +1,13 @@
 import 'dart:async';
 
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/album/services/album.service.dart';
+import 'package:immich_mobile/services/album.service.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/asset_grid_data_structure.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
 import 'package:immich_mobile/entities/album.entity.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
 import 'package:immich_mobile/entities/user.entity.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
 import 'package:immich_mobile/utils/renderlist_generator.dart';
 import 'package:isar/isar.dart';
 
diff --git a/mobile/lib/modules/album/providers/album_sort_by_options.provider.dart b/mobile/lib/providers/album/album_sort_by_options.provider.dart
similarity index 96%
rename from mobile/lib/modules/album/providers/album_sort_by_options.provider.dart
rename to mobile/lib/providers/album/album_sort_by_options.provider.dart
index 95794e57ea..216688ee15 100644
--- a/mobile/lib/modules/album/providers/album_sort_by_options.provider.dart
+++ b/mobile/lib/providers/album/album_sort_by_options.provider.dart
@@ -1,6 +1,6 @@
 import 'package:collection/collection.dart';
-import 'package:immich_mobile/modules/settings/providers/app_settings.provider.dart';
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
+import 'package:immich_mobile/providers/app_settings.provider.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
 import 'package:immich_mobile/entities/album.entity.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
 
diff --git a/mobile/lib/modules/album/providers/album_sort_by_options.provider.g.dart b/mobile/lib/providers/album/album_sort_by_options.provider.g.dart
similarity index 100%
rename from mobile/lib/modules/album/providers/album_sort_by_options.provider.g.dart
rename to mobile/lib/providers/album/album_sort_by_options.provider.g.dart
diff --git a/mobile/lib/modules/album/providers/album_title.provider.dart b/mobile/lib/providers/album/album_title.provider.dart
similarity index 100%
rename from mobile/lib/modules/album/providers/album_title.provider.dart
rename to mobile/lib/providers/album/album_title.provider.dart
diff --git a/mobile/lib/modules/album/providers/album_viewer.provider.dart b/mobile/lib/providers/album/album_viewer.provider.dart
similarity index 90%
rename from mobile/lib/modules/album/providers/album_viewer.provider.dart
rename to mobile/lib/providers/album/album_viewer.provider.dart
index be66fa4fc9..f34ff4ef22 100644
--- a/mobile/lib/modules/album/providers/album_viewer.provider.dart
+++ b/mobile/lib/providers/album/album_viewer.provider.dart
@@ -1,7 +1,7 @@
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/models/albums/album_viewer_page_state.model.dart';
-import 'package:immich_mobile/modules/album/providers/shared_album.provider.dart';
-import 'package:immich_mobile/modules/album/services/album.service.dart';
+import 'package:immich_mobile/providers/album/shared_album.provider.dart';
+import 'package:immich_mobile/services/album.service.dart';
 import 'package:immich_mobile/entities/album.entity.dart';
 
 class AlbumViewerNotifier extends StateNotifier<AlbumViewerPageState> {
diff --git a/mobile/lib/modules/album/providers/current_album.provider.dart b/mobile/lib/providers/album/current_album.provider.dart
similarity index 100%
rename from mobile/lib/modules/album/providers/current_album.provider.dart
rename to mobile/lib/providers/album/current_album.provider.dart
diff --git a/mobile/lib/modules/album/providers/current_album.provider.g.dart b/mobile/lib/providers/album/current_album.provider.g.dart
similarity index 100%
rename from mobile/lib/modules/album/providers/current_album.provider.g.dart
rename to mobile/lib/providers/album/current_album.provider.g.dart
diff --git a/mobile/lib/modules/album/providers/shared_album.provider.dart b/mobile/lib/providers/album/shared_album.provider.dart
similarity index 94%
rename from mobile/lib/modules/album/providers/shared_album.provider.dart
rename to mobile/lib/providers/album/shared_album.provider.dart
index b1fe296385..0d58135375 100644
--- a/mobile/lib/modules/album/providers/shared_album.provider.dart
+++ b/mobile/lib/providers/album/shared_album.provider.dart
@@ -2,11 +2,11 @@ import 'dart:async';
 
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/album/services/album.service.dart';
+import 'package:immich_mobile/services/album.service.dart';
 import 'package:immich_mobile/entities/album.entity.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
 import 'package:immich_mobile/entities/user.entity.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
 import 'package:isar/isar.dart';
 
 class SharedAlbumNotifier extends StateNotifier<List<Album>> {
diff --git a/mobile/lib/modules/album/providers/suggested_shared_users.provider.dart b/mobile/lib/providers/album/suggested_shared_users.provider.dart
similarity index 81%
rename from mobile/lib/modules/album/providers/suggested_shared_users.provider.dart
rename to mobile/lib/providers/album/suggested_shared_users.provider.dart
index c553ce6826..77518f47d0 100644
--- a/mobile/lib/modules/album/providers/suggested_shared_users.provider.dart
+++ b/mobile/lib/providers/album/suggested_shared_users.provider.dart
@@ -1,6 +1,6 @@
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/entities/user.entity.dart';
-import 'package:immich_mobile/shared/services/user.service.dart';
+import 'package:immich_mobile/services/user.service.dart';
 
 final otherUsersProvider = FutureProvider.autoDispose<List<User>>((ref) {
   UserService userService = ref.watch(userServiceProvider);
diff --git a/mobile/lib/shared/providers/api.provider.dart b/mobile/lib/providers/api.provider.dart
similarity index 73%
rename from mobile/lib/shared/providers/api.provider.dart
rename to mobile/lib/providers/api.provider.dart
index cc73f02b3f..8e48324c92 100644
--- a/mobile/lib/shared/providers/api.provider.dart
+++ b/mobile/lib/providers/api.provider.dart
@@ -1,4 +1,4 @@
-import 'package:immich_mobile/shared/services/api.service.dart';
+import 'package:immich_mobile/services/api.service.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
 
 part 'api.provider.g.dart';
diff --git a/mobile/lib/shared/providers/api.provider.g.dart b/mobile/lib/providers/api.provider.g.dart
similarity index 100%
rename from mobile/lib/shared/providers/api.provider.g.dart
rename to mobile/lib/providers/api.provider.g.dart
diff --git a/mobile/lib/shared/providers/app_state.provider.dart b/mobile/lib/providers/app_life_cycle.provider.dart
similarity index 61%
rename from mobile/lib/shared/providers/app_state.provider.dart
rename to mobile/lib/providers/app_life_cycle.provider.dart
index c5ee79adee..bb6c9722cc 100644
--- a/mobile/lib/shared/providers/app_state.provider.dart
+++ b/mobile/lib/providers/app_life_cycle.provider.dart
@@ -1,23 +1,23 @@
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/album/providers/album.provider.dart';
-import 'package:immich_mobile/modules/album/providers/shared_album.provider.dart';
-import 'package:immich_mobile/modules/backup/background_service/background.service.dart';
+import 'package:immich_mobile/providers/album/album.provider.dart';
+import 'package:immich_mobile/providers/album/shared_album.provider.dart';
+import 'package:immich_mobile/services/background.service.dart';
 import 'package:immich_mobile/models/backup/backup_state.model.dart';
-import 'package:immich_mobile/modules/backup/providers/backup.provider.dart';
-import 'package:immich_mobile/modules/backup/providers/ios_background_settings.provider.dart';
-import 'package:immich_mobile/modules/backup/providers/manual_upload.provider.dart';
-import 'package:immich_mobile/modules/login/providers/authentication.provider.dart';
-import 'package:immich_mobile/modules/memories/providers/memory.provider.dart';
-import 'package:immich_mobile/modules/onboarding/providers/gallery_permission.provider.dart';
-import 'package:immich_mobile/modules/settings/providers/notification_permission.provider.dart';
-import 'package:immich_mobile/shared/providers/asset.provider.dart';
-import 'package:immich_mobile/shared/providers/server_info.provider.dart';
-import 'package:immich_mobile/shared/providers/tab.provider.dart';
-import 'package:immich_mobile/shared/providers/websocket.provider.dart';
-import 'package:immich_mobile/shared/services/immich_logger.service.dart';
+import 'package:immich_mobile/providers/backup/backup.provider.dart';
+import 'package:immich_mobile/providers/backup/ios_background_settings.provider.dart';
+import 'package:immich_mobile/providers/backup/manual_upload.provider.dart';
+import 'package:immich_mobile/providers/authentication.provider.dart';
+import 'package:immich_mobile/providers/memory.provider.dart';
+import 'package:immich_mobile/providers/gallery_permission.provider.dart';
+import 'package:immich_mobile/providers/notification_permission.provider.dart';
+import 'package:immich_mobile/providers/asset.provider.dart';
+import 'package:immich_mobile/providers/server_info.provider.dart';
+import 'package:immich_mobile/providers/tab.provider.dart';
+import 'package:immich_mobile/providers/websocket.provider.dart';
+import 'package:immich_mobile/services/immich_logger.service.dart';
 import 'package:permission_handler/permission_handler.dart';
 
-enum AppStateEnum {
+enum AppLifeCycleEnum {
   active,
   inactive,
   paused,
@@ -26,18 +26,18 @@ enum AppStateEnum {
   hidden,
 }
 
-class AppStateNotiifer extends StateNotifier<AppStateEnum> {
+class AppLifeCycleNotifier extends StateNotifier<AppLifeCycleEnum> {
   final Ref _ref;
   bool _wasPaused = false;
 
-  AppStateNotiifer(this._ref) : super(AppStateEnum.active);
+  AppLifeCycleNotifier(this._ref) : super(AppLifeCycleEnum.active);
 
-  AppStateEnum getAppState() {
+  AppLifeCycleEnum getAppState() {
     return state;
   }
 
   void handleAppResume() {
-    state = AppStateEnum.resumed;
+    state = AppLifeCycleEnum.resumed;
 
     // no need to resume because app was never really paused
     if (!_wasPaused) return;
@@ -80,12 +80,12 @@ class AppStateNotiifer extends StateNotifier<AppStateEnum> {
   }
 
   void handleAppInactivity() {
-    state = AppStateEnum.inactive;
+    state = AppLifeCycleEnum.inactive;
     // do not stop/clean up anything on inactivity: issued on every orientation change
   }
 
   void handleAppPause() {
-    state = AppStateEnum.paused;
+    state = AppLifeCycleEnum.paused;
     _wasPaused = true;
     // Do not cancel backup if manual upload is in progress
     if (_ref.read(backupProvider.notifier).backupProgress !=
@@ -97,18 +97,18 @@ class AppStateNotiifer extends StateNotifier<AppStateEnum> {
   }
 
   void handleAppDetached() {
-    state = AppStateEnum.detached;
+    state = AppLifeCycleEnum.detached;
     // no guarantee this is called at all
     _ref.read(manualUploadProvider.notifier).cancelBackup();
   }
 
   void handleAppHidden() {
-    state = AppStateEnum.hidden;
+    state = AppLifeCycleEnum.hidden;
     // do not stop/clean up anything on inactivity: issued on every orientation change
   }
 }
 
 final appStateProvider =
-    StateNotifierProvider<AppStateNotiifer, AppStateEnum>((ref) {
-  return AppStateNotiifer(ref);
+    StateNotifierProvider<AppLifeCycleNotifier, AppLifeCycleEnum>((ref) {
+  return AppLifeCycleNotifier(ref);
 });
diff --git a/mobile/lib/modules/settings/providers/app_settings.provider.dart b/mobile/lib/providers/app_settings.provider.dart
similarity index 72%
rename from mobile/lib/modules/settings/providers/app_settings.provider.dart
rename to mobile/lib/providers/app_settings.provider.dart
index 96991451f5..a598be7a1f 100644
--- a/mobile/lib/modules/settings/providers/app_settings.provider.dart
+++ b/mobile/lib/providers/app_settings.provider.dart
@@ -1,4 +1,4 @@
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
 
 part 'app_settings.provider.g.dart';
diff --git a/mobile/lib/modules/settings/providers/app_settings.provider.g.dart b/mobile/lib/providers/app_settings.provider.g.dart
similarity index 100%
rename from mobile/lib/modules/settings/providers/app_settings.provider.g.dart
rename to mobile/lib/providers/app_settings.provider.g.dart
diff --git a/mobile/lib/modules/archive/providers/archive_asset_provider.dart b/mobile/lib/providers/archive.provider.dart
similarity index 84%
rename from mobile/lib/modules/archive/providers/archive_asset_provider.dart
rename to mobile/lib/providers/archive.provider.dart
index 6118f2a316..0d51887368 100644
--- a/mobile/lib/modules/archive/providers/archive_asset_provider.dart
+++ b/mobile/lib/providers/archive.provider.dart
@@ -1,8 +1,8 @@
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/asset_grid_data_structure.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
-import 'package:immich_mobile/shared/providers/user.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
+import 'package:immich_mobile/providers/user.provider.dart';
 import 'package:immich_mobile/utils/renderlist_generator.dart';
 import 'package:isar/isar.dart';
 
diff --git a/mobile/lib/shared/providers/asset.provider.dart b/mobile/lib/providers/asset.provider.dart
similarity index 96%
rename from mobile/lib/shared/providers/asset.provider.dart
rename to mobile/lib/providers/asset.provider.dart
index 2d046eaefc..780fe3fd89 100644
--- a/mobile/lib/shared/providers/asset.provider.dart
+++ b/mobile/lib/providers/asset.provider.dart
@@ -1,16 +1,16 @@
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/album/services/album.service.dart';
+import 'package:immich_mobile/services/album.service.dart';
 import 'package:immich_mobile/entities/exif_info.entity.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
 import 'package:immich_mobile/entities/user.entity.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
-import 'package:immich_mobile/shared/providers/user.provider.dart';
-import 'package:immich_mobile/shared/services/asset.service.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
+import 'package:immich_mobile/providers/user.provider.dart';
+import 'package:immich_mobile/services/asset.service.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/asset_grid_data_structure.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/services/sync.service.dart';
-import 'package:immich_mobile/shared/services/user.service.dart';
+import 'package:immich_mobile/services/sync.service.dart';
+import 'package:immich_mobile/services/user.service.dart';
 import 'package:immich_mobile/utils/db.dart';
 import 'package:immich_mobile/utils/renderlist_generator.dart';
 import 'package:isar/isar.dart';
diff --git a/mobile/lib/modules/asset_viewer/providers/asset_description.provider.dart b/mobile/lib/providers/asset_viewer/asset_description.provider.dart
similarity index 93%
rename from mobile/lib/modules/asset_viewer/providers/asset_description.provider.dart
rename to mobile/lib/providers/asset_viewer/asset_description.provider.dart
index af5a1a44ef..11a622cad1 100644
--- a/mobile/lib/modules/asset_viewer/providers/asset_description.provider.dart
+++ b/mobile/lib/providers/asset_viewer/asset_description.provider.dart
@@ -1,10 +1,10 @@
 import 'dart:async';
 
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/asset_viewer/services/asset_description.service.dart';
+import 'package:immich_mobile/services/asset_description.service.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
 import 'package:immich_mobile/entities/exif_info.entity.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
 import 'package:isar/isar.dart';
 
 class AssetDescriptionNotifier extends StateNotifier<String> {
diff --git a/mobile/lib/modules/asset_viewer/providers/asset_people.provider.dart b/mobile/lib/providers/asset_viewer/asset_people.provider.dart
similarity index 95%
rename from mobile/lib/modules/asset_viewer/providers/asset_people.provider.dart
rename to mobile/lib/providers/asset_viewer/asset_people.provider.dart
index a80a95e414..b334ef193a 100644
--- a/mobile/lib/modules/asset_viewer/providers/asset_people.provider.dart
+++ b/mobile/lib/providers/asset_viewer/asset_people.provider.dart
@@ -1,5 +1,5 @@
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/services/asset.service.dart';
+import 'package:immich_mobile/services/asset.service.dart';
 import 'package:logging/logging.dart';
 import 'package:openapi/api.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
diff --git a/mobile/lib/modules/asset_viewer/providers/asset_people.provider.g.dart b/mobile/lib/providers/asset_viewer/asset_people.provider.g.dart
similarity index 100%
rename from mobile/lib/modules/asset_viewer/providers/asset_people.provider.g.dart
rename to mobile/lib/providers/asset_viewer/asset_people.provider.g.dart
diff --git a/mobile/lib/modules/asset_viewer/providers/asset_stack.provider.dart b/mobile/lib/providers/asset_viewer/asset_stack.provider.dart
similarity index 95%
rename from mobile/lib/modules/asset_viewer/providers/asset_stack.provider.dart
rename to mobile/lib/providers/asset_viewer/asset_stack.provider.dart
index 4638c40f29..0883ed92db 100644
--- a/mobile/lib/modules/asset_viewer/providers/asset_stack.provider.dart
+++ b/mobile/lib/providers/asset_viewer/asset_stack.provider.dart
@@ -1,6 +1,6 @@
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
 import 'package:isar/isar.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
 
diff --git a/mobile/lib/modules/asset_viewer/providers/asset_stack.provider.g.dart b/mobile/lib/providers/asset_viewer/asset_stack.provider.g.dart
similarity index 100%
rename from mobile/lib/modules/asset_viewer/providers/asset_stack.provider.g.dart
rename to mobile/lib/providers/asset_viewer/asset_stack.provider.g.dart
diff --git a/mobile/lib/modules/asset_viewer/providers/current_asset.provider.dart b/mobile/lib/providers/asset_viewer/current_asset.provider.dart
similarity index 100%
rename from mobile/lib/modules/asset_viewer/providers/current_asset.provider.dart
rename to mobile/lib/providers/asset_viewer/current_asset.provider.dart
diff --git a/mobile/lib/modules/asset_viewer/providers/current_asset.provider.g.dart b/mobile/lib/providers/asset_viewer/current_asset.provider.g.dart
similarity index 100%
rename from mobile/lib/modules/asset_viewer/providers/current_asset.provider.g.dart
rename to mobile/lib/providers/asset_viewer/current_asset.provider.g.dart
diff --git a/mobile/lib/modules/asset_viewer/providers/image_viewer_page_state.provider.dart b/mobile/lib/providers/asset_viewer/image_viewer_page_state.provider.dart
similarity index 90%
rename from mobile/lib/modules/asset_viewer/providers/image_viewer_page_state.provider.dart
rename to mobile/lib/providers/asset_viewer/image_viewer_page_state.provider.dart
index f51ab3c615..0ebde1c7a4 100644
--- a/mobile/lib/modules/asset_viewer/providers/image_viewer_page_state.provider.dart
+++ b/mobile/lib/providers/asset_viewer/image_viewer_page_state.provider.dart
@@ -3,11 +3,11 @@ import 'package:flutter/material.dart';
 import 'package:fluttertoast/fluttertoast.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/album/services/album.service.dart';
+import 'package:immich_mobile/services/album.service.dart';
 import 'package:immich_mobile/models/asset_viewer/asset_viewer_page_state.model.dart';
-import 'package:immich_mobile/modules/asset_viewer/services/image_viewer.service.dart';
+import 'package:immich_mobile/services/image_viewer.service.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/services/share.service.dart';
+import 'package:immich_mobile/services/share.service.dart';
 import 'package:immich_mobile/shared/ui/immich_toast.dart';
 import 'package:immich_mobile/shared/ui/share_dialog.dart';
 
diff --git a/mobile/lib/modules/asset_viewer/providers/render_list.provider.dart b/mobile/lib/providers/asset_viewer/render_list.provider.dart
similarity index 87%
rename from mobile/lib/modules/asset_viewer/providers/render_list.provider.dart
rename to mobile/lib/providers/asset_viewer/render_list.provider.dart
index 753ed66198..43a79dd049 100644
--- a/mobile/lib/modules/asset_viewer/providers/render_list.provider.dart
+++ b/mobile/lib/providers/asset_viewer/render_list.provider.dart
@@ -1,7 +1,7 @@
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/asset_grid_data_structure.dart';
-import 'package:immich_mobile/modules/settings/providers/app_settings.provider.dart';
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
+import 'package:immich_mobile/providers/app_settings.provider.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
 import 'package:immich_mobile/utils/renderlist_generator.dart';
 import 'package:isar/isar.dart';
diff --git a/mobile/lib/modules/asset_viewer/providers/scroll_notifier.provider.dart b/mobile/lib/providers/asset_viewer/scroll_notifier.provider.dart
similarity index 100%
rename from mobile/lib/modules/asset_viewer/providers/scroll_notifier.provider.dart
rename to mobile/lib/providers/asset_viewer/scroll_notifier.provider.dart
diff --git a/mobile/lib/modules/asset_viewer/providers/scroll_to_date_notifier.provider.dart b/mobile/lib/providers/asset_viewer/scroll_to_date_notifier.provider.dart
similarity index 100%
rename from mobile/lib/modules/asset_viewer/providers/scroll_to_date_notifier.provider.dart
rename to mobile/lib/providers/asset_viewer/scroll_to_date_notifier.provider.dart
diff --git a/mobile/lib/modules/asset_viewer/providers/show_controls.provider.dart b/mobile/lib/providers/asset_viewer/show_controls.provider.dart
similarity index 100%
rename from mobile/lib/modules/asset_viewer/providers/show_controls.provider.dart
rename to mobile/lib/providers/asset_viewer/show_controls.provider.dart
diff --git a/mobile/lib/modules/asset_viewer/providers/video_player_controller_provider.dart b/mobile/lib/providers/asset_viewer/video_player_controller_provider.dart
similarity index 100%
rename from mobile/lib/modules/asset_viewer/providers/video_player_controller_provider.dart
rename to mobile/lib/providers/asset_viewer/video_player_controller_provider.dart
diff --git a/mobile/lib/modules/asset_viewer/providers/video_player_controller_provider.g.dart b/mobile/lib/providers/asset_viewer/video_player_controller_provider.g.dart
similarity index 100%
rename from mobile/lib/modules/asset_viewer/providers/video_player_controller_provider.g.dart
rename to mobile/lib/providers/asset_viewer/video_player_controller_provider.g.dart
diff --git a/mobile/lib/modules/asset_viewer/providers/video_player_controls_provider.dart b/mobile/lib/providers/asset_viewer/video_player_controls_provider.dart
similarity index 100%
rename from mobile/lib/modules/asset_viewer/providers/video_player_controls_provider.dart
rename to mobile/lib/providers/asset_viewer/video_player_controls_provider.dart
diff --git a/mobile/lib/modules/asset_viewer/providers/video_player_value_provider.dart b/mobile/lib/providers/asset_viewer/video_player_value_provider.dart
similarity index 100%
rename from mobile/lib/modules/asset_viewer/providers/video_player_value_provider.dart
rename to mobile/lib/providers/asset_viewer/video_player_value_provider.dart
diff --git a/mobile/lib/modules/login/providers/authentication.provider.dart b/mobile/lib/providers/authentication.provider.dart
similarity index 95%
rename from mobile/lib/modules/login/providers/authentication.provider.dart
rename to mobile/lib/providers/authentication.provider.dart
index 5673184996..a595d43c86 100644
--- a/mobile/lib/modules/login/providers/authentication.provider.dart
+++ b/mobile/lib/providers/authentication.provider.dart
@@ -4,14 +4,14 @@ import 'package:device_info_plus/device_info_plus.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_udid/flutter_udid.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/album/providers/album.provider.dart';
-import 'package:immich_mobile/modules/album/providers/shared_album.provider.dart';
+import 'package:immich_mobile/providers/album/album.provider.dart';
+import 'package:immich_mobile/providers/album/shared_album.provider.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
 import 'package:immich_mobile/models/authentication/authentication_state.model.dart';
 import 'package:immich_mobile/entities/user.entity.dart';
-import 'package:immich_mobile/shared/providers/api.provider.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
-import 'package:immich_mobile/shared/services/api.service.dart';
+import 'package:immich_mobile/providers/api.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
+import 'package:immich_mobile/services/api.service.dart';
 import 'package:immich_mobile/utils/db.dart';
 import 'package:immich_mobile/utils/hash.dart';
 import 'package:isar/isar.dart';
diff --git a/mobile/lib/modules/backup/providers/backup.provider.dart b/mobile/lib/providers/backup/backup.provider.dart
similarity index 96%
rename from mobile/lib/modules/backup/providers/backup.provider.dart
rename to mobile/lib/providers/backup/backup.provider.dart
index da222e2afd..6568943722 100644
--- a/mobile/lib/modules/backup/providers/backup.provider.dart
+++ b/mobile/lib/providers/backup/backup.provider.dart
@@ -9,17 +9,17 @@ import 'package:immich_mobile/entities/backup_album.entity.dart';
 import 'package:immich_mobile/models/backup/backup_state.model.dart';
 import 'package:immich_mobile/models/backup/current_upload_asset.model.dart';
 import 'package:immich_mobile/models/backup/error_upload_asset.model.dart';
-import 'package:immich_mobile/modules/backup/providers/error_backup_list.provider.dart';
-import 'package:immich_mobile/modules/backup/background_service/background.service.dart';
-import 'package:immich_mobile/modules/backup/services/backup.service.dart';
+import 'package:immich_mobile/providers/backup/error_backup_list.provider.dart';
+import 'package:immich_mobile/services/background.service.dart';
+import 'package:immich_mobile/services/backup.service.dart';
 import 'package:immich_mobile/models/authentication/authentication_state.model.dart';
-import 'package:immich_mobile/modules/login/providers/authentication.provider.dart';
-import 'package:immich_mobile/modules/onboarding/providers/gallery_permission.provider.dart';
+import 'package:immich_mobile/providers/authentication.provider.dart';
+import 'package:immich_mobile/providers/gallery_permission.provider.dart';
 import 'package:immich_mobile/models/server_info/server_disk_info.model.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
-import 'package:immich_mobile/shared/providers/app_state.provider.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
-import 'package:immich_mobile/shared/services/server_info.service.dart';
+import 'package:immich_mobile/providers/app_life_cycle.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
+import 'package:immich_mobile/services/server_info.service.dart';
 import 'package:immich_mobile/utils/backup_progress.dart';
 import 'package:immich_mobile/utils/diff.dart';
 import 'package:isar/isar.dart';
@@ -674,9 +674,9 @@ class BackupNotifier extends StateNotifier<BackUpState> {
 
   Future<void> notifyBackgroundServiceCanRun() async {
     const allowedStates = [
-      AppStateEnum.inactive,
-      AppStateEnum.paused,
-      AppStateEnum.detached,
+      AppLifeCycleEnum.inactive,
+      AppLifeCycleEnum.paused,
+      AppLifeCycleEnum.detached,
     ];
     if (allowedStates.contains(ref.read(appStateProvider.notifier).state)) {
       _backgroundService.releaseLock();
diff --git a/mobile/lib/modules/backup/providers/backup_verification.provider.dart b/mobile/lib/providers/backup/backup_verification.provider.dart
similarity index 93%
rename from mobile/lib/modules/backup/providers/backup_verification.provider.dart
rename to mobile/lib/providers/backup/backup_verification.provider.dart
index 65b82428e7..92f012e908 100644
--- a/mobile/lib/modules/backup/providers/backup_verification.provider.dart
+++ b/mobile/lib/providers/backup/backup_verification.provider.dart
@@ -2,10 +2,10 @@ import 'dart:async';
 
 import 'package:connectivity_plus/connectivity_plus.dart';
 import 'package:flutter/material.dart';
-import 'package:immich_mobile/modules/backup/providers/backup.provider.dart';
-import 'package:immich_mobile/modules/backup/services/backup_verification.service.dart';
+import 'package:immich_mobile/providers/backup/backup.provider.dart';
+import 'package:immich_mobile/services/backup_verification.service.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/asset.provider.dart';
+import 'package:immich_mobile/providers/asset.provider.dart';
 import 'package:immich_mobile/shared/ui/confirm_dialog.dart';
 import 'package:immich_mobile/shared/ui/immich_toast.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
diff --git a/mobile/lib/modules/backup/providers/backup_verification.provider.g.dart b/mobile/lib/providers/backup/backup_verification.provider.g.dart
similarity index 100%
rename from mobile/lib/modules/backup/providers/backup_verification.provider.g.dart
rename to mobile/lib/providers/backup/backup_verification.provider.g.dart
diff --git a/mobile/lib/modules/backup/providers/error_backup_list.provider.dart b/mobile/lib/providers/backup/error_backup_list.provider.dart
similarity index 100%
rename from mobile/lib/modules/backup/providers/error_backup_list.provider.dart
rename to mobile/lib/providers/backup/error_backup_list.provider.dart
diff --git a/mobile/lib/modules/backup/providers/ios_background_settings.provider.dart b/mobile/lib/providers/backup/ios_background_settings.provider.dart
similarity index 95%
rename from mobile/lib/modules/backup/providers/ios_background_settings.provider.dart
rename to mobile/lib/providers/backup/ios_background_settings.provider.dart
index 5dbf7c0498..7605d73650 100644
--- a/mobile/lib/modules/backup/providers/ios_background_settings.provider.dart
+++ b/mobile/lib/providers/backup/ios_background_settings.provider.dart
@@ -1,5 +1,5 @@
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/backup/background_service/background.service.dart';
+import 'package:immich_mobile/services/background.service.dart';
 
 class IOSBackgroundSettings {
   final bool appRefreshEnabled;
diff --git a/mobile/lib/modules/backup/providers/manual_upload.provider.dart b/mobile/lib/providers/backup/manual_upload.provider.dart
similarity index 94%
rename from mobile/lib/modules/backup/providers/manual_upload.provider.dart
rename to mobile/lib/providers/backup/manual_upload.provider.dart
index 74114dfd93..f10d4ca399 100644
--- a/mobile/lib/modules/backup/providers/manual_upload.provider.dart
+++ b/mobile/lib/providers/backup/manual_upload.provider.dart
@@ -6,20 +6,20 @@ import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/widgets.dart';
 import 'package:fluttertoast/fluttertoast.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/backup/background_service/background.service.dart';
+import 'package:immich_mobile/services/background.service.dart';
 import 'package:immich_mobile/models/backup/backup_state.model.dart';
 import 'package:immich_mobile/models/backup/current_upload_asset.model.dart';
 import 'package:immich_mobile/models/backup/error_upload_asset.model.dart';
 import 'package:immich_mobile/models/backup/manual_upload_state.model.dart';
-import 'package:immich_mobile/modules/backup/providers/backup.provider.dart';
-import 'package:immich_mobile/modules/backup/providers/error_backup_list.provider.dart';
-import 'package:immich_mobile/modules/backup/services/backup.service.dart';
-import 'package:immich_mobile/modules/onboarding/providers/gallery_permission.provider.dart';
-import 'package:immich_mobile/modules/settings/providers/app_settings.provider.dart';
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
+import 'package:immich_mobile/providers/backup/backup.provider.dart';
+import 'package:immich_mobile/providers/backup/error_backup_list.provider.dart';
+import 'package:immich_mobile/services/backup.service.dart';
+import 'package:immich_mobile/providers/gallery_permission.provider.dart';
+import 'package:immich_mobile/providers/app_settings.provider.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/app_state.provider.dart';
-import 'package:immich_mobile/shared/services/local_notification.service.dart';
+import 'package:immich_mobile/providers/app_life_cycle.provider.dart';
+import 'package:immich_mobile/services/local_notification.service.dart';
 import 'package:immich_mobile/shared/ui/immich_toast.dart';
 import 'package:immich_mobile/utils/backup_progress.dart';
 import 'package:logging/logging.dart';
@@ -314,7 +314,8 @@ class ManualUploadNotifier extends StateNotifier<ManualUploadState> {
     final appState = ref.read(appStateProvider.notifier).getAppState();
     // The app is currently in background. Perform the necessary cleanups which
     // are on-hold for upload completion
-    if (appState != AppStateEnum.active && appState != AppStateEnum.resumed) {
+    if (appState != AppLifeCycleEnum.active &&
+        appState != AppLifeCycleEnum.resumed) {
       ref.read(backupProvider.notifier).cancelBackup();
     }
   }
diff --git a/mobile/lib/shared/providers/db.provider.dart b/mobile/lib/providers/db.provider.dart
similarity index 100%
rename from mobile/lib/shared/providers/db.provider.dart
rename to mobile/lib/providers/db.provider.dart
diff --git a/mobile/lib/modules/favorite/providers/favorite_provider.dart b/mobile/lib/providers/favorite_provider.dart
similarity index 84%
rename from mobile/lib/modules/favorite/providers/favorite_provider.dart
rename to mobile/lib/providers/favorite_provider.dart
index eec58a8482..c0314ddeb9 100644
--- a/mobile/lib/modules/favorite/providers/favorite_provider.dart
+++ b/mobile/lib/providers/favorite_provider.dart
@@ -1,8 +1,8 @@
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/asset_grid_data_structure.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
-import 'package:immich_mobile/shared/providers/user.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
+import 'package:immich_mobile/providers/user.provider.dart';
 import 'package:immich_mobile/utils/renderlist_generator.dart';
 import 'package:isar/isar.dart';
 
diff --git a/mobile/lib/modules/onboarding/providers/gallery_permission.provider.dart b/mobile/lib/providers/gallery_permission.provider.dart
similarity index 100%
rename from mobile/lib/modules/onboarding/providers/gallery_permission.provider.dart
rename to mobile/lib/providers/gallery_permission.provider.dart
diff --git a/mobile/lib/shared/providers/haptic_feedback.provider.dart b/mobile/lib/providers/haptic_feedback.provider.dart
similarity index 88%
rename from mobile/lib/shared/providers/haptic_feedback.provider.dart
rename to mobile/lib/providers/haptic_feedback.provider.dart
index 47373a67e9..ce8997c85c 100644
--- a/mobile/lib/shared/providers/haptic_feedback.provider.dart
+++ b/mobile/lib/providers/haptic_feedback.provider.dart
@@ -1,7 +1,7 @@
 import 'package:flutter/services.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/settings/providers/app_settings.provider.dart';
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
+import 'package:immich_mobile/providers/app_settings.provider.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
 
 final hapticFeedbackProvider =
     StateNotifierProvider<HapticNotifier, void>((ref) {
diff --git a/mobile/lib/modules/asset_viewer/image_providers/cache/image_loader.dart b/mobile/lib/providers/image/cache/image_loader.dart
similarity index 93%
rename from mobile/lib/modules/asset_viewer/image_providers/cache/image_loader.dart
rename to mobile/lib/providers/image/cache/image_loader.dart
index afa964b66d..5124494255 100644
--- a/mobile/lib/modules/asset_viewer/image_providers/cache/image_loader.dart
+++ b/mobile/lib/providers/image/cache/image_loader.dart
@@ -3,7 +3,7 @@ import 'dart:ui' as ui;
 
 import 'package:flutter/material.dart';
 import 'package:flutter_cache_manager/flutter_cache_manager.dart';
-import 'package:immich_mobile/modules/asset_viewer/image_providers/exceptions/image_loading_exception.dart';
+import 'package:immich_mobile/providers/image/exceptions/image_loading_exception.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
 
 /// Loads the codec from the URI and sends the events to the [chunkEvents] stream
diff --git a/mobile/lib/modules/asset_viewer/image_providers/cache/remote_image_cache_manager.dart b/mobile/lib/providers/image/cache/remote_image_cache_manager.dart
similarity index 100%
rename from mobile/lib/modules/asset_viewer/image_providers/cache/remote_image_cache_manager.dart
rename to mobile/lib/providers/image/cache/remote_image_cache_manager.dart
diff --git a/mobile/lib/modules/asset_viewer/image_providers/cache/thumbnail_image_cache_manager.dart b/mobile/lib/providers/image/cache/thumbnail_image_cache_manager.dart
similarity index 100%
rename from mobile/lib/modules/asset_viewer/image_providers/cache/thumbnail_image_cache_manager.dart
rename to mobile/lib/providers/image/cache/thumbnail_image_cache_manager.dart
diff --git a/mobile/lib/modules/asset_viewer/image_providers/exceptions/image_loading_exception.dart b/mobile/lib/providers/image/exceptions/image_loading_exception.dart
similarity index 100%
rename from mobile/lib/modules/asset_viewer/image_providers/exceptions/image_loading_exception.dart
rename to mobile/lib/providers/image/exceptions/image_loading_exception.dart
diff --git a/mobile/lib/modules/asset_viewer/image_providers/immich_local_image_provider.dart b/mobile/lib/providers/image/immich_local_image_provider.dart
similarity index 100%
rename from mobile/lib/modules/asset_viewer/image_providers/immich_local_image_provider.dart
rename to mobile/lib/providers/image/immich_local_image_provider.dart
diff --git a/mobile/lib/modules/asset_viewer/image_providers/immich_local_thumbnail_provider.dart b/mobile/lib/providers/image/immich_local_thumbnail_provider.dart
similarity index 100%
rename from mobile/lib/modules/asset_viewer/image_providers/immich_local_thumbnail_provider.dart
rename to mobile/lib/providers/image/immich_local_thumbnail_provider.dart
diff --git a/mobile/lib/modules/asset_viewer/image_providers/immich_remote_image_provider.dart b/mobile/lib/providers/image/immich_remote_image_provider.dart
similarity index 92%
rename from mobile/lib/modules/asset_viewer/image_providers/immich_remote_image_provider.dart
rename to mobile/lib/providers/image/immich_remote_image_provider.dart
index eda6873b28..8eeca91f22 100644
--- a/mobile/lib/modules/asset_viewer/image_providers/immich_remote_image_provider.dart
+++ b/mobile/lib/providers/image/immich_remote_image_provider.dart
@@ -3,13 +3,13 @@ import 'dart:ui' as ui;
 
 import 'package:cached_network_image/cached_network_image.dart';
 import 'package:flutter_cache_manager/flutter_cache_manager.dart';
-import 'package:immich_mobile/modules/asset_viewer/image_providers/cache/image_loader.dart';
-import 'package:immich_mobile/modules/asset_viewer/image_providers/cache/remote_image_cache_manager.dart';
+import 'package:immich_mobile/providers/image/cache/image_loader.dart';
+import 'package:immich_mobile/providers/image/cache/remote_image_cache_manager.dart';
 import 'package:openapi/api.dart' as api;
 
 import 'package:flutter/foundation.dart';
 import 'package:flutter/painting.dart';
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
 import 'package:immich_mobile/utils/image_url_builder.dart';
diff --git a/mobile/lib/modules/asset_viewer/image_providers/immich_remote_thumbnail_provider.dart b/mobile/lib/providers/image/immich_remote_thumbnail_provider.dart
similarity index 91%
rename from mobile/lib/modules/asset_viewer/image_providers/immich_remote_thumbnail_provider.dart
rename to mobile/lib/providers/image/immich_remote_thumbnail_provider.dart
index 8db0771c7c..11b70f30e1 100644
--- a/mobile/lib/modules/asset_viewer/image_providers/immich_remote_thumbnail_provider.dart
+++ b/mobile/lib/providers/image/immich_remote_thumbnail_provider.dart
@@ -3,8 +3,8 @@ import 'dart:ui' as ui;
 
 import 'package:cached_network_image/cached_network_image.dart';
 import 'package:flutter_cache_manager/flutter_cache_manager.dart';
-import 'package:immich_mobile/modules/asset_viewer/image_providers/cache/image_loader.dart';
-import 'package:immich_mobile/modules/asset_viewer/image_providers/cache/thumbnail_image_cache_manager.dart';
+import 'package:immich_mobile/providers/image/cache/image_loader.dart';
+import 'package:immich_mobile/providers/image/cache/thumbnail_image_cache_manager.dart';
 import 'package:openapi/api.dart' as api;
 
 import 'package:flutter/foundation.dart';
diff --git a/mobile/lib/shared/providers/immich_logo_provider.dart b/mobile/lib/providers/immich_logo_provider.dart
similarity index 100%
rename from mobile/lib/shared/providers/immich_logo_provider.dart
rename to mobile/lib/providers/immich_logo_provider.dart
diff --git a/mobile/lib/shared/providers/immich_logo_provider.g.dart b/mobile/lib/providers/immich_logo_provider.g.dart
similarity index 100%
rename from mobile/lib/shared/providers/immich_logo_provider.g.dart
rename to mobile/lib/providers/immich_logo_provider.g.dart
diff --git a/mobile/lib/modules/map/providers/map_marker.provider.dart b/mobile/lib/providers/map/map_marker.provider.dart
similarity index 86%
rename from mobile/lib/modules/map/providers/map_marker.provider.dart
rename to mobile/lib/providers/map/map_marker.provider.dart
index ddd325f9a1..c8e8a77c17 100644
--- a/mobile/lib/modules/map/providers/map_marker.provider.dart
+++ b/mobile/lib/providers/map/map_marker.provider.dart
@@ -1,6 +1,6 @@
 import 'package:immich_mobile/models/map/map_marker.model.dart';
-import 'package:immich_mobile/modules/map/providers/map_service.provider.dart';
-import 'package:immich_mobile/modules/map/providers/map_state.provider.dart';
+import 'package:immich_mobile/providers/map/map_service.provider.dart';
+import 'package:immich_mobile/providers/map/map_state.provider.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
 
 part 'map_marker.provider.g.dart';
diff --git a/mobile/lib/modules/map/providers/map_marker.provider.g.dart b/mobile/lib/providers/map/map_marker.provider.g.dart
similarity index 100%
rename from mobile/lib/modules/map/providers/map_marker.provider.g.dart
rename to mobile/lib/providers/map/map_marker.provider.g.dart
diff --git a/mobile/lib/modules/map/providers/map_service.provider.dart b/mobile/lib/providers/map/map_service.provider.dart
similarity index 59%
rename from mobile/lib/modules/map/providers/map_service.provider.dart
rename to mobile/lib/providers/map/map_service.provider.dart
index 666ca7acda..2773f7dcc9 100644
--- a/mobile/lib/modules/map/providers/map_service.provider.dart
+++ b/mobile/lib/providers/map/map_service.provider.dart
@@ -1,5 +1,5 @@
-import 'package:immich_mobile/modules/map/services/map.service.dart';
-import 'package:immich_mobile/shared/providers/api.provider.dart';
+import 'package:immich_mobile/services/map.service.dart';
+import 'package:immich_mobile/providers/api.provider.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
 
 part 'map_service.provider.g.dart';
diff --git a/mobile/lib/modules/map/providers/map_service.provider.g.dart b/mobile/lib/providers/map/map_service.provider.g.dart
similarity index 100%
rename from mobile/lib/modules/map/providers/map_service.provider.g.dart
rename to mobile/lib/providers/map/map_service.provider.g.dart
diff --git a/mobile/lib/modules/map/providers/map_state.provider.dart b/mobile/lib/providers/map/map_state.provider.dart
similarity index 95%
rename from mobile/lib/modules/map/providers/map_state.provider.dart
rename to mobile/lib/providers/map/map_state.provider.dart
index 47ada0adf4..2fb1c3e51d 100644
--- a/mobile/lib/modules/map/providers/map_state.provider.dart
+++ b/mobile/lib/providers/map/map_state.provider.dart
@@ -3,9 +3,9 @@ import 'dart:io';
 import 'package:flutter/material.dart';
 import 'package:immich_mobile/extensions/response_extensions.dart';
 import 'package:immich_mobile/models/map/map_state.model.dart';
-import 'package:immich_mobile/modules/settings/providers/app_settings.provider.dart';
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
-import 'package:immich_mobile/shared/providers/api.provider.dart';
+import 'package:immich_mobile/providers/app_settings.provider.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
+import 'package:immich_mobile/providers/api.provider.dart';
 import 'package:logging/logging.dart';
 import 'package:openapi/api.dart';
 import 'package:path_provider/path_provider.dart';
diff --git a/mobile/lib/modules/map/providers/map_state.provider.g.dart b/mobile/lib/providers/map/map_state.provider.g.dart
similarity index 100%
rename from mobile/lib/modules/map/providers/map_state.provider.g.dart
rename to mobile/lib/providers/map/map_state.provider.g.dart
diff --git a/mobile/lib/modules/memories/providers/memory.provider.dart b/mobile/lib/providers/memory.provider.dart
similarity index 79%
rename from mobile/lib/modules/memories/providers/memory.provider.dart
rename to mobile/lib/providers/memory.provider.dart
index 5478970749..aed546002d 100644
--- a/mobile/lib/modules/memories/providers/memory.provider.dart
+++ b/mobile/lib/providers/memory.provider.dart
@@ -1,6 +1,6 @@
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/models/memories/memory.model.dart';
-import 'package:immich_mobile/modules/memories/services/memory.service.dart';
+import 'package:immich_mobile/services/memory.service.dart';
 
 final memoryFutureProvider =
     FutureProvider.autoDispose<List<Memory>?>((ref) async {
diff --git a/mobile/lib/modules/home/providers/multiselect.provider.dart b/mobile/lib/providers/multiselect.provider.dart
similarity index 100%
rename from mobile/lib/modules/home/providers/multiselect.provider.dart
rename to mobile/lib/providers/multiselect.provider.dart
diff --git a/mobile/lib/modules/settings/providers/notification_permission.provider.dart b/mobile/lib/providers/notification_permission.provider.dart
similarity index 100%
rename from mobile/lib/modules/settings/providers/notification_permission.provider.dart
rename to mobile/lib/providers/notification_permission.provider.dart
diff --git a/mobile/lib/modules/login/providers/oauth.provider.dart b/mobile/lib/providers/oauth.provider.dart
similarity index 51%
rename from mobile/lib/modules/login/providers/oauth.provider.dart
rename to mobile/lib/providers/oauth.provider.dart
index dc0b1e643d..d8d66122f7 100644
--- a/mobile/lib/modules/login/providers/oauth.provider.dart
+++ b/mobile/lib/providers/oauth.provider.dart
@@ -1,6 +1,6 @@
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/login/services/oauth.service.dart';
-import 'package:immich_mobile/shared/providers/api.provider.dart';
+import 'package:immich_mobile/services/oauth.service.dart';
+import 'package:immich_mobile/providers/api.provider.dart';
 
 final oAuthServiceProvider =
     Provider((ref) => OAuthService(ref.watch(apiServiceProvider)));
diff --git a/mobile/lib/modules/partner/providers/partner.provider.dart b/mobile/lib/providers/partner.provider.dart
similarity index 88%
rename from mobile/lib/modules/partner/providers/partner.provider.dart
rename to mobile/lib/providers/partner.provider.dart
index d5ca948d10..6ea335979f 100644
--- a/mobile/lib/modules/partner/providers/partner.provider.dart
+++ b/mobile/lib/providers/partner.provider.dart
@@ -1,10 +1,10 @@
 import 'dart:async';
 
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/album/providers/suggested_shared_users.provider.dart';
-import 'package:immich_mobile/modules/partner/services/partner.service.dart';
+import 'package:immich_mobile/providers/album/suggested_shared_users.provider.dart';
+import 'package:immich_mobile/services/partner.service.dart';
 import 'package:immich_mobile/entities/user.entity.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
 import 'package:isar/isar.dart';
 
 class PartnerSharedWithNotifier extends StateNotifier<List<User>> {
diff --git a/mobile/lib/modules/search/providers/all_motion_photos.provider.dart b/mobile/lib/providers/search/all_motion_photos.provider.dart
similarity index 83%
rename from mobile/lib/modules/search/providers/all_motion_photos.provider.dart
rename to mobile/lib/providers/search/all_motion_photos.provider.dart
index 5b2819832c..1740613e58 100644
--- a/mobile/lib/modules/search/providers/all_motion_photos.provider.dart
+++ b/mobile/lib/providers/search/all_motion_photos.provider.dart
@@ -1,6 +1,6 @@
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
 import 'package:isar/isar.dart';
 
 final allMotionPhotosProvider = FutureProvider<List<Asset>>((ref) async {
diff --git a/mobile/lib/modules/search/providers/all_video_assets.provider.dart b/mobile/lib/providers/search/all_video_assets.provider.dart
similarity index 89%
rename from mobile/lib/modules/search/providers/all_video_assets.provider.dart
rename to mobile/lib/providers/search/all_video_assets.provider.dart
index 2ad57d4c06..e69724d38b 100644
--- a/mobile/lib/modules/search/providers/all_video_assets.provider.dart
+++ b/mobile/lib/providers/search/all_video_assets.provider.dart
@@ -1,7 +1,7 @@
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/asset_grid_data_structure.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
 import 'package:immich_mobile/utils/renderlist_generator.dart';
 
 final allVideoAssetsProvider = StreamProvider<RenderList>((ref) {
diff --git a/mobile/lib/modules/search/providers/paginated_search.provider.dart b/mobile/lib/providers/search/paginated_search.provider.dart
similarity index 87%
rename from mobile/lib/modules/search/providers/paginated_search.provider.dart
rename to mobile/lib/providers/search/paginated_search.provider.dart
index 28d108da0d..3eea1e19a5 100644
--- a/mobile/lib/modules/search/providers/paginated_search.provider.dart
+++ b/mobile/lib/providers/search/paginated_search.provider.dart
@@ -1,7 +1,7 @@
-import 'package:immich_mobile/modules/asset_viewer/providers/render_list.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/render_list.provider.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/asset_grid_data_structure.dart';
 import 'package:immich_mobile/models/search/search_filter.model.dart';
-import 'package:immich_mobile/modules/search/services/search.service.dart';
+import 'package:immich_mobile/services/search.service.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
 
diff --git a/mobile/lib/modules/search/providers/paginated_search.provider.g.dart b/mobile/lib/providers/search/paginated_search.provider.g.dart
similarity index 100%
rename from mobile/lib/modules/search/providers/paginated_search.provider.g.dart
rename to mobile/lib/providers/search/paginated_search.provider.g.dart
diff --git a/mobile/lib/modules/search/providers/people.provider.dart b/mobile/lib/providers/search/people.provider.dart
similarity index 82%
rename from mobile/lib/modules/search/providers/people.provider.dart
rename to mobile/lib/providers/search/people.provider.dart
index 398d1122ab..f34b3a5e8c 100644
--- a/mobile/lib/modules/search/providers/people.provider.dart
+++ b/mobile/lib/providers/search/people.provider.dart
@@ -1,7 +1,7 @@
 import 'package:immich_mobile/modules/home/ui/asset_grid/asset_grid_data_structure.dart';
-import 'package:immich_mobile/modules/search/services/person.service.dart';
-import 'package:immich_mobile/modules/settings/providers/app_settings.provider.dart';
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
+import 'package:immich_mobile/services/person.service.dart';
+import 'package:immich_mobile/providers/app_settings.provider.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
 import 'package:openapi/api.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
 
diff --git a/mobile/lib/modules/search/providers/people.provider.g.dart b/mobile/lib/providers/search/people.provider.g.dart
similarity index 100%
rename from mobile/lib/modules/search/providers/people.provider.g.dart
rename to mobile/lib/providers/search/people.provider.g.dart
diff --git a/mobile/lib/modules/search/providers/recently_added.provider.dart b/mobile/lib/providers/search/recently_added_asset.provider.dart
similarity index 65%
rename from mobile/lib/modules/search/providers/recently_added.provider.dart
rename to mobile/lib/providers/search/recently_added_asset.provider.dart
index 0af3adad9e..bf728ba095 100644
--- a/mobile/lib/modules/search/providers/recently_added.provider.dart
+++ b/mobile/lib/providers/search/recently_added_asset.provider.dart
@@ -1,10 +1,10 @@
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
-import 'package:immich_mobile/shared/providers/user.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
+import 'package:immich_mobile/providers/user.provider.dart';
 import 'package:isar/isar.dart';
 
-final recentlyAddedProvider = FutureProvider<List<Asset>>((ref) async {
+final recentlyAddedAssetProvider = FutureProvider<List<Asset>>((ref) async {
   final user = ref.read(currentUserProvider);
   if (user == null) return [];
 
diff --git a/mobile/lib/modules/search/providers/search_filter.provider.dart b/mobile/lib/providers/search/search_filter.provider.dart
similarity index 88%
rename from mobile/lib/modules/search/providers/search_filter.provider.dart
rename to mobile/lib/providers/search/search_filter.provider.dart
index 1a4914b416..9086fc861f 100644
--- a/mobile/lib/modules/search/providers/search_filter.provider.dart
+++ b/mobile/lib/providers/search/search_filter.provider.dart
@@ -1,4 +1,4 @@
-import 'package:immich_mobile/modules/search/services/search.service.dart';
+import 'package:immich_mobile/services/search.service.dart';
 import 'package:openapi/api.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
 
diff --git a/mobile/lib/modules/search/providers/search_filter.provider.g.dart b/mobile/lib/providers/search/search_filter.provider.g.dart
similarity index 100%
rename from mobile/lib/modules/search/providers/search_filter.provider.g.dart
rename to mobile/lib/providers/search/search_filter.provider.g.dart
diff --git a/mobile/lib/modules/search/providers/search_page_state.provider.dart b/mobile/lib/providers/search/search_page_state.provider.dart
similarity index 94%
rename from mobile/lib/modules/search/providers/search_page_state.provider.dart
rename to mobile/lib/providers/search/search_page_state.provider.dart
index ee0d4c780b..d0e3720c0f 100644
--- a/mobile/lib/modules/search/providers/search_page_state.provider.dart
+++ b/mobile/lib/providers/search/search_page_state.provider.dart
@@ -1,7 +1,7 @@
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/models/search/search_curated_content.model.dart';
 
-import 'package:immich_mobile/modules/search/services/search.service.dart';
+import 'package:immich_mobile/services/search.service.dart';
 
 final getPreviewPlacesProvider =
     FutureProvider.autoDispose<List<SearchCuratedContent>>((ref) async {
diff --git a/mobile/lib/shared/providers/server_info.provider.dart b/mobile/lib/providers/server_info.provider.dart
similarity index 95%
rename from mobile/lib/shared/providers/server_info.provider.dart
rename to mobile/lib/providers/server_info.provider.dart
index d7836d58fd..6327f992f5 100644
--- a/mobile/lib/shared/providers/server_info.provider.dart
+++ b/mobile/lib/providers/server_info.provider.dart
@@ -3,7 +3,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/models/server_info/server_disk_info.model.dart';
 
 import 'package:immich_mobile/models/server_info/server_info.model.dart';
-import 'package:immich_mobile/shared/services/server_info.service.dart';
+import 'package:immich_mobile/services/server_info.service.dart';
 import 'package:immich_mobile/models/server_info/server_config.model.dart';
 import 'package:immich_mobile/models/server_info/server_features.model.dart';
 import 'package:immich_mobile/models/server_info/server_version.model.dart';
diff --git a/mobile/lib/modules/shared_link/providers/shared_link.provider.dart b/mobile/lib/providers/shared_link.provider.dart
similarity index 90%
rename from mobile/lib/modules/shared_link/providers/shared_link.provider.dart
rename to mobile/lib/providers/shared_link.provider.dart
index 28cc61c5a3..29b628c765 100644
--- a/mobile/lib/modules/shared_link/providers/shared_link.provider.dart
+++ b/mobile/lib/providers/shared_link.provider.dart
@@ -1,6 +1,6 @@
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/models/shared_link/shared_link.model.dart';
-import 'package:immich_mobile/modules/shared_link/services/shared_link.service.dart';
+import 'package:immich_mobile/services/shared_link.service.dart';
 
 class SharedLinksNotifier extends StateNotifier<AsyncValue<List<SharedLink>>> {
   final SharedLinkService _sharedLinkService;
diff --git a/mobile/lib/shared/providers/tab.provider.dart b/mobile/lib/providers/tab.provider.dart
similarity index 100%
rename from mobile/lib/shared/providers/tab.provider.dart
rename to mobile/lib/providers/tab.provider.dart
diff --git a/mobile/lib/modules/trash/providers/trashed_asset.provider.dart b/mobile/lib/providers/trash.provider.dart
similarity index 92%
rename from mobile/lib/modules/trash/providers/trashed_asset.provider.dart
rename to mobile/lib/providers/trash.provider.dart
index a6603d2956..bc387cb09d 100644
--- a/mobile/lib/modules/trash/providers/trashed_asset.provider.dart
+++ b/mobile/lib/providers/trash.provider.dart
@@ -1,11 +1,11 @@
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/asset_grid_data_structure.dart';
-import 'package:immich_mobile/modules/trash/services/trash.service.dart';
+import 'package:immich_mobile/services/trash.service.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/asset.provider.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
-import 'package:immich_mobile/shared/providers/user.provider.dart';
-import 'package:immich_mobile/shared/services/sync.service.dart';
+import 'package:immich_mobile/providers/asset.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
+import 'package:immich_mobile/providers/user.provider.dart';
+import 'package:immich_mobile/services/sync.service.dart';
 import 'package:immich_mobile/utils/renderlist_generator.dart';
 import 'package:isar/isar.dart';
 import 'package:logging/logging.dart';
diff --git a/mobile/lib/modules/home/providers/upload_profile_image.provider.dart b/mobile/lib/providers/upload_profile_image.provider.dart
similarity index 97%
rename from mobile/lib/modules/home/providers/upload_profile_image.provider.dart
rename to mobile/lib/providers/upload_profile_image.provider.dart
index a0dc925902..83f30e5018 100644
--- a/mobile/lib/modules/home/providers/upload_profile_image.provider.dart
+++ b/mobile/lib/providers/upload_profile_image.provider.dart
@@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:image_picker/image_picker.dart';
 
-import 'package:immich_mobile/shared/services/user.service.dart';
+import 'package:immich_mobile/services/user.service.dart';
 
 enum UploadProfileStatus {
   idle,
diff --git a/mobile/lib/shared/providers/user.provider.dart b/mobile/lib/providers/user.provider.dart
similarity index 90%
rename from mobile/lib/shared/providers/user.provider.dart
rename to mobile/lib/providers/user.provider.dart
index 50f0194791..eb2824ec3f 100644
--- a/mobile/lib/shared/providers/user.provider.dart
+++ b/mobile/lib/providers/user.provider.dart
@@ -3,9 +3,9 @@ import 'dart:async';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
 import 'package:immich_mobile/entities/user.entity.dart';
-import 'package:immich_mobile/shared/providers/api.provider.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
-import 'package:immich_mobile/shared/services/api.service.dart';
+import 'package:immich_mobile/providers/api.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
+import 'package:immich_mobile/services/api.service.dart';
 import 'package:isar/isar.dart';
 
 class CurrentUserProvider extends StateNotifier<User?> {
diff --git a/mobile/lib/shared/providers/websocket.provider.dart b/mobile/lib/providers/websocket.provider.dart
similarity index 96%
rename from mobile/lib/shared/providers/websocket.provider.dart
rename to mobile/lib/providers/websocket.provider.dart
index f3db430cd4..4f722ec48b 100644
--- a/mobile/lib/shared/providers/websocket.provider.dart
+++ b/mobile/lib/providers/websocket.provider.dart
@@ -4,14 +4,14 @@ import 'package:collection/collection.dart';
 import 'package:flutter/foundation.dart';
 import 'package:flutter/widgets.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/login/providers/authentication.provider.dart';
+import 'package:immich_mobile/providers/authentication.provider.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
 import 'package:immich_mobile/models/server_info/server_version.model.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
-import 'package:immich_mobile/shared/providers/asset.provider.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
-import 'package:immich_mobile/shared/providers/server_info.provider.dart';
-import 'package:immich_mobile/shared/services/sync.service.dart';
+import 'package:immich_mobile/providers/asset.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
+import 'package:immich_mobile/providers/server_info.provider.dart';
+import 'package:immich_mobile/services/sync.service.dart';
 import 'package:immich_mobile/utils/debounce.dart';
 import 'package:logging/logging.dart';
 import 'package:openapi/api.dart';
diff --git a/mobile/lib/routing/auth_guard.dart b/mobile/lib/routing/auth_guard.dart
index b76fb63123..c99a890fc8 100644
--- a/mobile/lib/routing/auth_guard.dart
+++ b/mobile/lib/routing/auth_guard.dart
@@ -3,7 +3,7 @@ import 'dart:io';
 import 'package:auto_route/auto_route.dart';
 import 'package:immich_mobile/routing/router.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
-import 'package:immich_mobile/shared/services/api.service.dart';
+import 'package:immich_mobile/services/api.service.dart';
 import 'package:logging/logging.dart';
 import 'package:openapi/api.dart';
 
diff --git a/mobile/lib/routing/backup_permission_guard.dart b/mobile/lib/routing/backup_permission_guard.dart
index 81d40513b3..57a0c7a927 100644
--- a/mobile/lib/routing/backup_permission_guard.dart
+++ b/mobile/lib/routing/backup_permission_guard.dart
@@ -1,5 +1,5 @@
 import 'package:auto_route/auto_route.dart';
-import 'package:immich_mobile/modules/onboarding/providers/gallery_permission.provider.dart';
+import 'package:immich_mobile/providers/gallery_permission.provider.dart';
 import 'package:immich_mobile/routing/router.dart';
 
 class BackupPermissionGuard extends AutoRouteGuard {
diff --git a/mobile/lib/routing/router.dart b/mobile/lib/routing/router.dart
index 4122d94fde..fcf4dcbebf 100644
--- a/mobile/lib/routing/router.dart
+++ b/mobile/lib/routing/router.dart
@@ -29,7 +29,7 @@ import 'package:immich_mobile/modules/favorite/views/favorites_page.dart';
 import 'package:immich_mobile/modules/home/views/home_page.dart';
 import 'package:immich_mobile/modules/login/views/change_password_page.dart';
 import 'package:immich_mobile/modules/login/views/login_page.dart';
-import 'package:immich_mobile/modules/onboarding/providers/gallery_permission.provider.dart';
+import 'package:immich_mobile/providers/gallery_permission.provider.dart';
 import 'package:immich_mobile/modules/onboarding/views/permission_onboarding_page.dart';
 import 'package:immich_mobile/models/search/search_filter.model.dart';
 import 'package:immich_mobile/modules/settings/views/settings_sub_page.dart';
@@ -54,8 +54,8 @@ import 'package:immich_mobile/entities/asset.entity.dart';
 import 'package:immich_mobile/entities/album.entity.dart';
 import 'package:immich_mobile/entities/logger_message.entity.dart';
 import 'package:immich_mobile/entities/user.entity.dart';
-import 'package:immich_mobile/shared/providers/api.provider.dart';
-import 'package:immich_mobile/shared/services/api.service.dart';
+import 'package:immich_mobile/providers/api.provider.dart';
+import 'package:immich_mobile/services/api.service.dart';
 import 'package:immich_mobile/shared/views/app_log_detail_page.dart';
 import 'package:immich_mobile/shared/views/app_log_page.dart';
 import 'package:immich_mobile/shared/views/splash_screen.dart';
diff --git a/mobile/lib/routing/tab_navigation_observer.dart b/mobile/lib/routing/tab_navigation_observer.dart
index 6dc4067a2c..d60cdb683f 100644
--- a/mobile/lib/routing/tab_navigation_observer.dart
+++ b/mobile/lib/routing/tab_navigation_observer.dart
@@ -1,17 +1,17 @@
 import 'package:auto_route/auto_route.dart';
 import 'package:flutter/foundation.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/album/providers/album.provider.dart';
-import 'package:immich_mobile/modules/memories/providers/memory.provider.dart';
-import 'package:immich_mobile/modules/search/providers/people.provider.dart';
+import 'package:immich_mobile/providers/album/album.provider.dart';
+import 'package:immich_mobile/providers/memory.provider.dart';
+import 'package:immich_mobile/providers/search/people.provider.dart';
 
-import 'package:immich_mobile/modules/search/providers/search_page_state.provider.dart';
-import 'package:immich_mobile/modules/album/providers/shared_album.provider.dart';
+import 'package:immich_mobile/providers/search/search_page_state.provider.dart';
+import 'package:immich_mobile/providers/album/shared_album.provider.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
 import 'package:immich_mobile/entities/user.entity.dart';
-import 'package:immich_mobile/shared/providers/api.provider.dart';
-import 'package:immich_mobile/shared/providers/asset.provider.dart';
-import 'package:immich_mobile/shared/providers/server_info.provider.dart';
+import 'package:immich_mobile/providers/api.provider.dart';
+import 'package:immich_mobile/providers/asset.provider.dart';
+import 'package:immich_mobile/providers/server_info.provider.dart';
 
 class TabNavigationObserver extends AutoRouterObserver {
   /// Riverpod Instance
diff --git a/mobile/lib/modules/activities/services/activity.service.dart b/mobile/lib/services/activity.service.dart
similarity index 97%
rename from mobile/lib/modules/activities/services/activity.service.dart
rename to mobile/lib/services/activity.service.dart
index 620aed7f7f..b8e5dc23c6 100644
--- a/mobile/lib/modules/activities/services/activity.service.dart
+++ b/mobile/lib/services/activity.service.dart
@@ -1,7 +1,7 @@
 import 'package:immich_mobile/constants/errors.dart';
 import 'package:immich_mobile/mixins/error_logger.mixin.dart';
 import 'package:immich_mobile/models/activities/activity.model.dart';
-import 'package:immich_mobile/shared/services/api.service.dart';
+import 'package:immich_mobile/services/api.service.dart';
 import 'package:logging/logging.dart';
 import 'package:openapi/api.dart';
 
diff --git a/mobile/lib/modules/album/services/album.service.dart b/mobile/lib/services/album.service.dart
similarity index 97%
rename from mobile/lib/modules/album/services/album.service.dart
rename to mobile/lib/services/album.service.dart
index 0bbadad6bb..45c6076fbd 100644
--- a/mobile/lib/modules/album/services/album.service.dart
+++ b/mobile/lib/services/album.service.dart
@@ -7,16 +7,16 @@ import 'package:flutter/foundation.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/models/albums/album_add_asset_response.model.dart';
 import 'package:immich_mobile/entities/backup_album.entity.dart';
-import 'package:immich_mobile/modules/backup/services/backup.service.dart';
+import 'package:immich_mobile/services/backup.service.dart';
 import 'package:immich_mobile/entities/album.entity.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
 import 'package:immich_mobile/entities/user.entity.dart';
-import 'package:immich_mobile/shared/providers/api.provider.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
-import 'package:immich_mobile/shared/services/api.service.dart';
-import 'package:immich_mobile/shared/services/sync.service.dart';
-import 'package:immich_mobile/shared/services/user.service.dart';
+import 'package:immich_mobile/providers/api.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
+import 'package:immich_mobile/services/api.service.dart';
+import 'package:immich_mobile/services/sync.service.dart';
+import 'package:immich_mobile/services/user.service.dart';
 import 'package:isar/isar.dart';
 import 'package:logging/logging.dart';
 import 'package:openapi/api.dart';
diff --git a/mobile/lib/shared/services/api.service.dart b/mobile/lib/services/api.service.dart
similarity index 100%
rename from mobile/lib/shared/services/api.service.dart
rename to mobile/lib/services/api.service.dart
diff --git a/mobile/lib/modules/settings/services/app_settings.service.dart b/mobile/lib/services/app_settings.service.dart
similarity index 100%
rename from mobile/lib/modules/settings/services/app_settings.service.dart
rename to mobile/lib/services/app_settings.service.dart
diff --git a/mobile/lib/shared/services/asset.service.dart b/mobile/lib/services/asset.service.dart
similarity index 96%
rename from mobile/lib/shared/services/asset.service.dart
rename to mobile/lib/services/asset.service.dart
index 3344e8898f..5610dc435d 100644
--- a/mobile/lib/shared/services/asset.service.dart
+++ b/mobile/lib/services/asset.service.dart
@@ -8,10 +8,10 @@ import 'package:immich_mobile/entities/asset.entity.dart';
 import 'package:immich_mobile/entities/exif_info.entity.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
 import 'package:immich_mobile/entities/user.entity.dart';
-import 'package:immich_mobile/shared/providers/api.provider.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
-import 'package:immich_mobile/shared/services/api.service.dart';
-import 'package:immich_mobile/shared/services/sync.service.dart';
+import 'package:immich_mobile/providers/api.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
+import 'package:immich_mobile/services/api.service.dart';
+import 'package:immich_mobile/services/sync.service.dart';
 import 'package:isar/isar.dart';
 import 'package:logging/logging.dart';
 import 'package:maplibre_gl/maplibre_gl.dart';
diff --git a/mobile/lib/modules/asset_viewer/services/asset_description.service.dart b/mobile/lib/services/asset_description.service.dart
similarity index 88%
rename from mobile/lib/modules/asset_viewer/services/asset_description.service.dart
rename to mobile/lib/services/asset_description.service.dart
index e7d6d2d9ab..5c2568fb3b 100644
--- a/mobile/lib/modules/asset_viewer/services/asset_description.service.dart
+++ b/mobile/lib/services/asset_description.service.dart
@@ -1,8 +1,8 @@
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/entities/exif_info.entity.dart';
-import 'package:immich_mobile/shared/providers/api.provider.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
-import 'package:immich_mobile/shared/services/api.service.dart';
+import 'package:immich_mobile/providers/api.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
+import 'package:immich_mobile/services/api.service.dart';
 import 'package:isar/isar.dart';
 import 'package:openapi/api.dart';
 
diff --git a/mobile/lib/modules/asset_viewer/services/asset_stack.service.dart b/mobile/lib/services/asset_stack.service.dart
similarity index 93%
rename from mobile/lib/modules/asset_viewer/services/asset_stack.service.dart
rename to mobile/lib/services/asset_stack.service.dart
index eb13002f96..43a902e13b 100644
--- a/mobile/lib/modules/asset_viewer/services/asset_stack.service.dart
+++ b/mobile/lib/services/asset_stack.service.dart
@@ -1,8 +1,8 @@
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/api.provider.dart';
-import 'package:immich_mobile/shared/services/api.service.dart';
+import 'package:immich_mobile/providers/api.provider.dart';
+import 'package:immich_mobile/services/api.service.dart';
 import 'package:openapi/api.dart';
 
 class AssetStackService {
diff --git a/mobile/lib/modules/backup/background_service/background.service.dart b/mobile/lib/services/background.service.dart
similarity index 98%
rename from mobile/lib/modules/backup/background_service/background.service.dart
rename to mobile/lib/services/background.service.dart
index 4ebc3c32ff..99c56f8bc5 100644
--- a/mobile/lib/modules/backup/background_service/background.service.dart
+++ b/mobile/lib/services/background.service.dart
@@ -10,14 +10,14 @@ import 'package:flutter/services.dart';
 import 'package:flutter/widgets.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/main.dart';
-import 'package:immich_mobile/modules/backup/background_service/localization.dart';
+import 'package:immich_mobile/services/localization.service.dart';
 import 'package:immich_mobile/entities/backup_album.entity.dart';
 import 'package:immich_mobile/models/backup/current_upload_asset.model.dart';
 import 'package:immich_mobile/models/backup/error_upload_asset.model.dart';
-import 'package:immich_mobile/modules/backup/services/backup.service.dart';
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
+import 'package:immich_mobile/services/backup.service.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
-import 'package:immich_mobile/shared/services/api.service.dart';
+import 'package:immich_mobile/services/api.service.dart';
 import 'package:immich_mobile/utils/backup_progress.dart';
 import 'package:immich_mobile/utils/diff.dart';
 import 'package:immich_mobile/utils/url_helper.dart';
diff --git a/mobile/lib/modules/backup/services/backup.service.dart b/mobile/lib/services/backup.service.dart
similarity index 97%
rename from mobile/lib/modules/backup/services/backup.service.dart
rename to mobile/lib/services/backup.service.dart
index fa0f49947c..8f958fff8c 100644
--- a/mobile/lib/modules/backup/services/backup.service.dart
+++ b/mobile/lib/services/backup.service.dart
@@ -9,12 +9,12 @@ import 'package:immich_mobile/entities/backup_album.entity.dart';
 import 'package:immich_mobile/models/backup/current_upload_asset.model.dart';
 import 'package:immich_mobile/entities/duplicated_asset.entity.dart';
 import 'package:immich_mobile/models/backup/error_upload_asset.model.dart';
-import 'package:immich_mobile/modules/settings/providers/app_settings.provider.dart';
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
+import 'package:immich_mobile/providers/app_settings.provider.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
-import 'package:immich_mobile/shared/providers/api.provider.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
-import 'package:immich_mobile/shared/services/api.service.dart';
+import 'package:immich_mobile/providers/api.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
+import 'package:immich_mobile/services/api.service.dart';
 import 'package:isar/isar.dart';
 import 'package:logging/logging.dart';
 import 'package:openapi/api.dart';
diff --git a/mobile/lib/modules/backup/services/backup_verification.service.dart b/mobile/lib/services/backup_verification.service.dart
similarity index 98%
rename from mobile/lib/modules/backup/services/backup_verification.service.dart
rename to mobile/lib/services/backup_verification.service.dart
index 5eed9be11c..6a371d3a31 100644
--- a/mobile/lib/modules/backup/services/backup_verification.service.dart
+++ b/mobile/lib/services/backup_verification.service.dart
@@ -8,8 +8,8 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
 import 'package:immich_mobile/entities/exif_info.entity.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
-import 'package:immich_mobile/shared/services/api.service.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
+import 'package:immich_mobile/services/api.service.dart';
 import 'package:immich_mobile/utils/diff.dart';
 import 'package:isar/isar.dart';
 import 'package:photo_manager/photo_manager.dart' show PhotoManager;
diff --git a/mobile/lib/shared/services/hash.service.dart b/mobile/lib/services/hash.service.dart
similarity index 97%
rename from mobile/lib/shared/services/hash.service.dart
rename to mobile/lib/services/hash.service.dart
index fcb970b83f..ffc81a3445 100644
--- a/mobile/lib/shared/services/hash.service.dart
+++ b/mobile/lib/services/hash.service.dart
@@ -2,12 +2,12 @@ import 'dart:io';
 
 import 'package:flutter/foundation.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/backup/background_service/background.service.dart';
+import 'package:immich_mobile/services/background.service.dart';
 import 'package:immich_mobile/entities/android_device_asset.entity.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
 import 'package:immich_mobile/entities/device_asset.entity.dart';
 import 'package:immich_mobile/entities/ios_device_asset.entity.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
 import 'package:immich_mobile/extensions/string_extensions.dart';
 import 'package:isar/isar.dart';
 import 'package:logging/logging.dart';
diff --git a/mobile/lib/modules/asset_viewer/services/image_viewer.service.dart b/mobile/lib/services/image_viewer.service.dart
similarity index 96%
rename from mobile/lib/modules/asset_viewer/services/image_viewer.service.dart
rename to mobile/lib/services/image_viewer.service.dart
index afeb045ac4..65b117ed1f 100644
--- a/mobile/lib/modules/asset_viewer/services/image_viewer.service.dart
+++ b/mobile/lib/services/image_viewer.service.dart
@@ -3,8 +3,8 @@ import 'dart:io';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/response_extensions.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/api.provider.dart';
-import 'package:immich_mobile/shared/services/api.service.dart';
+import 'package:immich_mobile/providers/api.provider.dart';
+import 'package:immich_mobile/services/api.service.dart';
 import 'package:logging/logging.dart';
 
 import 'package:photo_manager/photo_manager.dart';
diff --git a/mobile/lib/shared/services/immich_logger.service.dart b/mobile/lib/services/immich_logger.service.dart
similarity index 100%
rename from mobile/lib/shared/services/immich_logger.service.dart
rename to mobile/lib/services/immich_logger.service.dart
diff --git a/mobile/lib/shared/services/local_notification.service.dart b/mobile/lib/services/local_notification.service.dart
similarity index 96%
rename from mobile/lib/shared/services/local_notification.service.dart
rename to mobile/lib/services/local_notification.service.dart
index ed0065528e..2463777331 100644
--- a/mobile/lib/shared/services/local_notification.service.dart
+++ b/mobile/lib/services/local_notification.service.dart
@@ -1,8 +1,8 @@
 import 'package:flutter/foundation.dart';
 import 'package:flutter_local_notifications/flutter_local_notifications.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/backup/providers/manual_upload.provider.dart';
-import 'package:immich_mobile/modules/settings/providers/notification_permission.provider.dart';
+import 'package:immich_mobile/providers/backup/manual_upload.provider.dart';
+import 'package:immich_mobile/providers/notification_permission.provider.dart';
 import 'package:permission_handler/permission_handler.dart';
 
 final localNotificationService = Provider(
diff --git a/mobile/lib/modules/backup/background_service/localization.dart b/mobile/lib/services/localization.service.dart
similarity index 100%
rename from mobile/lib/modules/backup/background_service/localization.dart
rename to mobile/lib/services/localization.service.dart
diff --git a/mobile/lib/modules/map/services/map.service.dart b/mobile/lib/services/map.service.dart
similarity index 93%
rename from mobile/lib/modules/map/services/map.service.dart
rename to mobile/lib/services/map.service.dart
index df650c6e2d..9ab461d63a 100644
--- a/mobile/lib/modules/map/services/map.service.dart
+++ b/mobile/lib/services/map.service.dart
@@ -1,6 +1,6 @@
 import 'package:immich_mobile/mixins/error_logger.mixin.dart';
 import 'package:immich_mobile/models/map/map_marker.model.dart';
-import 'package:immich_mobile/shared/services/api.service.dart';
+import 'package:immich_mobile/services/api.service.dart';
 import 'package:logging/logging.dart';
 
 class MapSerivce with ErrorLoggerMixin {
diff --git a/mobile/lib/modules/memories/services/memory.service.dart b/mobile/lib/services/memory.service.dart
similarity index 86%
rename from mobile/lib/modules/memories/services/memory.service.dart
rename to mobile/lib/services/memory.service.dart
index a3960e6af1..0a1ceecf16 100644
--- a/mobile/lib/modules/memories/services/memory.service.dart
+++ b/mobile/lib/services/memory.service.dart
@@ -1,9 +1,9 @@
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
 import 'package:immich_mobile/models/memories/memory.model.dart';
-import 'package:immich_mobile/shared/providers/api.provider.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
-import 'package:immich_mobile/shared/services/api.service.dart';
+import 'package:immich_mobile/providers/api.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
+import 'package:immich_mobile/services/api.service.dart';
 import 'package:isar/isar.dart';
 import 'package:logging/logging.dart';
 import 'package:openapi/api.dart';
diff --git a/mobile/lib/modules/login/services/oauth.service.dart b/mobile/lib/services/oauth.service.dart
similarity index 94%
rename from mobile/lib/modules/login/services/oauth.service.dart
rename to mobile/lib/services/oauth.service.dart
index 952c6fa8d6..807c88db8d 100644
--- a/mobile/lib/modules/login/services/oauth.service.dart
+++ b/mobile/lib/services/oauth.service.dart
@@ -1,4 +1,4 @@
-import 'package:immich_mobile/shared/services/api.service.dart';
+import 'package:immich_mobile/services/api.service.dart';
 import 'package:logging/logging.dart';
 import 'package:openapi/api.dart';
 import 'package:flutter_web_auth/flutter_web_auth.dart';
diff --git a/mobile/lib/modules/partner/services/partner.service.dart b/mobile/lib/services/partner.service.dart
similarity index 92%
rename from mobile/lib/modules/partner/services/partner.service.dart
rename to mobile/lib/services/partner.service.dart
index 7571e1d27f..b66fdd72ed 100644
--- a/mobile/lib/modules/partner/services/partner.service.dart
+++ b/mobile/lib/services/partner.service.dart
@@ -1,8 +1,8 @@
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/entities/user.entity.dart';
-import 'package:immich_mobile/shared/providers/api.provider.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
-import 'package:immich_mobile/shared/services/api.service.dart';
+import 'package:immich_mobile/providers/api.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
+import 'package:immich_mobile/services/api.service.dart';
 import 'package:isar/isar.dart';
 import 'package:logging/logging.dart';
 import 'package:openapi/api.dart';
diff --git a/mobile/lib/modules/search/services/person.service.dart b/mobile/lib/services/person.service.dart
similarity index 88%
rename from mobile/lib/modules/search/services/person.service.dart
rename to mobile/lib/services/person.service.dart
index 2506e548c6..ce3df867cd 100644
--- a/mobile/lib/modules/search/services/person.service.dart
+++ b/mobile/lib/services/person.service.dart
@@ -1,7 +1,7 @@
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/api.provider.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
-import 'package:immich_mobile/shared/services/api.service.dart';
+import 'package:immich_mobile/providers/api.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
+import 'package:immich_mobile/services/api.service.dart';
 import 'package:isar/isar.dart';
 import 'package:logging/logging.dart';
 import 'package:openapi/api.dart';
diff --git a/mobile/lib/modules/search/services/person.service.g.dart b/mobile/lib/services/person.service.g.dart
similarity index 100%
rename from mobile/lib/modules/search/services/person.service.g.dart
rename to mobile/lib/services/person.service.g.dart
diff --git a/mobile/lib/modules/search/services/search.service.dart b/mobile/lib/services/search.service.dart
similarity index 95%
rename from mobile/lib/modules/search/services/search.service.dart
rename to mobile/lib/services/search.service.dart
index ada06e2d1e..cf3905e5ca 100644
--- a/mobile/lib/modules/search/services/search.service.dart
+++ b/mobile/lib/services/search.service.dart
@@ -2,9 +2,9 @@ import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/models/search/search_filter.model.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/api.provider.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
-import 'package:immich_mobile/shared/services/api.service.dart';
+import 'package:immich_mobile/providers/api.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
+import 'package:immich_mobile/services/api.service.dart';
 import 'package:isar/isar.dart';
 import 'package:logging/logging.dart';
 import 'package:openapi/api.dart';
diff --git a/mobile/lib/shared/services/server_info.service.dart b/mobile/lib/services/server_info.service.dart
similarity index 93%
rename from mobile/lib/shared/services/server_info.service.dart
rename to mobile/lib/services/server_info.service.dart
index 19ec7caa0b..a2ce77c820 100644
--- a/mobile/lib/shared/services/server_info.service.dart
+++ b/mobile/lib/services/server_info.service.dart
@@ -4,8 +4,8 @@ import 'package:immich_mobile/models/server_info/server_config.model.dart';
 import 'package:immich_mobile/models/server_info/server_disk_info.model.dart';
 import 'package:immich_mobile/models/server_info/server_features.model.dart';
 import 'package:immich_mobile/models/server_info/server_version.model.dart';
-import 'package:immich_mobile/shared/providers/api.provider.dart';
-import 'package:immich_mobile/shared/services/api.service.dart';
+import 'package:immich_mobile/providers/api.provider.dart';
+import 'package:immich_mobile/services/api.service.dart';
 
 final serverInfoServiceProvider = Provider(
   (ref) => ServerInfoService(
diff --git a/mobile/lib/shared/services/share.service.dart b/mobile/lib/services/share.service.dart
similarity index 97%
rename from mobile/lib/shared/services/share.service.dart
rename to mobile/lib/services/share.service.dart
index 71aba7e5e0..e677b499d3 100644
--- a/mobile/lib/shared/services/share.service.dart
+++ b/mobile/lib/services/share.service.dart
@@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/response_extensions.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/api.provider.dart';
+import 'package:immich_mobile/providers/api.provider.dart';
 import 'package:logging/logging.dart';
 import 'package:path_provider/path_provider.dart';
 import 'package:share_plus/share_plus.dart';
diff --git a/mobile/lib/modules/shared_link/services/shared_link.service.dart b/mobile/lib/services/shared_link.service.dart
similarity index 96%
rename from mobile/lib/modules/shared_link/services/shared_link.service.dart
rename to mobile/lib/services/shared_link.service.dart
index ef97ddde43..2a8e633aa9 100644
--- a/mobile/lib/modules/shared_link/services/shared_link.service.dart
+++ b/mobile/lib/services/shared_link.service.dart
@@ -1,7 +1,7 @@
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/models/shared_link/shared_link.model.dart';
-import 'package:immich_mobile/shared/providers/api.provider.dart';
-import 'package:immich_mobile/shared/services/api.service.dart';
+import 'package:immich_mobile/providers/api.provider.dart';
+import 'package:immich_mobile/services/api.service.dart';
 import 'package:logging/logging.dart';
 import 'package:openapi/api.dart';
 
diff --git a/mobile/lib/shared/services/sync.service.dart b/mobile/lib/services/sync.service.dart
similarity index 99%
rename from mobile/lib/shared/services/sync.service.dart
rename to mobile/lib/services/sync.service.dart
index 15b1b864b1..ba4336c59d 100644
--- a/mobile/lib/shared/services/sync.service.dart
+++ b/mobile/lib/services/sync.service.dart
@@ -8,8 +8,8 @@ import 'package:immich_mobile/entities/etag.entity.dart';
 import 'package:immich_mobile/entities/exif_info.entity.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
 import 'package:immich_mobile/entities/user.entity.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
-import 'package:immich_mobile/shared/services/hash.service.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
+import 'package:immich_mobile/services/hash.service.dart';
 import 'package:immich_mobile/utils/async_mutex.dart';
 import 'package:immich_mobile/extensions/collection_extensions.dart';
 import 'package:immich_mobile/utils/datetime_comparison.dart';
diff --git a/mobile/lib/modules/trash/services/trash.service.dart b/mobile/lib/services/trash.service.dart
similarity index 92%
rename from mobile/lib/modules/trash/services/trash.service.dart
rename to mobile/lib/services/trash.service.dart
index 2bcfd38051..9342b1f1e4 100644
--- a/mobile/lib/modules/trash/services/trash.service.dart
+++ b/mobile/lib/services/trash.service.dart
@@ -1,7 +1,7 @@
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/api.provider.dart';
-import 'package:immich_mobile/shared/services/api.service.dart';
+import 'package:immich_mobile/providers/api.provider.dart';
+import 'package:immich_mobile/services/api.service.dart';
 import 'package:logging/logging.dart';
 import 'package:openapi/api.dart';
 
diff --git a/mobile/lib/shared/services/user.service.dart b/mobile/lib/services/user.service.dart
similarity index 89%
rename from mobile/lib/shared/services/user.service.dart
rename to mobile/lib/services/user.service.dart
index c1706a485b..b6e5521def 100644
--- a/mobile/lib/shared/services/user.service.dart
+++ b/mobile/lib/services/user.service.dart
@@ -2,13 +2,13 @@ import 'package:collection/collection.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:http/http.dart';
 import 'package:image_picker/image_picker.dart';
-import 'package:immich_mobile/modules/partner/services/partner.service.dart';
+import 'package:immich_mobile/services/partner.service.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
 import 'package:immich_mobile/entities/user.entity.dart';
-import 'package:immich_mobile/shared/providers/api.provider.dart';
-import 'package:immich_mobile/shared/providers/db.provider.dart';
-import 'package:immich_mobile/shared/services/api.service.dart';
-import 'package:immich_mobile/shared/services/sync.service.dart';
+import 'package:immich_mobile/providers/api.provider.dart';
+import 'package:immich_mobile/providers/db.provider.dart';
+import 'package:immich_mobile/services/api.service.dart';
+import 'package:immich_mobile/services/sync.service.dart';
 import 'package:immich_mobile/utils/diff.dart';
 import 'package:isar/isar.dart';
 import 'package:logging/logging.dart';
diff --git a/mobile/lib/shared/cache/custom_image_cache.dart b/mobile/lib/shared/cache/custom_image_cache.dart
index 07e686e1cf..a2a7839172 100644
--- a/mobile/lib/shared/cache/custom_image_cache.dart
+++ b/mobile/lib/shared/cache/custom_image_cache.dart
@@ -1,8 +1,8 @@
 import 'package:flutter/painting.dart';
-import 'package:immich_mobile/modules/asset_viewer/image_providers/immich_local_image_provider.dart';
-import 'package:immich_mobile/modules/asset_viewer/image_providers/immich_local_thumbnail_provider.dart';
-import 'package:immich_mobile/modules/asset_viewer/image_providers/immich_remote_image_provider.dart';
-import 'package:immich_mobile/modules/asset_viewer/image_providers/immich_remote_thumbnail_provider.dart';
+import 'package:immich_mobile/providers/image/immich_local_image_provider.dart';
+import 'package:immich_mobile/providers/image/immich_local_thumbnail_provider.dart';
+import 'package:immich_mobile/providers/image/immich_remote_image_provider.dart';
+import 'package:immich_mobile/providers/image/immich_remote_thumbnail_provider.dart';
 
 /// [ImageCache] that uses two caches for small and large images
 /// so that a single large image does not evict all small iamges
diff --git a/mobile/lib/shared/providers/admin_provider.dart b/mobile/lib/shared/providers/admin_provider.dart
deleted file mode 100644
index baf49025c8..0000000000
--- a/mobile/lib/shared/providers/admin_provider.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/shared/providers/user.provider.dart';
-
-final isAdminProvider = Provider<bool>((ref) {
-  final currentUser = ref.watch(currentUserProvider);
-  return currentUser?.isAdmin ?? false; // Default to non-admin if no user
-});
diff --git a/mobile/lib/shared/ui/app_bar_dialog/app_bar_dialog.dart b/mobile/lib/shared/ui/app_bar_dialog/app_bar_dialog.dart
index 9420b7b3b6..a8d121d76f 100644
--- a/mobile/lib/shared/ui/app_bar_dialog/app_bar_dialog.dart
+++ b/mobile/lib/shared/ui/app_bar_dialog/app_bar_dialog.dart
@@ -5,13 +5,13 @@ import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/models/backup/backup_state.model.dart';
-import 'package:immich_mobile/modules/backup/providers/backup.provider.dart';
-import 'package:immich_mobile/modules/backup/providers/manual_upload.provider.dart';
-import 'package:immich_mobile/modules/login/providers/authentication.provider.dart';
+import 'package:immich_mobile/providers/backup/backup.provider.dart';
+import 'package:immich_mobile/providers/backup/manual_upload.provider.dart';
+import 'package:immich_mobile/providers/authentication.provider.dart';
 import 'package:immich_mobile/routing/router.dart';
-import 'package:immich_mobile/shared/providers/asset.provider.dart';
-import 'package:immich_mobile/shared/providers/user.provider.dart';
-import 'package:immich_mobile/shared/providers/websocket.provider.dart';
+import 'package:immich_mobile/providers/asset.provider.dart';
+import 'package:immich_mobile/providers/user.provider.dart';
+import 'package:immich_mobile/providers/websocket.provider.dart';
 import 'package:immich_mobile/shared/ui/app_bar_dialog/app_bar_profile_info.dart';
 import 'package:immich_mobile/shared/ui/app_bar_dialog/app_bar_server_info.dart';
 import 'package:immich_mobile/shared/ui/confirm_dialog.dart';
diff --git a/mobile/lib/shared/ui/app_bar_dialog/app_bar_profile_info.dart b/mobile/lib/shared/ui/app_bar_dialog/app_bar_profile_info.dart
index 54f10ac2ca..6d390f8fc0 100644
--- a/mobile/lib/shared/ui/app_bar_dialog/app_bar_profile_info.dart
+++ b/mobile/lib/shared/ui/app_bar_dialog/app_bar_profile_info.dart
@@ -2,12 +2,12 @@ import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:image_picker/image_picker.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/home/providers/upload_profile_image.provider.dart';
+import 'package:immich_mobile/providers/upload_profile_image.provider.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
-import 'package:immich_mobile/shared/providers/user.provider.dart';
+import 'package:immich_mobile/providers/user.provider.dart';
 import 'package:immich_mobile/shared/ui/user_circle_avatar.dart';
 import 'package:immich_mobile/models/authentication/authentication_state.model.dart';
-import 'package:immich_mobile/modules/login/providers/authentication.provider.dart';
+import 'package:immich_mobile/providers/authentication.provider.dart';
 import 'package:immich_mobile/shared/ui/immich_loading_indicator.dart';
 
 class AppBarProfileInfoBox extends HookConsumerWidget {
diff --git a/mobile/lib/shared/ui/app_bar_dialog/app_bar_server_info.dart b/mobile/lib/shared/ui/app_bar_dialog/app_bar_server_info.dart
index 5860ef6234..0beb45c49f 100644
--- a/mobile/lib/shared/ui/app_bar_dialog/app_bar_server_info.dart
+++ b/mobile/lib/shared/ui/app_bar_dialog/app_bar_server_info.dart
@@ -4,7 +4,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/models/server_info/server_info.model.dart';
 import 'package:easy_localization/easy_localization.dart';
-import 'package:immich_mobile/shared/providers/server_info.provider.dart';
+import 'package:immich_mobile/providers/server_info.provider.dart';
 import 'package:immich_mobile/utils/url_helper.dart';
 import 'package:package_info_plus/package_info_plus.dart';
 
diff --git a/mobile/lib/shared/ui/asset_grid/multiselect_grid.dart b/mobile/lib/shared/ui/asset_grid/multiselect_grid.dart
index 68027049d4..77548042ff 100644
--- a/mobile/lib/shared/ui/asset_grid/multiselect_grid.dart
+++ b/mobile/lib/shared/ui/asset_grid/multiselect_grid.dart
@@ -8,21 +8,21 @@ import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:fluttertoast/fluttertoast.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/collection_extensions.dart';
-import 'package:immich_mobile/modules/album/providers/album.provider.dart';
-import 'package:immich_mobile/modules/album/providers/shared_album.provider.dart';
-import 'package:immich_mobile/modules/album/services/album.service.dart';
-import 'package:immich_mobile/modules/asset_viewer/services/asset_stack.service.dart';
-import 'package:immich_mobile/modules/backup/providers/manual_upload.provider.dart';
+import 'package:immich_mobile/providers/album/album.provider.dart';
+import 'package:immich_mobile/providers/album/shared_album.provider.dart';
+import 'package:immich_mobile/services/album.service.dart';
+import 'package:immich_mobile/services/asset_stack.service.dart';
+import 'package:immich_mobile/providers/backup/manual_upload.provider.dart';
 import 'package:immich_mobile/models/asset_selection_state.dart';
-import 'package:immich_mobile/modules/home/providers/multiselect.provider.dart';
+import 'package:immich_mobile/providers/multiselect.provider.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/asset_grid_data_structure.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/immich_asset_grid.dart';
 import 'package:immich_mobile/modules/home/ui/control_bottom_app_bar.dart';
 import 'package:immich_mobile/routing/router.dart';
 import 'package:immich_mobile/entities/album.entity.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/asset.provider.dart';
-import 'package:immich_mobile/shared/providers/user.provider.dart';
+import 'package:immich_mobile/providers/asset.provider.dart';
+import 'package:immich_mobile/providers/user.provider.dart';
 import 'package:immich_mobile/shared/ui/immich_loading_indicator.dart';
 import 'package:immich_mobile/shared/ui/immich_toast.dart';
 import 'package:immich_mobile/shared/views/immich_loading_overlay.dart';
diff --git a/mobile/lib/shared/ui/immich_app_bar.dart b/mobile/lib/shared/ui/immich_app_bar.dart
index ebb399ac1a..e3e5926f68 100644
--- a/mobile/lib/shared/ui/immich_app_bar.dart
+++ b/mobile/lib/shared/ui/immich_app_bar.dart
@@ -5,15 +5,15 @@ import 'package:flutter_svg/svg.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
-import 'package:immich_mobile/shared/providers/immich_logo_provider.dart';
+import 'package:immich_mobile/providers/immich_logo_provider.dart';
 import 'package:immich_mobile/shared/ui/app_bar_dialog/app_bar_dialog.dart';
 import 'package:immich_mobile/shared/ui/user_circle_avatar.dart';
 
 import 'package:immich_mobile/routing/router.dart';
 import 'package:immich_mobile/models/backup/backup_state.model.dart';
 import 'package:immich_mobile/models/server_info/server_info.model.dart';
-import 'package:immich_mobile/modules/backup/providers/backup.provider.dart';
-import 'package:immich_mobile/shared/providers/server_info.provider.dart';
+import 'package:immich_mobile/providers/backup/backup.provider.dart';
+import 'package:immich_mobile/providers/server_info.provider.dart';
 
 class ImmichAppBar extends ConsumerWidget implements PreferredSizeWidget {
   @override
diff --git a/mobile/lib/shared/ui/immich_image.dart b/mobile/lib/shared/ui/immich_image.dart
index 1fd888e65e..e4e21ea9b8 100644
--- a/mobile/lib/shared/ui/immich_image.dart
+++ b/mobile/lib/shared/ui/immich_image.dart
@@ -1,8 +1,8 @@
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/asset_viewer/image_providers/immich_local_image_provider.dart';
-import 'package:immich_mobile/modules/asset_viewer/image_providers/immich_remote_image_provider.dart';
+import 'package:immich_mobile/providers/image/immich_local_image_provider.dart';
+import 'package:immich_mobile/providers/image/immich_remote_image_provider.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/thumbnail_placeholder.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
diff --git a/mobile/lib/shared/ui/immich_thumbnail.dart b/mobile/lib/shared/ui/immich_thumbnail.dart
index 07c3141f64..d258d77bf2 100644
--- a/mobile/lib/shared/ui/immich_thumbnail.dart
+++ b/mobile/lib/shared/ui/immich_thumbnail.dart
@@ -2,8 +2,8 @@ import 'dart:typed_data';
 
 import 'package:flutter/material.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
-import 'package:immich_mobile/modules/asset_viewer/image_providers/immich_local_thumbnail_provider.dart';
-import 'package:immich_mobile/modules/asset_viewer/image_providers/immich_remote_thumbnail_provider.dart';
+import 'package:immich_mobile/providers/image/immich_local_thumbnail_provider.dart';
+import 'package:immich_mobile/providers/image/immich_remote_thumbnail_provider.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
 import 'package:immich_mobile/shared/ui/hooks/blurhash_hook.dart';
 import 'package:immich_mobile/shared/ui/immich_image.dart';
diff --git a/mobile/lib/shared/views/app_log_page.dart b/mobile/lib/shared/views/app_log_page.dart
index 9351dbfe8e..808933918c 100644
--- a/mobile/lib/shared/views/app_log_page.dart
+++ b/mobile/lib/shared/views/app_log_page.dart
@@ -5,7 +5,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/routing/router.dart';
 import 'package:immich_mobile/entities/logger_message.entity.dart';
-import 'package:immich_mobile/shared/services/immich_logger.service.dart';
+import 'package:immich_mobile/services/immich_logger.service.dart';
 import 'package:intl/intl.dart';
 
 @RoutePage()
diff --git a/mobile/lib/shared/views/splash_screen.dart b/mobile/lib/shared/views/splash_screen.dart
index e9708ecbf2..7ed601734b 100644
--- a/mobile/lib/shared/views/splash_screen.dart
+++ b/mobile/lib/shared/views/splash_screen.dart
@@ -2,12 +2,12 @@ import 'package:auto_route/auto_route.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_hooks/flutter_hooks.dart' hide Store;
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/backup/providers/backup.provider.dart';
-import 'package:immich_mobile/modules/login/providers/authentication.provider.dart';
-import 'package:immich_mobile/modules/onboarding/providers/gallery_permission.provider.dart';
+import 'package:immich_mobile/providers/backup/backup.provider.dart';
+import 'package:immich_mobile/providers/authentication.provider.dart';
+import 'package:immich_mobile/providers/gallery_permission.provider.dart';
 import 'package:immich_mobile/routing/router.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
-import 'package:immich_mobile/shared/providers/api.provider.dart';
+import 'package:immich_mobile/providers/api.provider.dart';
 import 'package:logging/logging.dart';
 import 'package:openapi/api.dart';
 
diff --git a/mobile/lib/shared/views/tab_controller_page.dart b/mobile/lib/shared/views/tab_controller_page.dart
index e1f6fde1ad..084e16d05b 100644
--- a/mobile/lib/shared/views/tab_controller_page.dart
+++ b/mobile/lib/shared/views/tab_controller_page.dart
@@ -3,12 +3,12 @@ import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/scroll_notifier.provider.dart';
-import 'package:immich_mobile/modules/home/providers/multiselect.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/scroll_notifier.provider.dart';
+import 'package:immich_mobile/providers/multiselect.provider.dart';
 import 'package:immich_mobile/routing/router.dart';
-import 'package:immich_mobile/shared/providers/asset.provider.dart';
-import 'package:immich_mobile/shared/providers/haptic_feedback.provider.dart';
-import 'package:immich_mobile/shared/providers/tab.provider.dart';
+import 'package:immich_mobile/providers/asset.provider.dart';
+import 'package:immich_mobile/providers/haptic_feedback.provider.dart';
+import 'package:immich_mobile/providers/tab.provider.dart';
 
 @RoutePage()
 class TabControllerPage extends HookConsumerWidget {
diff --git a/mobile/lib/utils/http_ssl_cert_override.dart b/mobile/lib/utils/http_ssl_cert_override.dart
index 182c85922a..25d22b6812 100644
--- a/mobile/lib/utils/http_ssl_cert_override.dart
+++ b/mobile/lib/utils/http_ssl_cert_override.dart
@@ -1,5 +1,5 @@
 import 'dart:io';
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
 import 'package:logging/logging.dart';
 
diff --git a/mobile/lib/utils/immich_app_theme.dart b/mobile/lib/utils/immich_app_theme.dart
index 07fac00e4a..3d550ca17a 100644
--- a/mobile/lib/utils/immich_app_theme.dart
+++ b/mobile/lib/utils/immich_app_theme.dart
@@ -1,8 +1,8 @@
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/constants/immich_colors.dart';
-import 'package:immich_mobile/modules/settings/providers/app_settings.provider.dart';
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
+import 'package:immich_mobile/providers/app_settings.provider.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
 
 final immichThemeProvider = StateProvider<ThemeMode>((ref) {
   var themeMode = ref
diff --git a/mobile/lib/utils/renderlist_generator.dart b/mobile/lib/utils/renderlist_generator.dart
index 39da2aea94..9605d00af3 100644
--- a/mobile/lib/utils/renderlist_generator.dart
+++ b/mobile/lib/utils/renderlist_generator.dart
@@ -1,7 +1,7 @@
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/modules/home/ui/asset_grid/asset_grid_data_structure.dart';
-import 'package:immich_mobile/modules/settings/providers/app_settings.provider.dart';
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
+import 'package:immich_mobile/providers/app_settings.provider.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
 import 'package:isar/isar.dart';
 
diff --git a/mobile/lib/utils/selection_handlers.dart b/mobile/lib/utils/selection_handlers.dart
index 765d7a44f8..83ad4853b1 100644
--- a/mobile/lib/utils/selection_handlers.dart
+++ b/mobile/lib/utils/selection_handlers.dart
@@ -5,9 +5,9 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/extensions/asset_extensions.dart';
 import 'package:immich_mobile/extensions/build_context_extensions.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
-import 'package:immich_mobile/shared/providers/asset.provider.dart';
-import 'package:immich_mobile/shared/services/asset.service.dart';
-import 'package:immich_mobile/shared/services/share.service.dart';
+import 'package:immich_mobile/providers/asset.provider.dart';
+import 'package:immich_mobile/services/asset.service.dart';
+import 'package:immich_mobile/services/share.service.dart';
 import 'package:immich_mobile/shared/ui/date_time_picker.dart';
 import 'package:immich_mobile/shared/ui/immich_toast.dart';
 import 'package:immich_mobile/shared/ui/location_picker.dart';
diff --git a/mobile/test/modules/activity/activities_page_test.dart b/mobile/test/modules/activity/activities_page_test.dart
index 9a5f755a7b..4071b2b607 100644
--- a/mobile/test/modules/activity/activities_page_test.dart
+++ b/mobile/test/modules/activity/activities_page_test.dart
@@ -4,17 +4,17 @@
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:immich_mobile/models/activities/activity.model.dart';
-import 'package:immich_mobile/modules/activities/providers/activity.provider.dart';
+import 'package:immich_mobile/providers/activity.provider.dart';
 import 'package:immich_mobile/modules/activities/views/activities_page.dart';
 import 'package:immich_mobile/modules/activities/widgets/activity_text_field.dart';
 import 'package:immich_mobile/modules/activities/widgets/dismissible_activity.dart';
-import 'package:immich_mobile/modules/album/providers/current_album.provider.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/current_asset.provider.dart';
+import 'package:immich_mobile/providers/album/current_album.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/current_asset.provider.dart';
 import 'package:immich_mobile/entities/album.entity.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
 import 'package:immich_mobile/entities/user.entity.dart';
-import 'package:immich_mobile/shared/providers/user.provider.dart';
+import 'package:immich_mobile/providers/user.provider.dart';
 import 'package:isar/isar.dart';
 import 'package:mocktail/mocktail.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
diff --git a/mobile/test/modules/activity/activity_mocks.dart b/mobile/test/modules/activity/activity_mocks.dart
index 83086021ae..22fbafdbf3 100644
--- a/mobile/test/modules/activity/activity_mocks.dart
+++ b/mobile/test/modules/activity/activity_mocks.dart
@@ -1,7 +1,7 @@
 import 'package:immich_mobile/models/activities/activity.model.dart';
-import 'package:immich_mobile/modules/activities/providers/activity.provider.dart';
-import 'package:immich_mobile/modules/activities/providers/activity_statistics.provider.dart';
-import 'package:immich_mobile/modules/activities/services/activity.service.dart';
+import 'package:immich_mobile/providers/activity.provider.dart';
+import 'package:immich_mobile/providers/activity_statistics.provider.dart';
+import 'package:immich_mobile/services/activity.service.dart';
 import 'package:mocktail/mocktail.dart';
 
 class ActivityServiceMock extends Mock implements ActivityService {}
diff --git a/mobile/test/modules/activity/activity_provider_test.dart b/mobile/test/modules/activity/activity_provider_test.dart
index 6e7a1daf4e..a3b3e2466e 100644
--- a/mobile/test/modules/activity/activity_provider_test.dart
+++ b/mobile/test/modules/activity/activity_provider_test.dart
@@ -1,9 +1,9 @@
 import 'package:flutter_test/flutter_test.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/models/activities/activity.model.dart';
-import 'package:immich_mobile/modules/activities/providers/activity.provider.dart';
-import 'package:immich_mobile/modules/activities/providers/activity_service.provider.dart';
-import 'package:immich_mobile/modules/activities/providers/activity_statistics.provider.dart';
+import 'package:immich_mobile/providers/activity.provider.dart';
+import 'package:immich_mobile/providers/activity_service.provider.dart';
+import 'package:immich_mobile/providers/activity_statistics.provider.dart';
 import 'package:mocktail/mocktail.dart';
 
 import '../../fixtures/user.stub.dart';
diff --git a/mobile/test/modules/activity/activity_statistics_provider_test.dart b/mobile/test/modules/activity/activity_statistics_provider_test.dart
index 5e85bf38cb..9edabcc0d0 100644
--- a/mobile/test/modules/activity/activity_statistics_provider_test.dart
+++ b/mobile/test/modules/activity/activity_statistics_provider_test.dart
@@ -1,7 +1,7 @@
 import 'package:flutter_test/flutter_test.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/activities/providers/activity_service.provider.dart';
-import 'package:immich_mobile/modules/activities/providers/activity_statistics.provider.dart';
+import 'package:immich_mobile/providers/activity_service.provider.dart';
+import 'package:immich_mobile/providers/activity_statistics.provider.dart';
 import 'package:mocktail/mocktail.dart';
 
 import '../../test_utils.dart';
diff --git a/mobile/test/modules/activity/activity_text_field_test.dart b/mobile/test/modules/activity/activity_text_field_test.dart
index 627d7b7a65..64f2170eef 100644
--- a/mobile/test/modules/activity/activity_text_field_test.dart
+++ b/mobile/test/modules/activity/activity_text_field_test.dart
@@ -3,11 +3,11 @@
 
 import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
-import 'package:immich_mobile/modules/activities/providers/activity.provider.dart';
+import 'package:immich_mobile/providers/activity.provider.dart';
 import 'package:immich_mobile/modules/activities/widgets/activity_text_field.dart';
-import 'package:immich_mobile/modules/album/providers/current_album.provider.dart';
+import 'package:immich_mobile/providers/album/current_album.provider.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
-import 'package:immich_mobile/shared/providers/user.provider.dart';
+import 'package:immich_mobile/providers/user.provider.dart';
 import 'package:immich_mobile/shared/ui/user_circle_avatar.dart';
 import 'package:isar/isar.dart';
 import 'package:mocktail/mocktail.dart';
diff --git a/mobile/test/modules/activity/activity_tile_test.dart b/mobile/test/modules/activity/activity_tile_test.dart
index 05f4637ab9..31c6a7a5de 100644
--- a/mobile/test/modules/activity/activity_tile_test.dart
+++ b/mobile/test/modules/activity/activity_tile_test.dart
@@ -6,7 +6,7 @@ import 'package:flutter_test/flutter_test.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/models/activities/activity.model.dart';
 import 'package:immich_mobile/modules/activities/widgets/activity_tile.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/current_asset.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/current_asset.provider.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
 import 'package:immich_mobile/shared/ui/user_circle_avatar.dart';
 import 'package:isar/isar.dart';
diff --git a/mobile/test/modules/activity/dismissible_activity_test.dart b/mobile/test/modules/activity/dismissible_activity_test.dart
index 23156de0ea..5e500b9150 100644
--- a/mobile/test/modules/activity/dismissible_activity_test.dart
+++ b/mobile/test/modules/activity/dismissible_activity_test.dart
@@ -5,7 +5,7 @@ import 'package:flutter_test/flutter_test.dart';
 import 'package:immich_mobile/models/activities/activity.model.dart';
 import 'package:immich_mobile/modules/activities/widgets/activity_tile.dart';
 import 'package:immich_mobile/modules/activities/widgets/dismissible_activity.dart';
-import 'package:immich_mobile/modules/asset_viewer/providers/current_asset.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/current_asset.provider.dart';
 import 'package:immich_mobile/shared/ui/confirm_dialog.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
 
diff --git a/mobile/test/modules/album/album_mocks.dart b/mobile/test/modules/album/album_mocks.dart
index a36ea14bfc..147d7b4221 100644
--- a/mobile/test/modules/album/album_mocks.dart
+++ b/mobile/test/modules/album/album_mocks.dart
@@ -1,4 +1,4 @@
-import 'package:immich_mobile/modules/album/providers/current_album.provider.dart';
+import 'package:immich_mobile/providers/album/current_album.provider.dart';
 import 'package:immich_mobile/entities/album.entity.dart';
 import 'package:mocktail/mocktail.dart';
 
diff --git a/mobile/test/modules/album/album_sort_by_options_provider_test.dart b/mobile/test/modules/album/album_sort_by_options_provider_test.dart
index f5cb89f619..84a7e6e9b8 100644
--- a/mobile/test/modules/album/album_sort_by_options_provider_test.dart
+++ b/mobile/test/modules/album/album_sort_by_options_provider_test.dart
@@ -1,8 +1,8 @@
 import 'package:flutter_test/flutter_test.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:immich_mobile/modules/album/providers/album_sort_by_options.provider.dart';
-import 'package:immich_mobile/modules/settings/providers/app_settings.provider.dart';
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
+import 'package:immich_mobile/providers/album/album_sort_by_options.provider.dart';
+import 'package:immich_mobile/providers/app_settings.provider.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
 import 'package:immich_mobile/entities/album.entity.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
 import 'package:isar/isar.dart';
diff --git a/mobile/test/modules/asset_viewer/asset_viewer_mocks.dart b/mobile/test/modules/asset_viewer/asset_viewer_mocks.dart
index 495bc264ca..f81f5a9a19 100644
--- a/mobile/test/modules/asset_viewer/asset_viewer_mocks.dart
+++ b/mobile/test/modules/asset_viewer/asset_viewer_mocks.dart
@@ -1,4 +1,4 @@
-import 'package:immich_mobile/modules/asset_viewer/providers/current_asset.provider.dart';
+import 'package:immich_mobile/providers/asset_viewer/current_asset.provider.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
 import 'package:mocktail/mocktail.dart';
 
diff --git a/mobile/test/modules/map/map_mocks.dart b/mobile/test/modules/map/map_mocks.dart
index 29c84794b0..cb525b2d17 100644
--- a/mobile/test/modules/map/map_mocks.dart
+++ b/mobile/test/modules/map/map_mocks.dart
@@ -1,6 +1,6 @@
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/models/map/map_state.model.dart';
-import 'package:immich_mobile/modules/map/providers/map_state.provider.dart';
+import 'package:immich_mobile/providers/map/map_state.provider.dart';
 import 'package:mocktail/mocktail.dart';
 
 class MockMapStateNotifier extends Notifier<MapState>
diff --git a/mobile/test/modules/map/map_theme_override_test.dart b/mobile/test/modules/map/map_theme_override_test.dart
index 9b0c2fa32f..5ca63b9eef 100644
--- a/mobile/test/modules/map/map_theme_override_test.dart
+++ b/mobile/test/modules/map/map_theme_override_test.dart
@@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
 import 'package:flutter_test/flutter_test.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/models/map/map_state.model.dart';
-import 'package:immich_mobile/modules/map/providers/map_state.provider.dart';
+import 'package:immich_mobile/providers/map/map_state.provider.dart';
 import 'package:immich_mobile/modules/map/widgets/map_theme_override.dart';
 
 import '../../test_utils.dart';
diff --git a/mobile/test/modules/settings/settings_mocks.dart b/mobile/test/modules/settings/settings_mocks.dart
index 469fe7728b..63fd9312b7 100644
--- a/mobile/test/modules/settings/settings_mocks.dart
+++ b/mobile/test/modules/settings/settings_mocks.dart
@@ -1,4 +1,4 @@
-import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
+import 'package:immich_mobile/services/app_settings.service.dart';
 import 'package:mocktail/mocktail.dart';
 
 class MockAppSettingsService extends Mock implements AppSettingsService {}
diff --git a/mobile/test/modules/shared/shared_mocks.dart b/mobile/test/modules/shared/shared_mocks.dart
index ae57a1de5e..a2aa7b2617 100644
--- a/mobile/test/modules/shared/shared_mocks.dart
+++ b/mobile/test/modules/shared/shared_mocks.dart
@@ -1,7 +1,7 @@
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/entities/user.entity.dart';
-import 'package:immich_mobile/shared/providers/user.provider.dart';
-import 'package:immich_mobile/shared/services/hash.service.dart';
+import 'package:immich_mobile/providers/user.provider.dart';
+import 'package:immich_mobile/services/hash.service.dart';
 import 'package:mocktail/mocktail.dart';
 
 class MockHashService extends Mock implements HashService {}
diff --git a/mobile/test/modules/shared/sync_service_test.dart b/mobile/test/modules/shared/sync_service_test.dart
index 33a8148ff2..735cc57a1b 100644
--- a/mobile/test/modules/shared/sync_service_test.dart
+++ b/mobile/test/modules/shared/sync_service_test.dart
@@ -3,8 +3,8 @@ import 'package:flutter_test/flutter_test.dart';
 import 'package:immich_mobile/entities/asset.entity.dart';
 import 'package:immich_mobile/entities/store.entity.dart';
 import 'package:immich_mobile/entities/user.entity.dart';
-import 'package:immich_mobile/shared/services/immich_logger.service.dart';
-import 'package:immich_mobile/shared/services/sync.service.dart';
+import 'package:immich_mobile/services/immich_logger.service.dart';
+import 'package:immich_mobile/services/sync.service.dart';
 import 'package:isar/isar.dart';
 
 import '../../test_utils.dart';