1
0
Files
Orbis/CLAUDE.md
2026-01-21 11:05:33 -05:00

2.4 KiB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Build Commands

# Build
./gradlew build                    # Full build
./gradlew assembleDebug            # Debug APK
./gradlew assembleRelease          # Release APK

# Test
./gradlew test                     # Run unit tests
./gradlew connectedAndroidTest     # Run instrumented tests (requires device/emulator)
./gradlew :app:testDebugUnitTest   # Run tests for specific module/variant

# Lint
./gradlew lint                     # Run Android Lint
./gradlew lintDebug                # Lint specific variant

# Clean
./gradlew clean

Architecture

This is a Kotlin Android application using Jetpack Compose and Material 3.

Module Structure

  • :app - Main Android application entry point
  • :core:ui - Shared design system library with theming components
  • :feature:orb - Orb feature with Compose UI and WebGPU rendering

Dependency Injection (Koin)

Uses Koin 4.1.1 for dependency injection. Modules are defined in app/src/main/java/io/visus/orbis/di/AppModule.kt.

// Define dependencies using autowire DSL (constructor params resolved automatically)
val appModule = module {
    singleOf(::MyRepository)          // Singleton
    factoryOf(::MyUseCase)            // New instance each time
    viewModelOf(::MyViewModel)        // ViewModel scoped to lifecycle
}

// Inject in Android classes via delegate
class MyActivity : ComponentActivity() {
    private val viewModel: MyViewModel by viewModel()
}

Design System (core/ui)

The core/ui module provides a custom theme system (OrbisTheme) with:

  • Color.kt - Color palette with light/dark mode support (grayscale, red, blue, green schemes with 10 variants each)
  • Typography.kt - 12 text styles (h1-h4, body1-3, label1-3, button, input)
  • Theme.kt - Composable theme wrapper that provides colors and typography via CompositionLocal
  • foundation/ - Elevation animations and custom ripple effects

Theme Usage

OrbisTheme {
    // Access theme values via:
    OrbisTheme.colors.primary
    OrbisTheme.typography.h1
}

Key Configuration

  • Min SDK: 24 | Target SDK: 36
  • Kotlin: 2.3.0 with Compose plugin
  • Compose BOM: 2026.01.00
  • Koin: 4.1.1 (dependency injection)
  • Lumo Plugin: 1.2.5 (theme/component generation, configured in lumo.properties)
  • Java Compatibility: Java 17