DroidconKotlin Development Guide

March 26, 2025 ยท View on GitHub

Build Commands

  • Build: ./gradlew build
  • Clean build: ./gradlew clean build
  • Check (includes lint): ./gradlew check
  • Android lint: ./gradlew lint
  • Run tests: ./gradlew test
  • ktlint check: ./gradlew ktlintCheck
  • ktlint format: ./gradlew ktlintFormat
  • Build ios: cd /Users/kevingalligan/devel/DroidconKotlin/ios/Droidcon && xcodebuild -scheme Droidcon -sdk iphonesimulator

Modules

  • android: The Android app
  • ios: The iOS app
  • shared: Shared logic code
  • shared-ui: UI implemented with Compose Multiplatform and used by both Android and iOS

Libraries

  • Hyperdrive: KMP-focused architecture library. It is open source but rarely used by other apps. See docs/HyperDrivev1.md

Code Style

  • Kotlin Multiplatform project (Android/iOS)
  • Use ktlint for formatting (version 1.4.0)
  • Follow dependency injection pattern with Koin
  • Repository pattern for data access
  • Compose UI for shared UI components
  • Class/function names: PascalCase for classes, camelCase for functions
  • Interface implementations: Prefix with Default (e.g., DefaultRepository)
  • Organize imports by package, no wildcard imports
  • Type-safe code with explicit type declarations
  • Coroutines for asynchronous operations
  • Proper error handling with try/catch blocks

Claude Document Formats and Instructions

See APISummaryFormat.md and StructuredInstructionFormats.md

Architecture Notes

  • App startup logic is handled in co.touchlab.droidcon.viewmodel.ApplicationViewModel

Current Task

Cleaning up the app and prepping for release