Skip to content

Compatible with Android #1511

Description

@QTC-2005

Hi maintainers,

I've been following BitChat for a while — the dual-transport architecture (BLE mesh + Nostr) is really cool, and the use case for offline mesh communication is something I find genuinely compelling.
I noticed the project currently supports iOS and macOS only. I'm a CS undergraduate with Android development experience (Kotlin/Java, Bluetooth APIs, etc.), and I'd love to help port BitChat to Android if that's something you're open to.

Before I dive in, I have a few questions:
Codebase architecture: The iOS codebase is in Swift (Xcode project). Is there any design doc or architecture overview that could help someone coming from a different platform understand the core logic (mesh transport, Noise protocol handshake, message routing, etc.)? I saw there's a whitepaper — I'll definitely read that first.
Bluetooth stack: The BLE mesh implementation is probably the most complex part. Is it built on Apple's CoreBluetooth, or is there a custom BLE stack? For Android, I'd likely use the Android Bluetooth APIs or possibly look into existing BLE mesh libraries — any thoughts on this?
Cross-platform strategy: Are you considering a cross-platform framework (Flutter/KMM) for future development, or would you prefer a native Android implementation that maintains parity with the iOS version?
Nostr integration: The app uses Nostr relays with a custom private-envelope format (kind-1059, XChaCha20-Poly1305). Is there a spec or reference implementation I can refer to for the encryption/decryption logic?
Testing & CI: I saw there's a test suite and CI workflows. Is there a test plan or a set of test vectors I could use to verify the Android implementation against the iOS behavior?

Also — and I apologize if this is forward — but do you have a preferred way to get in touch for coordination (Matrix/Telegram/Discord/email)? I figure this is going to be a pretty involved effort and it'd be helpful to have a more real-time channel for questions and sync.

I'm happy to start with a small POC (e.g., BLE discovery + basic messaging) to validate feasibility before committing to a full port. Let me know what you think!

Thanks for building this — really excited about the project.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions