As-Found: Offline Inspection Reports from Phone Photos by Niko MinadzeAs-Found: Offline Inspection Reports from Phone Photos by Niko Minadze

As-Found: Offline Inspection Reports from Phone Photos

Niko Minadze

Niko Minadze

As-Found: Offline Inspection Reports from Phone Photos

Photographing a problem on site is easy. Turning those photos into a useful condition report usually creates another task: match each image to a room, reconstruct the notes, arrange the pages and send the finished document.
I built As-Found to keep that work together. It is an offline inspection app for iOS and Android, built with Expo, React Native, TypeScript and SQLite. An inspection holds its location, inspector and date; each issue has an area, notes, an optional photo and an open or resolved status. The final output is a PDF that can be shared through the phone's native share sheet.

Starting with the report

The report determined the application structure. A useful inspection record needs to remain understandable after it leaves the app, so I developed the PDF model and template before building the screens around them.
The report has a summary cover and a consistent layout for the issues. Each issue starts on a new page, keeping its location, status, notes and photo together. Longer text can continue onto additional pages. The template is fixed, which keeps the workflow focused on recording conditions and producing a readable document.
I separated report data preparation and HTML generation from the mobile interface, filesystem and printing step. That makes the template available for browser previews and automated checks without rebuilding the app for every layout change.
Conceptual illustration of the capture-to-report workflow. The actual generated PDF is linked below.
Conceptual illustration of the capture-to-report workflow. The actual generated PDF is linked below.

Handling photos and local records

Photos needed attention beyond attaching an image to a database row. As-Found stores one photo per issue, resized to a maximum 1600-pixel long edge for reports, with a separate 320-pixel thumbnail for lists. It keeps those processed files rather than full-resolution originals.
Photo replacements are staged and become persistent when the form is submitted. If a save fails, the existing saved photo is preserved and the staged replacement is cleaned up. SQLite holds the inspection and issue records, with paths and dimensions linking them to the image files.
During export, photos are embedded directly in the report HTML as base64 image data. The generated PDF therefore contains the report's images rather than depending on image URLs hosted elsewhere.

Completing the inspection workflow

I added issue status filters, consistent issue numbering, a built-in sample inspection and separate cached PDFs for each inspection. Editing an inspection invalidates outdated report results. The repository also includes regression tests and report-preview fixtures for longer notes, missing photos, empty inspections and larger reports.
The core workflow requires no backend or account. There is no backup or sync; removing the app removes its local data.

Result

Version 1.0.0 contains the complete implementation from inspection entry through local storage, photo handling and PDF export. The output is available to inspect directly: open the sample condition report. Its demonstration photos are synthetic.
As-Found brings mobile data entry, image processing and document generation into one focused application. The public repository includes the source, release notes and sample report.
Like this project

Posted Sep 29, 2026

An Expo and React Native app that turns inspection photos and notes into a shareable PDF report, with local SQLite storage.