A free, open-source Android app that overlays a semi-transparent reference image on the live camera feed, enabling users to trace drawings on paper in augmented reality.
100% offline. No ads. No trackers. No accounts. F-Droid exclusive.
- Live camera overlay — Import any image and display it semi-transparently over the camera feed
- ArUco marker tracking — 4 markers at paper corners for automatic overlay positioning
- Perspective correction — Homography-based transform corrects for phone tilt angles
- Progressive degradation — Graceful fallback from 4→3→2→1→0 visible markers
- Opacity control — Adjustable vertical slider with real-time preview
- Visual modes — Color tint filters (Red, Green, Blue, Grayscale) and inverted transparency
- Drag & pinch — Reposition and resize the overlay with gestures
- Overlay lock + viewport zoom — Lock overlay position, then zoom/pan the viewport
- Timelapse capture — Periodic snapshot → H.264 MP4 compilation → Gallery export/share
- Session persistence — Auto-save/restore via DataStore (survives app restart)
- Flashlight toggle — Built-in torch control for low-light tracing
- Break reminders — Configurable timer with notification tone
- Onboarding — 3-page carousel + interactive camera walkthrough + setup guides
# Debug build
./gradlew assembleDebug
# Run unit tests
./gradlew test
# Run lint
./gradlew lint
# Install on connected device
adb install app/build/outputs/apk/debug/app-debug.apkRequirements:
- JDK 17+
- Android SDK (API 36, Build Tools 34.0.0)
MVVM with Jetpack Compose, CameraX, and Koin DI. The project is organized into 9 focused modules:
| Module | Responsibility |
|---|---|
:app |
Application entry point, navigation, DI wiring |
:core:camera |
CameraX preview, zoom, flashlight control |
:core:cv |
OpenCV JNI wrapper (ArUco marker detection) |
:core:overlay |
Homography solver, tracking, perspective correction |
:core:session |
Session & settings persistence with DataStore |
:core:timelapse |
Timelapse interfaces (storage, compiler, exporter) |
:feature:tracing |
Main tracing screen, ViewModel, UI components |
:feature:onboarding |
First-launch onboarding flow & setup guides |
:feature:timelapse |
Timelapse implementations (MediaCodec, MediaStore) |
See the Documentation section below for detailed references.
- Language: Kotlin
- UI: Jetpack Compose + Material 3
- Camera: CameraX
- DI: Koin
- Image loading: Coil
- State management: StateFlow + MVVM
- Min SDK: 33 (Android 13)
- Target SDK: 36
- Epic 1 — Project foundation, CI, camera feed, flashlight
- Epic 2 — Image overlay, opacity, visual modes, gestures, sessions
- Epic 3 — Fiducial marker tracking (OpenCV)
- Epic 4 — Time-lapse capture & sharing
- Epic 5 — Session persistence
- Epic 6 — Onboarding & setup guides
- Epic 7 — Settings & comfort features
- Epic 8 — Advanced tracking & perspective correction
- Epic 9 — Robustness & code health
Reference docs — docs/index.md
| Document | Content |
|---|---|
| Project Overview | Features, tech stack, target devices |
| Architecture | Module design, data flows, algorithms, DI graph |
| Source Tree | Annotated directory structure |
| Component Inventory | All interfaces, classes, ViewModels, composables |
| Development Guide | Build, test, CI/CD, known gotchas |
Planning artifacts:
This project is licensed under the GNU General Public License v3.0.
Copyright (C) 2026 JN0V