77 lines
2.4 KiB
Markdown
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. |