An unofficial, community-built mobile client for VibeKanban.
Baton is an unofficial, community-built mobile client for VibeKanban - an AI-powered development assistant. This app provides a native mobile experience for managing your VibeKanban workspaces, monitoring agent activity, and reviewing code changes on the go.
Note: This is not an official VibeKanban project. For the official VibeKanban repo, see vibekanban/vibekanban.
- Kotlin Multiplatform: Shared code for Android & iOS
- Compose Multiplatform: Shared UI framework
- Orbit MVI: Unidirectional state management
- Metro DI: Type-safe dependency injection
- Modular Architecture: Clean api/impl separation
- Navigation: Retained state with Navigation 3
baton/
├── apps/
│ ├── android/ # Android app
│ └── ios/ # iOS app (XcodeGen)
├── shared/
│ ├── core/
│ │ ├── domain/ # Domain models & validation
│ │ ├── data/ # Repositories (api + impl)
│ │ ├── usecases/ # Business logic (api + impl)
│ │ └── ui/ # Shared UI (theme, components, strings)
│ └── feature/
│ ├── root/ # Navigation container
│ ├── onboarding/ # Auth flow
│ ├── settings/ # Settings screen
│ ├── paywall/ # IAP integration
│ └── example-list/ # Example feature (CRUD pattern)
- Android Studio or IntelliJ IDEA
- Xcode 15+ (for iOS)
- JDK 21+
-
Clone repository:
git clone https://github.com/chrisbanes/baton.git cd baton -
Customize identifiers (see SETUP.md):
- Package:
me.chrisbanes.baton→ yours - App name:
Baton→ yours - Bundle IDs in build configs
- Package:
-
Local config:
cp local.properties.template local.properties # Edit and set Android SDK path -
Build:
./gradlew build
Android:
./gradlew :apps:android:installDebugiOS:
xcodegen -s apps/ios/project.yml
open apps/ios/Baton.xcodeproj- SETUP.md - Full customization guide
- CONTRIBUTING.md - Contribution guidelines
- AGENTS.md - Development guide for AI agents
- docs/technical-design.md - Technical design
- docs/vibekanban-api.md - VibeKanban API reference
Format:
./gradlew spotlessApplyTest:
./gradlew test
./gradlew check # includes lint- Kotlin: 2.2.21
- Compose Multiplatform: 1.10.0
- Orbit MVI: 11.0.0
- Metro: KSP-based dependency injection
- Navigation: AndroidX Navigation
- domain/api: Domain models (ExampleItem, ExampleEvent, User, etc.)
- data/api: Repository interfaces
- data/impl: Repository implementations
- usecases/api: Use case interfaces
- usecases/impl: Use case implementations
- ui: Shared UI components, theme, strings
Apache License 2.0 - see LICENSE
Based on production patterns from real-world Kotlin Multiplatform applications, including:
- Orbit MVI for predictable state management
- Metro for type-safe dependency injection
- Compose Multiplatform for shared UI