ByteNest Book a free call

Case study 05Field app for road crewsClient: Promet i prostorLive

PiP

The field app road-maintenance crews work from.

The PiP home screen: the PiPGIS header with a signed-in notice and four large actions: fetch the road chainage, new comment, new intervention and existing interventions
The Fotografija sheet in PiP: the status of a photo is set to before, after or neutral (Prije, Poslije, Neutralno), with a button to delete the photo
Screens from the app's public store listing.

Road crews log interventions on site with photos and a GPS position, with or without a signal. We built PiP for Promet i prostor on their own GIS platform, and we still develop it.

Role
Build, releases and ongoing development
Client
Promet i prostor
Status
Live, version 3.1
  • 3.1current release, November 2026
  • 330+automated tests
  • 4languages

App Store (opens in a new tab) Google Play (opens in a new tab)

The brief

Field work that does not wait for a signal.

PiP is the mobile side of PiPGIS, Promet i prostor's own GIS platform. Crews open or continue an intervention, photograph it before and after, look up the road chainage for their position, and add comments, diary notes and cost-sheet items. Each entry is saved on the phone first and uploaded when there is a connection. Croatian, English, Slovenian and Montenegrin.

System map

How it fits together

PiP field app on the client platformRoad-maintenance crews work in the PiP app, built in Flutter and live in both app stores. They capture interventions with photos and a checked GPS position, plus comments, diary notes and cost-sheet items. Every entry is written to a local Isar database on the phone first, so work continues without a signal. A background sync, at once when online and hourly otherwise, sends it to the PiPGIS API, Promet i prostor's own GIS platform, which ByteNest did not build.01 PEOPLE02 APP03 CAPTURE04 ON THE PHONE05 CLIENTRoad crewswork on site,signal or notPiP appFlutter,both app storesPhotos with GPSbefore and after,checked GPS fixNotes and costscomments, diary,cost-sheet itemsLocal storeIsar database,saved here firstBackground syncat once or hourly,leases, deadlinesPiPGIS APIthe client's ownGIS platform123 PiP field app on the client platformRoad-maintenance crews work in the PiP app, built in Flutter and live in both app stores. They capture interventions with photos and a checked GPS position, plus comments, diary notes and cost-sheet items. Every entry is written to a local Isar database on the phone first, so work continues without a signal. A background sync, at once when online and hourly otherwise, sends it to the PiPGIS API, Promet i prostor's own GIS platform, which ByteNest did not build.01 PEOPLE02 APP03 CAPTURE04 ON THE PHONE05 CLIENTRoad crewswork on site,signal or notPiP appFlutter,both app storesPhotos with GPSbefore and after,checked GPS fixNotes and costscomments, diary,cost-sheet itemsLocal storeIsar database,saved here firstBackground syncat once or hourly,leases, deadlinesPiPGIS APIthe client's ownGIS platform123
System map of PiP. The four stages next to it describe each layer in words.
  1. 1
    Crews on the roadInterventions with photos and a checked GPS position, plus comments and costs
  2. 2
    Saved on the phone firstA local Isar database, so work continues without a signal
  3. 3
    The client's GIS platformA background sync sends everything to PiPGIS
  4. 4
    Three hard partsField data has to be right

Three hard parts

Field data has to be right

  1. Work continues with no signal

    Roads run where coverage does not. Every entry is written to a local Isar database first, then uploaded in the background: at once when online, otherwise by an hourly sync.

  2. A position you can trust

    A wrong position is worse than none. A photo without a usable GPS fix is rejected, and the GPS badge turns grey once the fix is 15 seconds old.

  3. Uploads that never double up

    A retry must not create a second intervention. One upload lease per database, rows locked while they upload, a hard deadline on every request, stuck rows released after 15 minutes.

On screen

From the store listing

The Dohvati stacionažu screen: the road chainage for the current position, shown as Cesta 0+000, with fields for the road section and a link
Road chainage lookup for the current position.
The Uredi informacije screen: a description field and a category picker set to Ophodnja ceste, a road patrol
Description and category of an intervention.
The Nova stavka sheet over the cost sheet: fields for the item number and the quantity, and a Dodaj stavku button
A new item on the cost sheet.
The Postavke sheet: request statuses, start an update, notifications, fetch the user settings, and sign out
Settings: request statuses, updates, notifications.

Stack

  • Flutter
  • Riverpod
  • Isar
  • workmanager
  • Retrofit
  • Dio
  • Firebase Messaging
  • Sentry

Our role: built for Promet i prostor, still developed by us.

Book a free call Back to all work