A comprehensive, high-performance file synchronization application built in Rust with PocketBase backend. Sync App provides real-time file synchronization, conflict resolution, and monitoring capabilities with both CLI and daemon interfaces.
-
Clone and Build
git clone https://github.com/yourusername/sync-app.git cd sync-app cargo build --release -
Start PocketBase Backend
# On Windows .\pocketbase\setup.ps1 # On Linux/macOS ./pocketbase/setup.sh
-
Run Your First Sync
# Add a sync configuration ./target/release/sync add --name "documents" --source "./test-source" --dest "./test-backup" # Run the sync ./target/release/sync run <config-id>
-
Start the Daemon (Optional)
./target/release/daemon start --config ./daemon/examples/daemon-config.toml
-
Launch Web UI (Optional)
./target/release/ui # Open http://localhost:3000
sync-app/
├── sync-core/ # Core synchronization engine
├── sync-cli/ # Command line interface
├── sync-server/ # Server component
├── sync/ # Sync library with conflict resolution
├── daemon/ # Background daemon service
├── ui/ # Web-based user interface
├── pocketbase/ # PocketBase backend setup
├── docs/ # Comprehensive documentation
├── packaging/ # Distribution packages
└── scripts/ # Build and release scripts
- 🔄 Real-time Synchronization: Bidirectional sync with file watching
- ⚡ High Performance: Optimized Rust implementation with async I/O
- 🛠️ Conflict Resolution: Smart conflict detection and resolution strategies
- 📊 Monitoring & Telemetry: Prometheus metrics and structured logging
- 🌐 Web Interface: Modern React-based UI for management
- 🔧 Flexible Configuration: TOML-based configuration with live reload
- 📦 Cross-platform: Windows, Linux, and macOS support
- 🔒 Secure: Built-in authentication and encrypted transfers
- Development Teams: Keep codebases synchronized across environments
- Content Creators: Sync media files between workstations
- Remote Work: Maintain consistent file structures across devices
- Backup Solutions: Automated incremental backups with versioning
- CI/CD Pipelines: Sync build artifacts and deployment files
graph TB
A[CLI Interface] --> B[Sync Core]
C[Web UI] --> B
D[Daemon Service] --> B
B --> E[PocketBase Backend]
B --> F[File System]
G[File Watcher] --> D
H[Scheduler] --> D
I[Metrics Endpoint] --> D
- Quick Start Guide - Get up and running in minutes
- Production Deployment - Production-ready setup guide
- Configuration Reference - Complete configuration options
- CLI Usage - Command-line interface documentation
- Troubleshooting - Common issues and solutions
- Examples - Real-world usage examples
- Rust 1.70+ (stable toolchain)
- Git
- Node.js 18+ (for UI development)
# Debug build
cargo build
# Release build
cargo build --release
# Build specific component
cargo build --bin sync-cli# Run all tests
cargo test --workspace
# Run integration tests
cargo test --test integration_tests
# Test with coverage
cargo tarpaulin --all-features --workspace# Format code
cargo fmt
# Lint code
cargo clippy -- -D warnings
# Security audit
cargo auditDownload from GitHub Releases
# Homebrew (macOS/Linux)
brew install sync-app
# Chocolatey (Windows)
choco install sync-app
# Cargo
cargo install sync-app# Run daemon in container
docker run -d --name sync-daemon \
-v /path/to/config:/config \
-v /path/to/data:/data \
sync-app:latest- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests and linting (
cargo test && cargo clippy) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
See CONTRIBUTING.md for detailed guidelines.
This project is licensed under the GNU Affero General Public License v3.0 - see the LICENSE file for details.
- PocketBase for the excellent backend framework
- Tokio for async runtime
- Tauri for desktop application framework
- The Rust community for amazing crates and tools
- 📖 Documentation: https://yourusername.github.io/sync-app/
- 🐛 Issues: GitHub Issues
- 💬 Discussions: GitHub Discussions
- 📧 Email: support@example.com