InteractiveChecklists is an Android application for viewing and interacting with Markdown and PDF checklists. It is built with Jetpack Compose and follows an MVVM-style architecture.
Development status: This repository is a development version and not an official release. The app is functional but under active development and may contain experimental features.
Note: A preview APK for version 1.1 is planned. If you are not familiar with Android Studio or building apps from source, please wait for the official preview release to test the app.
Current Development Focus (December 2025)
I am currently primarily working on the core infrastructure to enable secure data transfer between devices and DCS World. This includes finalizing the ECDH handshake implementation, preparing the groundwork for future squad mode (secure data sharing between multiple devices), and completing database integration and data formatting. These foundational changes are complex and time-intensive, which means progress on other areas—such as UI performance improvements, visual enhancements, and smaller features—is happening only on the side and at a slower pace. Thank you for your patience!
Table of Contents
- Features
- Screenshots
- Installation
- System Requirements
- How to Build & Run
- Key Components
- Contributing
- Support & Contact
- FAQ
- Acknowledgements & Credits
- License
- Unified File System: Manage files from bundled assets and internal storage in a single hierarchical view.
- Multilanguage Support: The app supports English, Spanish and German. You can switch the language in the Settings menu. All UI text is available in English.
- Multi-Tab System: Open multiple documents (MD/PDF) with a scrollable tab bar, quick tab switcher, swipe navigation, and tab persistence.
- PDF Viewer: PDF viewer with annotations (draw/highlight/erase), pinch-to-zoom, page snapping, and color inversion.
- Interactive Markdown Checklists: Stateful checkboxes and collapsible sections for interactive checklists.
- Tagging System: Assign tags to files for filtering and organization.
- QuickNotes: Persistent notes powered by Room, with search, autosave, and markdown support.
- Data Persistence: Stores user preferences, annotations, shortcuts, tags, and open tabs locally.
- DataPad (experimental): Live flight telemetry display (UDP) for DCS World. Streams aircraft telemetry to the app for realtime status and popup details — see
docs/features/DATAPAD_FEATURE.mdfor full details and setup instructions. - Aviation Map (experimental): OpenStreetMap-based map viewer with live aircraft position tracking from the DataPad stream. Adds a
MapViewertab showing aircraft position, heading, altitude and basic overlays — seedocs/features/AVIATION_MAP_FEATURE.mdfor details and configuration. - MapDatabaseTools (Python): A collection of Python utilities for receiving, decrypting (AES-GCM), and visualizing DCS flight telemetry. Includes a PySide6 GUI with an embedded OpenStreetMap/Leaflet map for live aircraft tracking, a marker database, and helper scripts to manage map assets. See
scripts/MapDatabaseTools/README.mdfor usage and configuration.
DataPad is an experimental feature that receives real-time aircraft telemetry from DCS World via UDP (default port 5010). It is intended for advanced users and requires running the forward_parsed_udp.py script to forward telemetry to your device.
✅ ECDH Handshake Mode - Production-ready secure communication:
- End-to-end encryption with per-session AES-256-GCM keys
- Device authentication via whitelist (
authorized_devices.json) - Forward secrecy - compromising one session doesn't affect others
- Replay attack protection with counter-based nonces
- Timestamp validation (5-minute window)
- Mutual authentication (client ↔ server)
Quick Start (ECDH Mode):
# Python: Enable handshake mode
python forward_parsed_udp.py --repeat-last --interval 1 --host 192.168.178.101 --port 5010 --verbose --authorized-devices authorized_devices.json --bind-ip 192.168.178.100
# Android: Settings → DataPad → Enable "ECDH Handshake Mode"
# Add your device ID to authorized_devices.json on serverSee docs/technical/ECDH_USAGE_GUIDE.md for complete setup instructions and docs/features/DATAPAD_FEATURE.md for full usage, configuration, and troubleshooting.
Phase 1 (experimental): This release represents Phase 1 of DataPad. Future phases will expand telemetry coverage and add visual and security improvements, including live animated aircraft visualizations and a dedicated UI redesign.
Next up: 2-way communication (experimental) — enabling data flow from the app back to DCS.
Planned enhancements include additional telemetry (speed, vertical speed, fuel, systems), live animated aircraft visualizations, and UI/UX improvements.
Step-by-step instructions to get the project running locally.
-
Prerequisites
- Install Android Studio (Arctic Fox or later recommended).
- Install a compatible JDK (Java 11 or later recommended).
- Configure Android SDK and at least one emulator or use a physical device.
-
Clone the repository
git clone https://github.com/arn-c0de/InteractiveChecklists.git
cd InteractiveChecklists- Build with Gradle (command-line)
./gradlew assembleDebug- Open in Android Studio
- Open the
InteractiveChecklistsdirectory in Android Studio. - Let Gradle sync and allow Android Studio to download any missing SDK components.
- Run the app on an emulator or connected device.
- Open the
- Supported OS: Windows, macOS, Linux (for development).
- Android Studio: Arctic Fox or newer recommended.
- JDK: Java 11+ recommended.
- Android SDK: API level corresponding to the project's
compileSdkandtargetSdk(seebuild.gradle.kts).
- From Android Studio: Open the project, wait for Gradle to finish syncing, then select a target device and click Run.
- From the command line:
./gradlew assembleDebugbuilds an APK; use./gradlew installDebugto install on a connected device.
MainActivity.kt: App entry point and navigation orchestration.data/files/InternalFileManager.kt: Unified file management.ui/files/InternalFilesScreen.kt: File browser and tagging UI.ui/checklist/MarkdownViewer.kt: Interactive markdown checklist viewer.ui/checklist/PdfViewer.kt: PDF viewer and annotation tools.data/quicknotes/QuickNoteManager.kt: QuickNotes data layer.
We welcome contributions. For guidelines, issue workflow, and coding standards, see COLLABORATORS.md.
Quick contribution ideas:
- Improve documentation or add examples.
- Add or extend tests.
- Fix small UI/UX bugs or accessibility issues.
For larger or breaking changes, please open an issue first to discuss design and scope.
Planned features and long-term improvements are tracked in the Roadmap document.
If you encounter issues or have questions:
- Open an issue in this repository.
- For security-sensitive issues, please follow the instructions in SECURITY.md.
- For contribution coordination and discussions, see COLLABORATORS.md.
- Q: How do I run tests?
- A: There are unit tests under
app/src/test. Run them via./gradlew test.
- A: There are unit tests under
- Q: What is the license?
- A: This project is licensed under CC-BY-NC-SA 4.0. See the
LICENSEfile for details.
- A: This project is licensed under CC-BY-NC-SA 4.0. See the
- Q: Where is the documentation?
- A: See the
docs/folder or the Documentation index.
- A: See the
Thanks to all contributors and to the Jetpack Compose and Android open-source ecosystems used in this project.
This project is licensed under the terms in the LICENSE file (CC BY-NC-SA 4.0).









