2.4 KiB
2.4 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Commands
Build & Run
# Build all workspace members
cargo build
# Build specific package
cargo build -p kordophone
cargo build -p kordophone-db
cargo build -p kordophoned
cargo build -p kpcli
# Run daemon
cargo run --bin kordophoned
# Run CLI tool
cargo run --bin kpcli -- --help
Testing
# Run all tests
cargo test
# Run tests for specific package
cargo test -p kordophone
cargo test -p kordophone-db
Database Operations
# Database migrations (from kordophone-db directory)
cd kordophone-db
diesel migration run
diesel migration revert
Architecture
This is a Rust workspace with 4 main packages forming a messaging client/daemon system:
Core Components
- kordophone: Core library providing API client and models for messaging operations
- kordophone-db: Database layer using Diesel ORM with SQLite, handles conversations/messages storage
- kordophoned: Background daemon that syncs with messaging server and exposes D-Bus interface
- kpcli: Command-line interface for interacting with daemon and performing database operations
Key Architecture Patterns
- D-Bus IPC: Daemon exposes functionality via D-Bus at
net.buzzert.kordophonecd - Event-driven: Daemon uses async channels for internal communication and D-Bus signals for external notifications
- Repository Pattern: Database access abstracted through repository layer in kordophone-db
- Workspace Dependencies: Packages depend on each other (kordophoned uses both kordophone and kordophone-db)
Data Flow
- kpcli/external clients interact with kordophoned via D-Bus
- kordophoned manages HTTP API client connections to messaging server
- Background sync processes fetch data and store via kordophone-db repository
- D-Bus signals notify clients of data updates (ConversationsUpdated, MessagesUpdated)
Important Files
kordophone-db/diesel.toml: Database configurationkordophone-db/migrations/: Database schema definitionskordophoned/include/net.buzzert.kordophonecd.Server.xml: D-Bus interface definition*/build.rs: D-Bus code generation for dbus-crossroads interfaces
Settings Storage
Settings are persisted in SQLite database using a key-value store approach. Access via Settings struct in kordophone-db.