• Android-Kotlin: offline-first field data collection module with map, tracks and synchronization into an existing application

    2 hours ago
    • Desired budget up to 450.83 USD
    • Waiting for a performer...
  • Initial situation - there is a working Android application for field engineers (Kotlin, Android 12+, minSdk 26) with authorization and basic navigation. Currently, data on visits and inspections is recorded on paper forms and then manually entered into the system, which is why coordinates, photos and time are lost. You need to add a full-fledged offline-first module to the application - creating a task, collecting data at a point, recording a track, attaching photos and notes, as well as reliable synchronization to the server when the network appears.

    Technical environment - Android Studio, Kotlin, Jetpack (ViewModel, Room, WorkManager), Coroutines/Flow, Hilt, Retrofit/OkHttp. A map - Mapbox SDK or Google Maps SDK - can be chosen, but the decision must be based on the restrictions below. The server already exists and cannot be changed. API - REST, JSON, HTTPS, Bearer token. API documentation will be provided, but does not include offline scripts.

    What you should get is a release module as part of the current project, which allows you to:
    1) Open the list of tasks, download tasks to the device and store locally
    2) Inside the task, fill out the inspection form with field validation, save the draft locally without a network
    3) Record a GPS track during the departure and link it to the task - store locally and display on the map
    4) Take up to 10 photos per task, compress and save locally, show preview and reference to time/coordinates
    5) Synchronize changes and attachments to the server via a queue - with retries, deduplication and protection against duplicates when resending

    Limitations - The application works in conditions of poor connection and limited power, so background tasks must be careful. You cannot add heavy third-party libraries other than standard Jetpack and the selected SDK card. You cannot require constant geolocation in the background - track recording must work correctly in the foreground service with notification, and when recording stops, it must not hold up resources. Data should survive application restarts and device reboots.

    Measurable acceptance criteria - functionality must be reproducible on 2 devices - Android 10 and Android 14:
    - Without a network, you can create/edit 3 tasks, record a track of at least 2 km and take 10 photos for each - after restarting the application everything remains in place
    - When the network appears, synchronization is launched through WorkManager, all changes and photos are loaded, and after successful sending, local entries are marked synced
    - Re-synchronization does not create duplicates on the server in the scenario - sending started, the network disappeared, the user repeated the sending
    - The average time to open a task screen with 10 photos is no more than 2 seconds on an average device (Pixel 4a level or equivalent)
    - Synchronization errors are displayed in a human-readable message and remain in the log inside the application for at least the last 50 operations

    Execution stages - analysis of the current architecture and integration points, design of the Room circuit and conflict model, implementation of the UI and storage, implementation of the tracker and map, implementation of the synchronization queue and retrays, covering key parts with tests (minimum unit tests for mapping and queue), final assembly and instructions on how to run acceptance scripts.

    The result is a PR or a set of commits in Git with a working module, a short README on setting up map keys and test scripts, a list of accepted assumptions regarding the API and offline conflicts.
Your offer

You have not submitted an offer for this order yet.
Click “Submit an offer” to send your offer.

Need a similar task?

If this project is close to your need, you can view ready services in the category or post your own task with the required budget, deadline and requirements.

The project «Android-Kotlin: offline-first field data collection module with map, tracks and synchronization into an existing application» can be used as a reference for your own brief: what should be done, what result is needed and what budget to set.