en
Developers
Intro

Developer Guide

Technical stack, getting started, and useful commands for developers

Technical Stack

CategoryTechnology
LanguageKotlin 2.2.10
Min SDKAPI 26 (Android 8.0)
Target SDKAPI 37 (Android 15)
Build SystemAGP 9.2.0 + Gradle Kotlin DSL
UIJetpack Compose (BOM 2025.01.00) + Material 3
NavigationJetpack Navigation Compose 2.8.9
ArchitectureMVVM — StateFlow<UiState> → Compose, ViewModelProvider.Factory delegates (no Hilt/Dagger)
AsyncKotlin Coroutines (Dispatchers.IO for I/O, Dispatchers.Main for UI)
PersistenceAndroidX DataStore Preferences (history + settings)
NTPApache Commons Net 3.11.1 (NTPUDPClient)
DNSdnsjava 3.6.2 (full DNS resolution, bypasses system resolver)
PAC EvaluationQuickJS 0.9.2 (quickjs-android-wrapper)
TestingJUnit 4 + MockK + StandardTestDispatcher for coroutine control
CoverageJaCoCo 0.8.12

Getting Started

Prerequisites:

  • Android Studio (latest stable)
  • JDK 11 or later
  • An Android device or emulator (API 26+)

Open the project:

  1. Launch Android Studio
  2. File → Open → select this project's root directory
  3. Wait for Gradle sync to complete

First build:

./gradlew assembleDebug

This produces a debug APK at app/build/outputs/apk/debug/app-debug-dev.apk.

Useful Commands

Builds & Installation

CommandPurpose
./gradlew assembleDebugBuild debug APK
./gradlew installDebugBuild + install debug APK on connected device/emulator
./gradlew connectedDebugAndroidTestRun instrumented tests on connected device

Testing

CommandPurpose
./gradlew testRun all unit tests (~365 tests)
./gradlew test --tests "ClassName"Run a single test class
./gradlew testDebugUnitTestRun debug unit tests only
./gradlew jacocoUnitTestReportGenerate JaCoCo coverage report (HTML + XML)

Coverage Report Location

app/build/reports/jacoco/jacocoUnitTestReport/html/index.html

Code Style

The project uses Kotlin's official code style (set in gradle.properties). Android Studio will auto-format on save when the Kotlin plugin is configured with the official style guide.


MIT 2026 © Nextra.