All modules:
Purpose: The application module — composes feature screens and supplies application-level wiring behind MainActivity and JetpackApp, and owns app-level config (signing, versioning, ProGuard).
Purpose: The lowest-level shared module — coroutine/error-handling utilities, dispatcher qualifiers, and extension functions with no UI or domain dependency.
Purpose: Jetpack Navigation 3 multi-back-stack state and a Navigator for changing it. Destination keys implement NavKey; screens register entries in the app’s entry provider.
Purpose: Retrofit/OkHttp REST client plus connectivity monitoring. An independent option for a plain backend — HomeRepositoryImpl doesn't use it; it syncs through Firestore only.
Purpose: Type-safe local storage for the user's profile and app settings, backed by a single JSON DataStore file, exposed as Flow for reads and suspend functions for writes.
Purpose: Local Room storage observed by the Home UI, with metadata used by HomeRepositoryImpl in :data to select pending changes for Firestore sync.
Shared JVM test helpers for repositories and ViewModels: MainDispatcherRule, FakeUserPreferencesDataSource, and FakeAuthDataSource.
Purpose: Everything shared across screens — the UiState/StatefulComposable state pattern, the Jetpack* design-system components, JetpackTheme, and Compose/Activity extensions.
Purpose: Repository implementations that sit between ViewModels and storage/auth sources: Room, JSON DataStore, Firebase Auth and Firestore, with an optional REST source available for extensions. Observable data uses Flow; one-time operations return Result<T>.
Purpose: Email/password and Google sign-in/registration screens, wrapping firebase:auth behind the UiState/StatefulComposable pattern. ViewModels call AuthRepository in :data, which handles authentication and saves the local profile through its data sources.
Purpose: The template's reference feature — a Jetpack list with create/edit/delete, offline support, and background sync. The one feature the Guide walks through end to end.
Purpose: Read-only profile display and sign-out, backed by :data's local-only ProfileRepositoryImpl (DataStore + Firebase Auth, no Room).
Purpose: Theme (light/dark/system + dynamic color), language, and sign-out, shown as a dialog rather than a full screen. SettingsViewModel uses SettingsRepository in :data; theme/color/profile values come from JSON DataStore, while language uses app locales.
Purpose: Crash reporting via Firebase Crashlytics, behind one small abstraction.
Purpose: Firebase Authentication for email/password and Google credentials, with Credential Manager for saved credentials and Google account selection.
Purpose: The remote sync target for :data's offline-first home feature — read/write access to a per-user Firestore collection.
Purpose: Implements SyncManager from :data and schedules a WorkManager job. SyncWorker collects the Syncable repository implementation in :data, which pushes then pulls.