Skip to content

Proposal: Cross-Platform Roadmap to Improve Android Architecture and Benefit iOS #205

Description

@chrisdebian

Summary

The Android app currently contains most of the core capture, metadata, and upload logic for KartaView, while the iOS app implements a smaller subset of these features. Improving the Android codebase presents an opportunity to also benefit the iOS app and create a more consistent experience and data pipeline across both platforms.

This issue proposes a prioritized roadmap focused on shared logic, modularization, and cross-platform alignment. The goal is to reduce duplication, improve maintainability, and ensure both apps produce high-quality, consistent data.


✅ Proposed Roadmap (Prioritized)

Phase 1 — Foundation (High Priority)

  1. Migrate core Android logic fully to Kotlin
    Modernize and simplify the codebase, making future modularization possible.

  2. Modularize the Android project
    Extract core modules such as:

core-models

core-metadata

core-upload

core-capture

This separates Android-specific code from portable business logic.

  1. Document the capture + upload pipelines
    Include metadata rules, GPS filtering, EXIF tags, queue logic, etc.
    This helps align both platforms.

  2. Extract shared metadata formats and constants
    Unify EXIF tags, sequence metadata, timestamp rules, and ID formats.


Phase 2 — Shared Logic & Cross-Platform Alignment

  1. Create a shared “KartaView Core” library
    Options include Kotlin Multiplatform, C++, or Rust.
    Start with:

Data models

Metadata construction

Upload queue logic

GPS filtering

Android and iOS can both adopt this core.

  1. Standardize the capture metadata specification
    Define a consistent format for timestamps, orientation, GPS accuracy, frame indexing, etc.

  2. Standardize upload API behavior
    Use a shared OpenAPI schema or protobuf model to auto-generate client code for Android and iOS.


Phase 3 — Capture Pipeline Unification

  1. Move frame-processing logic to shared native code
    A single library for frame extraction, rotation correction, and metadata enrichment.

  2. Implement missing iOS features using shared logic
    iOS gains configurable capture interval, GPS smoothing, metadata enrichment, etc.

  3. Add a shared test suite
    Core logic becomes testable across platforms.


Phase 4 — Ecosystem Improvements

  1. Automated APK releases via CI/CD
    Keep GitHub releases current and reproducible.

  2. Cross-platform “sequence validator” CLI tool
    To check EXIF metadata, timestamps, GPS continuity, and detect anomalies.

  3. Provide a formal “data quality” spec
    Defines what constitutes a good or valid sequence on both platforms.


Phase 5 — Long-Term Enhancements

  1. Consider migrating heavy processing to Rust or optimized C++
    Shared, high-performance capture and metadata logic.

  2. Harmonize UI/UX principles across Android and iOS

  3. Add optional anonymous telemetry for debugging capture/upload problems


✅ Why This Helps Both Platforms

Android gains cleaner modular architecture

iOS gains missing features from shared logic

Server-side ingestion benefits from more consistent metadata

Future work becomes easier and faster

Community contributors face a lower barrier to entry


Request for Feedback

Would maintainers be open to adopting part of this roadmap?
If so, I’m happy to help break this into smaller issues.

Chris

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions