$ show evilcorpltd/aTox
aTox is an Android client for the Tox peer-to-peer instant messaging protocol. It provides encrypted text messaging, audio/video calls, file transfers, and group chats using the decentralized Tox network. The application follows a clean multi-module architecture: the `domain` module contains pure Kotlin business logic (Tox wrappers, feature managers, validators), the `core` module handles local persistence via Room database (contacts, messages, file transfers, friend requests), and the `atox` module implements the Android UI using Dagger dependency injection, ViewModels, LiveData, and Navigation component. Key entry points include `MainActivity` for handling intents and navigation, `ToxService` for running the Tox loop in a foreground service, and `EventListenerCallbacks` for bridging Tox events to database updates and notifications. External dependencies include the `tox4j` JNI bindings to `c-toxcore`, libsodium for encryption, and opus/libvpx for audio/video codecs. The repository is explicitly unmaintained and carries significant technical debt from its complex Bazel native build system, outdated library versions, and potential security risks inherent in the Tox protocol itself.
The LLM identified 3 files worth highlighting for reuse:
Provides static methods for validating Tox IDs (public keys) including format checks and checksum verification. Self-contained with no internal dependencies, making it reusable for any project needing to validate Tox IDs or similar hexadecimal strings with checksums.
Parses a JSON array of Tox bootstrap nodes into a list of typed `BootstrapNode` objects. Accepts a `Reader` or `String`, returns a `Result` for error handling. Demonstrates a clean, testable pattern for deserializing external configuration data with validation.
Exports chat history to JSON format using Gson. Encapsulates the export logic (fetching messages, building a JSON object, writing to a file) into a single callable manager. The pattern is reusable for any application needing to export user data in a structured format with error handling.