Native WaniKani clients and shared tooling, organized as a Bun + Turborepo workspace.
apps/ios: Native SwiftUI app (XcodeGen source of truth)apps/android: Native Kotlin + Compose shellpackages/design-tokens: Canonical semantic design tokens + generatorspackages/parity-matrix: Route parity source + validationpackages/tooling: Monorepo automation scripts/config templates
bun install
bun run ios:generate
bun run ios:open
bun run ios:build
bun run android:buildFor Android local development, ensure SDK is installed and either:
- set
ANDROID_HOME/ANDROID_SDK_ROOT, or - create
/Users/angansamadder/Code/WaniKani/apps/android/local.propertieswithsdk.dir=/path/to/sdk.
# full workspace
bun run build
bun run test
bun run lint
# affected-only runs
bun run build:affected
bun run test:affected
# iOS
bun run ios:build
bun run ios:test
bun run ios:test:unit:scheme
# turbo graph + summaries
bun run graph:build
bun run build:summary- Do not edit
.xcodeprojdirectly. - Source of truth is
apps/ios/project.yml. - Regenerate with
bun run ios:generate. - Root generation is supported:
bun run ios:generatealso emits/Users/angansamadder/Code/WaniKani/WaniKani.xcodeproj. - Open from root with
bun run ios:open(ormake open).
Use environment variables in CI for Turbo remote cache:
TURBO_TEAMTURBO_TOKEN- optional
TURBO_API(self-hosted endpoint)
See packages/tooling/configs/turbo-remote-cache.example.env.
GitHub Actions runs a monorepo pipeline with:
packagesjob: shared packages lint/typecheck/test/buildandroidjob: Android shell build/test/lintiosjob: generate/build/test forWaniKani(unit tests)