All modules:

Link copied to clipboard

Purpose: The application module — composes feature screens and supplies application-level wiring behind MainActivity and JetpackApp, and owns app-level config (signing, versioning, ProGuard).

Link copied to clipboard

Purpose: The lowest-level shared module — coroutine/error-handling utilities, dispatcher qualifiers, and extension functions with no UI or domain dependency.

Link copied to clipboard

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.

Link copied to clipboard

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.

Link copied to clipboard

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.

Link copied to clipboard

Purpose: Local Room storage observed by the Home UI, with metadata used by HomeRepositoryImpl in :data to select pending changes for Firestore sync.

Link copied to clipboard

Shared JVM test helpers for repositories and ViewModels: MainDispatcherRule, FakeUserPreferencesDataSource, and FakeAuthDataSource.

Link copied to clipboard

Purpose: Everything shared across screens — the UiState/StatefulComposable state pattern, the Jetpack* design-system components, JetpackTheme, and Compose/Activity extensions.

Link copied to clipboard

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>.

Link copied to clipboard

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.

Link copied to clipboard

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.

Link copied to clipboard

Purpose: Read-only profile display and sign-out, backed by :data's local-only ProfileRepositoryImpl (DataStore + Firebase Auth, no Room).

Link copied to clipboard

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.

Link copied to clipboard

Purpose: Crash reporting via Firebase Crashlytics, behind one small abstraction.

Link copied to clipboard

Purpose: Firebase Authentication for email/password and Google credentials, with Credential Manager for saved credentials and Google account selection.

Link copied to clipboard

Purpose: The remote sync target for :data's offline-first home feature — read/write access to a per-user Firestore collection.

Link copied to clipboard

Purpose: Implements SyncManager from :data and schedules a WorkManager job. SyncWorker collects the Syncable repository implementation in :data, which pushes then pulls.