For the complete documentation index, see llms.txt. This page is also available as Markdown.

Android App

This guide covers building and contributing to the KayakNet Android app.

Overview

The Android app provides:

  • Full KayakNet connectivity

  • Chat (rooms and DMs)

  • Marketplace browsing

  • Domain lookup

  • Native Android experience

Tech Stack

  • Language: Kotlin

  • UI: Jetpack Compose

  • Architecture: MVVM

  • Networking: Ktor HTTP client

  • Build: Gradle

Project Structure

Building

Prerequisites

  • Android Studio Hedgehog (2023.1.1) or later

  • JDK 17

  • Android SDK (API 34)

Build Steps

Build Release APK

GitHub Actions

Automated builds via GitHub Actions:

Architecture

Network Communication

The app communicates with the KayakNet backend via HTTP:

Bootstrap Connection

UI with Jetpack Compose

Features Implementation

Chat

  • Rooms list from /api/chat/rooms

  • Messages from /api/chat/history

  • Send via POST /api/chat/send

  • Polling for updates (1s interval)

Marketplace

  • Listings from /api/market/listings

  • Details from /api/market/listing?id=X

  • Categories and search supported

Domains

  • Lookup via /api/domains/lookup?domain=X

  • My domains from /api/domains/mine

Testing

Unit Tests

Instrumented Tests

Manual Testing

  1. Install APK on device/emulator

  2. Ensure KayakNet node is running

  3. App should connect automatically

Known Issues

No Local Node

The Android app connects to the bootstrap node, not a local node. This means:

  • Relies on bootstrap availability

  • No local proxy mode

  • Limited offline capability

Future: Embedded Node

Planned: Embed Go node using gomobile:

Contributing

Code Style

  • Kotlin conventions

  • Compose best practices

  • Clear naming

  • Comments for complex logic

Pull Requests

  1. Fork repository

  2. Create feature branch

  3. Test on multiple devices

  4. Submit PR with description

Troubleshooting

Build Fails

Connection Issues

  • Verify bootstrap is running

  • Check internet connectivity

  • Try with VPN if needed

UI Issues

  • Check Compose version compatibility

  • Verify Material3 components

  • Test on different screen sizes

Last updated