Kotest is a multiplatform Kotlin testing framework that provides a rich DSL for defining tests in multiple spec styles (FunSpec, DescribeSpec, StringSpec, etc.), a comprehensive assertion library with over 200 matchers, property-based testing with arbitrary generators and shrinking, data-driven testing with tables, and a powerful extension system for lifecycle hooks and integrations (Spring, Testcontainers, Allure, MockServer). The framework runs on JVM, JS, Native, Wasm, and Android via custom test engines (JUnit5/6) and includes an IntelliJ plugin for gutter icons and test navigation. The architecture centers on a test execution engine with interceptors chaining around specs and test cases, configurable via project-level and spec-level configuration objects. Property testing uses composable `Arb` generators and `Exhaustive` enumerations with automatic shrinking and coverage statistics. Assertions follow a `Matcher<T>` pattern with extensible equality via the `Eq` typeclass. The build system uses Gradle convention plugins for consistent multiplatform publishing. Key entry points include `TestEngineLauncher`, spec style root scopes (e.g., `FunSpecRootScope`), and the `should`/`shouldNot` assertion DSL. Data flows: source code → test definitions → materialization → interceptor pipeline → execution → listener notifications → JUnit/compatible output. The framework is self-testing, using its own DSL for a large test suite.
GKD is an open-source Android application that automates UI interactions, primarily to skip ads, auto-confirm dialogs, and perform custom click actions. It operates as an accessibility service, using a custom selector language (similar to CSS) to match UI nodes and execute actions defined in remote subscription rules. The app is built with Kotlin and Jetpack Compose, leveraging Room for local persistence, Ktor for HTTP, and Coroutines/Flow for reactive state management. It also integrates with Shizuku for privileged operations like input injection and screenshot capture. The architecture is modular: the main `gkd-app` module contains the UI, services, and rule engine; `gkd-selector` is a Kotlin Multiplatform library for parsing and matching the custom selector syntax; `gkd-db` provides a multiplatform database layer; and `gkd-hidden-api` contains stubs for Android hidden APIs used for automation. Key entry points include the accessibility service (`A11yService`), the subscription repository (`SubscriptionRepository`), and the snapshot capture system. Data flows involve downloading subscription rules, parsing them into internal representations, matching against accessibility node trees, and executing actions (click, swipe, etc.). External dependencies include AndroidX libraries, Ktor, Kotlin Serialization, Coil, and the Shizuku privilege library. The codebase demonstrates strong engineering practices with extensive unit tests, a well-defined selector engine, and reusable patterns like `Loadable` for async state and `MutexState` for concurrency. However, it relies heavily on hidden Android APIs and a custom DSL, which introduces maintenance risk. Overall, it is a high-quality, actively maintained project with significant reuse potential in its selector engine and utility components.
Napier is a Kotlin Multiplatform logging library that provides a clean, structured API inspired by Timber. The core library (napier module) defines an abstract `Antilog` class for custom log backends, a `DebugAntilog` implementation for each target (Android Logcat, JUL, Darwin print, JS console, Wasm console), and a thread-safe singleton `Napier` object with methods for all log levels. It supports Android, Darwin (iOS, macOS, watchOS, tvOS), JVM, JavaScript, and WasmJs. The repository also contains sample applications (Android, iOS, macOS, watchOS, JVM, JS) demonstrating integration, including Crashlytics and coroutines. The architecture is a simple library with a clear separation of concerns: a common API, platform-specific implementations via expect/actual, and atomic reference utilities for thread safety. This is not a data research repository; it is a pure application/library for logging.