Thanks for your interest in TrueShot. Contributions are welcome.
Open an issue using the Bug Report template. Include:
- Device model and Android version
- Steps to reproduce
- Expected vs actual behavior
- Logs if available (ADB logcat filtered to
TrueShot)
Open an issue using the Feature Request template.
- Fork the repository
- Create a feature branch from
main - Make your changes
- Run tests:
./gradlew test - Run lint:
./gradlew lint - Submit a pull request
- Key attestation validation — validating the Android key attestation chain against Google Root CA
- C2PA JUMBF embedding — native C2PA manifest embedding alongside the current post-EOI format
- iOS port — bringing TrueShot to iOS with equivalent CryptoKit integration
- F-Droid packaging — preparing the build for F-Droid submission
- Translations — localizing the app UI
- Screen detection research — improving the sensor-based screen recapture detection with larger datasets
git clone https://github.com/YuriTheCoder/TrueShot.git
cd TrueShot
./gradlew assembleDebugRequirements:
- JDK 17+
- Android SDK 35
- Android Studio Ladybug or newer
- Physical Android device (hardware sensors and Keystore not available on emulators)
The project uses a multi-module architecture:
app/— Entry point, navigation, Hilt setupcore/— Database, DataStore, models, UI themedomain/— Repository interfaces, use casesdata/— All implementations (crypto, sensors, camera, storage)feature/— UI screens (Jetpack Compose)site/— Web verifier (vanilla JS)
- Kotlin with explicit types on public APIs
- Jetpack Compose for all UI
- Hilt for dependency injection
- Room for persistence
- Coroutines for async operations
- No third-party analytics or tracking SDKs
If your contribution touches cryptographic code:
- Do not introduce custom cryptographic constructions
- Use standard primitives (ECDSA P-256, SHA-256, Android Keystore)
- Do not weaken key generation parameters
- Do not add key export functionality
- Document any changes to the signing or verification pipeline
By contributing, you agree that your contributions will be licensed under the MIT License.