Skip to content
CAI
Software that uses CAICheck a score

avidraghav/SpaceDawn

58.2

Adequate · 21 September 2026

4.3k

lines of production code

Kotlin

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This is an Android application that allows users to view upcoming space launches and set local reminders for them. It implements an offline-first architecture that caches remote launch data in a local database, ensuring reliable access even without a network connection. The system manages user reminders through background tasks and provides a clean separation of concerns across domain, data, and presentation layers.

Features

Add Hilt convention plugin for Android modules

A new AndroidHiltConventionPlugin has been introduced in the build-logic/convention module. This plugin automatically applies the Hilt and Kapt Gradle plugins and configures the necessary dependencies (hilt.android and hilt.android.compiler) for Android modules that apply it, simplifying the setup of dependency injection via Hilt.

build-logic/convention · high confidence

Add Launches and Reminders screens with offline support and background reminders

Users can now view a list of upcoming launches and set or cancel reminders for them. The app supports offline access to launch data via a local Room database, and background tasks are handled by WorkManager to ensure reminders are delivered even after device reboots. The UI includes a bottom navigation bar to switch between the Launches and Reminders screens, and permission handling is integrated to manage notifications and alarms.

app/src/main · high confidence

Add local Room database for caching launches and reminders

The app now stores launch data and user reminders in a local Room database. This enables offline access to cached launch details and allows users to save and manage reminders locally, supporting the app's offline capabilities.

data/src/main/java/com/raghav/spacedawnv2/data/local · high confidence

Add remote API interface for fetching upcoming launches

Introduces the LaunchesApi interface, which defines the remote data source for retrieving upcoming space launches via the /launch/upcoming endpoint. This new network layer enables the application to fetch launch data from the server, supporting the overall feature of displaying upcoming launches.

data/src/main/java/com/raghav/spacedawnv2/data/remote · high confidence

Add remote data transfer objects for space launch API

Added a new set of data transfer objects (DTOs) in the \data/remote/dto\ package to model the space launch API responses. These include \AgencyDto\, \ConfigurationDto\, \LaunchDetailDto\, \LaunchServiceProviderDto\, \LaunchesResponseDto\, \LocationDto\, \MappingDto\, \NetPrecisionDto\, \OrbitDto\, \PadDto\, \ProgramDto\, \RocketDto\, and \StatusDto\. Each DTO is annotated with \@JsonClass(generateAdapter = true)\ to enable Moshi code generation for efficient serialization and deserialization, and includes a corresponding \toDomain()\ or \toX()\ extension function to map the remote data to the domain model.

data/src/main/java/com/raghav/spacedawnv2/data/remote/dto · high confidence

Added domain models for launch data and reminders

New data classes have been introduced to the domain layer, including detailed launch information (LaunchDetail), reminder entities (Reminder) for local storage, and various supporting models such as Agency, Configuration, Location, Mission, Pad, Rocket, and Status. These classes define the structure for displaying launch details and persisting user reminders in the local database.

domain/src/main/java/com/raghav/spacedawnv2/domain/model · high confidence

Added domain use cases for managing launch reminders

Introduced three new domain use cases to support a new reminder feature: AddReminderUseCase handles creating alarms and saving reminders to the local database, with specific error handling for notification and reminder permissions; CancelReminderUseCase removes a reminder from the scheduler and database; and GetRemindersUseCase retrieves the list of stored reminders. These changes enable the application to schedule, cancel, and query launch reminders.

domain/src/main/java/com/raghav/spacedawnv2/domain/usecase · high confidence

Added domain-layer utilities for reminders and notifications

The domain layer now includes a set of utility classes and interfaces to support the new reminder feature. This includes a Resource sealed class for handling action states, interfaces for scheduling reminders and showing notifications, and specific exception types for permission errors. These components provide the domain-side contracts and data models required for the upcoming Android-specific implementations.

domain/src/main/java/com/raghav/spacedawnv2/domain/util · high confidence

Added repository interfaces for launches and reminders

New repository interfaces, LaunchesRepository and RemindersRepository, were added to the domain layer. LaunchesRepository defines methods to retrieve a flow of launch details and save reminders, while RemindersRepository provides methods to retrieve and delete reminders from the database. These interfaces establish the domain contracts for data access.

domain/src/main/java/com/raghav/spacedawnv2/domain/repository · high confidence

Introduce offline-first data layer with network-aware caching

Users will now experience faster, more reliable access to launch data and reminders, as the app caches remote data locally and serves it immediately when offline. The new data layer includes a network-bound resource pattern that intelligently checks for connectivity before fetching, ensuring data is always available even without a network connection.

data/src/main/java/com/raghav/spacedawnv2/data/repository · high confidence

Behavioural changes

3 commits (0 fixes) modifying art

A change to existing behaviour in art — 3 commits, 8 files.

art · medium confidence · unverified

Added ProGuard rules for Retrofit and Moshi compatibility

The data module now includes specific ProGuard rules to ensure Retrofit and Moshi work correctly in release builds. These rules preserve the necessary classes and interfaces, preventing obfuscation or shrinking from breaking the HTTP client and JSON serialization.

data · high confidence

Added release APK metadata

A new output-metadata.json file has been added to the app/release directory, documenting the build configuration for the release APK (com.raghav.spacedawnv2, version 1.0). This metadata file is typically generated by the Android build system to track build artifacts and their properties.

app/release · medium confidence

Updated ProGuard rules for release build stability and Retrofit/Moshi compatibility

Added ProGuard keep rules to ensure Retrofit and Moshi function correctly in release builds, and suppressed warnings for Bouncy Castle and OpenJSSE libraries to prevent build errors. The configuration file was also updated to reference the Kotlin-based Gradle build script.

app · medium confidence

Test coverage

Added instrumentation tests for LaunchesDao; Added unit tests for LaunchesRepositoryImpl; Added unit tests for LaunchesScreenVM and RemindersScreenVM; Removed obsolete Android instrumented test.

Dependencies

Migrate build system to Kotlin DSL and version catalogs

The project's build configuration has been migrated from Groovy to Kotlin DSL (build.gradle.kts), introducing a more type-safe and concise build script. A Gradle version catalog (libs.versions.toml) is now used to manage all dependency versions and plugin aliases, centralizing dependency management. The build logic is also extracted into a convention plugin in the build-logic module, and the project structure is updated to include domain and data modules alongside the app module.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 62 → 58 (-3.8)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 98 → 98 (-0.4)
  • Architecture 100 → 76 (-23.8)
  • Maturity 57 → 57 (+0.0)
  • Readiness 57 → 50 (-7.0)
  • Security 68 → 91 (+22.9)
  • Domain Modelling 70 → 63 (-7.0)

Resolved (12)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • Duplicated block (10 lines × 2) (app/src/main/java/com/raghav/spacedawnv2/launchesscreen/components/LaunchesScreenItem.kt)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • No exposed public API
  • Test reliability not included
  • single-maintainer — knowledge-concentration (bus factor) risk

New (18)

  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (10 lines × 2) (app/src/main/java/com/raghav/spacedawnv2/launchesscreen/components/LaunchesScreenItem.kt)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • Medium: security finding (details withheld)
  • Medium: security finding (details withheld)
  • Medium: security finding (details withheld)
  • Medium: security finding (details withheld)
  • MethodTooLong: LaunchesScreenKt.LaunchesScreen (app/src/main/java/com/raghav/spacedawnv2/launchesscreen/LaunchesScreen.kt)
  • No ADRs found
  • No dependency advisory monitoring
  • Workflow token permissions not restricted

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

avidraghav/SpaceDawn was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit f06bbd8396fcccb19f3d2a28ba984b23d02d4a52 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-fa71c66cabd8.