Private
Public Access
1
0
Files
Kordophone/core/CLAUDE.md
2025-09-06 19:33:33 -07:00

77 lines
2.4 KiB
Markdown

# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Commands
### Build & Run
```bash
# 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
```bash
# Run all tests
cargo test
# Run tests for specific package
cargo test -p kordophone
cargo test -p kordophone-db
```
### Database Operations
```bash
# 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
1. kpcli/external clients interact with kordophoned via D-Bus
2. kordophoned manages HTTP API client connections to messaging server
3. Background sync processes fetch data and store via kordophone-db repository
4. D-Bus signals notify clients of data updates (ConversationsUpdated, MessagesUpdated)
### Important Files
- `kordophone-db/diesel.toml`: Database configuration
- `kordophone-db/migrations/`: Database schema definitions
- `kordophoned/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.