Site Watch — a site complaint logging app that survives having no signal
Basements, lift shafts and half-built floors have no signal. This site complaint logging app captures the report anyway, queues it, and files it the moment the phone reconnects.
This app is still in development and is not yet listed on the App Store or Google Play. This page describes what has been built.
Field reporting fails at the exact moment it is needed
The places where something goes wrong on a construction site are the places with no reception. A web form times out, an app that posts immediately fails, and the report gets postponed until the end of the day — by which point the detail is gone, the photo was never taken, and the exact location is a guess.
Site Watch treats offline as the normal case. A report is written to a local outbox with its photo and coordinates, and the app sends it when connectivity returns, without anyone remembering to do so.
What the site complaint logging app does
Capture, queue, and make absolutely sure it goes in exactly once.
- Capture with photo and coordinates. A report carries a description, one or more photos taken on the spot or picked from the library, and the location. The location field is required, because a site complaint without a position is not actionable.
- An outbox you can see. Pending reports are listed as waiting to send, with the app stating plainly that they will go automatically when there is a connection and that duplicates are checked before sending. A queue you cannot see is a queue you do not trust.
- Duplicate protection, twice over. Each report carries a client-generated identifier. Once a report has been accepted, its issue number is written down immediately and it can never be posted again no matter how many times a retry runs. Separately, before creating anything, the app queries the existing list for that identifier. Two independent gates, because the failure mode of a naive retry — a response lost in transit and the report filed twice — is the one that destroys confidence in a shared log.
- Photos handled sensibly. Images are compressed before upload and stored as file paths rather than being stuffed into the local database, because three photos of several hundred kilobytes each in a key-value store is a problem waiting to happen.
- List and map views. Reports can be read as a list or seen on a map, which is how a pattern in one part of a site becomes visible.
- Shared across a team. Multiple people log into the same shared record, so a report filed by one person is visible to everyone.
- Local search. A search index on the device, so finding an earlier report does not require a round trip.
No server, on purpose
The shared log is stored as issues in a GitHub repository. That is an unusual choice and a deliberate one: it means there is no backend to run, no database to secure, no hosting bill, and a full history with timestamps and comments for free. For a small team logging site problems, an issue tracker is an extremely good fit for what a complaint log actually is.
Access credentials are held in the platform's secure storage rather than in plain preferences, and photos and cached reports live on the device.
Who it is for
Site teams, safety officers and residents' committees logging problems around a construction site — dust, noise, obstruction, damage — where a photograph with a location and a timestamp is far more useful than a phone call.
More generally, it suits any small team doing field reporting in places with unreliable connectivity, where the report must survive being written in a basement and must not be filed twice when the signal comes back.
Storage and privacy
Reports are stored as issues in a GitHub repository configured during setup, so their visibility follows that repository's settings. Photos are compressed on the device before upload. Credentials are kept in secure storage. Location is used to attach coordinates to a report.
Anyone using it should be aware that photographs taken on a site may capture people or private property, and should handle that accordingly.
This app is still in development and is not yet listed on the App Store or Google Play. This page describes what has been built.
Frequently asked questions
What happens if I have no signal? The report is saved to a local outbox with its photos and location, and the app sends it automatically when the connection comes back.
Could a report be filed twice? Two independent guards prevent it. Once a report is accepted, its issue number is written down immediately and it can never be posted again; and before creating anything, the app queries the existing list for its client identifier.
Where are the reports actually stored? As issues in a GitHub repository you configure during setup. There is no separate server, and you get a full history with timestamps and comments for free.
Can several people use the same log? Yes. Everyone logging into the same repository sees the same reports.
Is location required? Yes. A site complaint without a position is not actionable, so the app requires one.