No description
  • Rust 69.4%
  • Shell 13.9%
  • JavaScript 7.7%
  • HTML 6.4%
  • Makefile 2.2%
  • Other 0.4%
Find a file
Mahmoud Emad e4179fba3e
All checks were successful
Build / ci (push) Successful in 4m41s
Build / build-linux (linux-arm64, true, aarch64-unknown-linux-gnu) (push) Successful in 1m53s
Build / build-linux (linux-amd64, false, x86_64-unknown-linux-musl) (push) Successful in 2m4s
Merge pull request 'Merge pull request 'Update master' (#7) from development into main' (#8) from main into development
Reviewed-on: #8
2026-04-05 14:36:49 +00:00
.claude init 2026-02-21 09:10:47 +03:00
.forgejo/workflows chore: disable macOS CI workflow — no runner available 2026-04-05 15:34:36 +02:00
crates fix: add rustls-tls 2026-04-05 16:00:08 +02:00
scripts Refactor hero_sync: restructure crates, consolidate modules, and update dependencies 2026-03-01 18:43:21 +03:00
services Refactor to multi-crate workspace with OpenRPC (JSON-RPC 2.0) architecture 2026-02-21 15:55:39 +03:00
.gitignore Refactor to multi-crate workspace with OpenRPC (JSON-RPC 2.0) architecture 2026-02-21 15:55:39 +03:00
buildenv.sh Refactor hero_sync: restructure crates, consolidate modules, and update dependencies 2026-03-01 18:43:21 +03:00
Cargo.lock fix: add rustls-tls 2026-04-05 16:00:08 +02:00
Cargo.toml fix: cargo check, remove local paths 2026-04-05 11:24:04 +02:00
Makefile Refactor hero_sync: restructure crates, consolidate modules, and update dependencies 2026-03-01 18:43:21 +03:00
README.md Refactor hero_sync: restructure crates, consolidate modules, and update dependencies 2026-03-01 18:43:21 +03:00
SPEC.md Implement hero_sync multi-protocol file synchronization 2026-02-21 09:07:19 +03:00
test_server.sh Initialize Hero WebDAV project structure 2026-02-19 08:49:39 +03:00

Hero Sync

Multi-protocol file synchronization for the Hero Ecosystem.

Workspace Structure

This is a Cargo workspace with 5 crates:

Crate Type Description
hero_sync_sdk library SDK: types, config, error handling, and async Unix socket client
hero_sync_server binary OpenRPC backend server (Unix socket only, no UI)
hero_sync binary CLI tool for managing sync profiles and running sync operations
hero_sync_ui binary Web dashboard UI with embedded static assets (Bootstrap, Unpoly)
hero_sync_examples examples Example programs demonstrating SDK usage

Dependency graph

hero_sync_sdk  (no internal deps)
     ^         ^          ^
     |         |          |
    CLI        UI      examples

hero_sync_server  (standalone — business logic + OpenRPC)

Sockets

Service Binding Path
hero_sync_server Unix socket (OpenRPC) ~/hero/var/sockets/hero_sync_server.sock
hero_sync_ui Unix socket (HTTP + /rpc proxy) ~/hero/var/sockets/hero_sync_ui.sock

No service binds TCP. Only hero_proxy exposes TCP.

Building

# Build all crates (release)
make build

# Build specific crate
cargo build --release -p hero_sync
cargo build --release -p hero_sync_server

Running

# Start server + UI (server on socket, UI on socket)
make run

# Use the CLI
./target/release/hero_sync list
./target/release/hero_sync sync <profile>
./target/release/hero_sync pull <profile>
./target/release/hero_sync push <profile>
./target/release/hero_sync health

Development

make check      # Fast type-check all crates
make test       # Run all tests
make fmt        # Format code
make lint       # Run clippy
make rundev     # Run server + UI in debug mode

Static Assets

The web dashboard uses Bootstrap 5, Bootstrap Icons, and Unpoly. To download/update these:

make download-assets

Assets are embedded into the hero_sync_ui binary via rust-embed.