Skip to content
espenmjosPublic

About

πŸ“Έ The job-site camera with a filing system – capture photos, video & voice notes straight into project folders. Notes, GPS details, trash & share-to. Kotlin Β· Jetpack Compose Β· CameraX.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

34 Commits

Folders and files

Repository files navigation

Onsite logo

Onsite

The job-site camera with a filing system.
Capture photos, video and voice notes straight into project folders – organised, annotated and kept out of your personal camera roll.

Platform Kotlin Jetpack Compose CameraX Languages License: MIT


Screenshots


Projects
cover, counts, last activity

Project
folder note & subfolders

Folder
photos with note badges

Viewer
note, share, move, delete

Details
time, GPS address, Open in Maps

Multi-select
share, move or delete in bulk

Move to
browse-style folder picker

Settings
language, camera, storage

Demo photos from Unsplash (via Lorem Picsum) by Paul Evans, Dietmar Becker, Florian Klauer, Alexander Shustov, Steve Richey, Rodrigo Melo, Thanun Buranapong, Johnny Lam, Vadim Sherbakov, Aleks Dorohovich, Adam Przewoski, Luke Chesser, Art Wave, Christian Bardenhorst and Charlie Foster.

Why Onsite?

Field work produces hundreds of photos across many jobs. In a regular camera app they end up mixed with personal pictures and are painful to sort, share and hand over. Onsite gives every job its own folder from the moment you press the shutter – so documentation is organised before you even leave the site.

Features

Projects & folders

  • Projects with unlimited nested subfolders (e.g. Job 123 β€Ί Bathroom β€Ί Before)
  • Folder overview with cover photo, counts per media type, created date and last activity
  • Notes on folders – address, contact person, agreements
  • Multi-select files and folders to share, move or delete
  • Browse-style folder picker with "new folder here"
  • Trash with 30-day restore

Capture

  • Photo and video modes with audio, front/back camera
  • Zoom presets (incl. ultra-wide where available) and pinch-to-zoom
  • Flash / torch, exposure compensation, tap-to-focus, rule-of-thirds grid
  • 4:3 or 16:9, video in HD / Full HD / 4K
  • Hardware volume keys as shutter – works with gloves
  • Voice notes recorded straight into the current folder (pause/resume, level meter)

Review & document

  • Gallery-style viewer with swipe, pinch-zoom and video/audio playback
  • Notes on every photo, video and voice note (dictate with the keyboard mic)
  • Details panel: capture time, GPS address with Open in Maps, resolution, duration, camera
  • Correct a wrong GPS address manually
  • Optional stamp burned into photos (date, address, project path)

Fits into your workflow

  • Share β†’ Onsite from the system camera, gallery or any app to file existing media into a project
  • Share files or whole folders to e-mail, Teams, Slack, etc.
  • English and Norwegian (follows the system language, or pick one in settings)
  • Navy & safety-yellow theme in light and dark mode

Storage design

Everything is stored as plain files under Pictures/Onsite/ on the device:

Pictures/Onsite/
β”œβ”€β”€ Job 123/
β”‚   β”œβ”€β”€ .notat.txt                  ← folder note
β”‚   β”œβ”€β”€ Bathroom/
β”‚   β”‚   β”œβ”€β”€ IMG_20261021_101500.jpg
β”‚   β”‚   β”œβ”€β”€ .IMG_20261021_101500.jpg.notat.txt    ← photo note
β”‚   β”‚   └── VID_20261021_101622.mp4
β”‚   └── LYD_20261021_102010.m4a     ← voice note
└── .papirkurv/                     ← trash (30 days)
  • No database: the folder tree is the data model, so it can be mirrored 1:1 to cloud storage.
  • Notes and corrected addresses are hidden sidecar files that travel with their media.
  • Files survive uninstalling the app; a .nomedia marker keeps them out of the system gallery (toggle in settings).
  • GPS is written to photo EXIF and video metadata.

Roadmap

  • Cloud sync of a shared project root (OneDrive/SharePoint or Google Drive) for teams
  • Draw / mark up on photos
  • PDF report export with photos, notes, dates and locations
  • Search across projects
  • Project status (active / done / archived)

Install

Download the latest Onsite-<version>.apk from Releases, open it on your phone and allow installing from unknown sources. On first launch Onsite asks for All files access so it can manage Pictures/Onsite.

Requires Android 8.0+ (per-app language selection needs Android 13+).

Build

./gradlew assembleDebug      # debug build
./gradlew assembleRelease    # signed release build

Requires JDK 17+ and the Android SDK (compileSdk 35).

Release builds are signed with a key kept outside the repository. Point ONSITE_SIGNING at a properties file (default ~/.android-keys/onsite-release.properties) containing storeFile, storePassword, keyAlias and keyPassword. Without it the release APK is left unsigned. Keep the key safe – updates must be signed with the same key.

Tech stack

Kotlin Β· Jetpack Compose (Material 3) Β· CameraX 1.4 (photo + video) Β· Media3 ExoPlayer Β· Coil Β· AndroidX ExifInterface Β· MediaRecorder Β· Android per-app locales Β· 16 KB page-size compatible

License

MIT Β© 2026 Espen MjΓΈs. Demo photos in docs/screenshots are from Unsplash under the Unsplash License.

About

πŸ“Έ The job-site camera with a filing system – capture photos, video & voice notes straight into project folders. Notes, GPS details, trash & share-to. Kotlin Β· Jetpack Compose Β· CameraX.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages