Add CLAUDE.md for Claude Code guidance

Provides build commands, architecture overview, and code organization
for future Claude Code instances working in this repository.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Harish Vishwakarma 2026-01-15 09:48:59 +05:30
parent d69aa5a7b6
commit d497546366
1 changed files with 101 additions and 0 deletions

101
CLAUDE.md Normal file
View File

@ -0,0 +1,101 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Build Commands
```bash
# Build debug APK
./gradlew assembleDebug
# Build release APK (requires signing config in zekobuild.properties)
./gradlew assembleRelease
# Run lint checks
./gradlew lint
# Run Kotlin linting (kotlinter)
./gradlew lintKotlin
./gradlew formatKotlin # Auto-fix lint issues
# Run tests
./gradlew test # Unit tests
./gradlew connectedAndroidTest # Instrumented tests (requires device/emulator)
# Clean build
./gradlew clean
# Generate SQLDelight classes
./gradlew generateSqlDelightInterface
```
## Architecture Overview
**Zeko Chat** (formerly Peptide) is a Kotlin/Jetpack Compose chat application connecting to the Peptide platform.
### Tech Stack
- **UI**: Jetpack Compose 2025.03.00 with Material3
- **DI**: Dagger Hilt 2.52
- **Networking**: Ktor 3.0.0-beta-2 (HTTP + WebSocket for real-time)
- **Database**: SQLDelight 2.0.1 (type-safe SQL)
- **State**: Kotlin Coroutines + StateFlow
### Code Organization
```
app/src/main/java/chat/zekochat/
├── activities/ # Entry points (MainActivity, DeepLinkActivity, etc.)
├── api/ # Peptide API client
│ ├── routes/ # API endpoint definitions
│ ├── schemas/ # Serializable data classes
│ ├── realtime/ # WebSocket handling
│ └── settings/ # Feature flags and experiments
├── composables/ # Reusable Compose UI components
│ ├── screens/ # Full-screen composables
│ ├── chat/ # Chat-specific components
│ └── sheets/ # Bottom sheets
├── screens/ # Screen ViewModels
├── persistence/ # KVStorage (DataStore), SqlStorage (SQLDelight)
├── di/ # Hilt modules
├── ndk/ # JNI bindings
└── PeptideApplication.kt # @HiltAndroidApp entry
```
### Key Patterns
- **MVVM with StateFlow**: ViewModels expose `StateFlow<UiState>` consumed by Composables
- **Single Activity**: Navigation via Jetpack Navigation Compose with typed routes
- **API Layer**: `AppAPI.kt` is the central HTTP/WebSocket client; routes organized by domain
- **Feature Flags**: `Experiments` system for toggling features (e.g., "usePolar" for alternate UI)
### Native Code (NDK)
Located in `app/src/main/cpp/`:
- **stendal**: JNI library binding
- **cmark**: CommonMark markdown parser (external submodule)
- Built with CMake 3.22.1; requires 16KB page alignment for Android 15+
### SQLDelight
Schema files in `app/src/main/sqldelight/`. Generated code goes to `com.zekochat.persistence`.
### Build Configuration
- **Debug**: App suffix `.debug`, pseudo-locales enabled
- **Release**: ProGuard minification, requires keystore config in `zekobuild.properties`
- **Signing**: Configure in `zekobuild.properties`:
```properties
keystore.file=/path/to/keystore.jks
keystore.password=xxx
key.alias=xxx
key.password=xxx
```
### Navigation Routes
Auth flow: `choose-platform``login/greeting``login``mfa``onboarding`
Main screens: `chat`, `main` (Polar experiment), `settings/*`, `discover`
### Deep Links
Handles `app.peptide.chat/invite/*`, `rvlt.gg/*`, `peptide.chat/*` via intent filters in AndroidManifest.xml.