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