Skip to content

Repository files navigation

TraceGlass

CI License: GPL-3.0 Android API

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.

Features

  • 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

Build

# 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.apk

Requirements:

  • JDK 17+
  • Android SDK (API 36, Build Tools 34.0.0)

Architecture

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.

Tech Stack

  • 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

Roadmap

  • 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

Documentation

Reference docsdocs/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:

License

This project is licensed under the GNU General Public License v3.0.

Copyright (C) 2026 JN0V

About

Free open-source Android AR tracing app for F-Droid

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages