mirror of
https://github.com/spacedriveapp/spacedrive.git
synced 2026-04-19 05:59:16 -04:00
- Introduced a new `Command` trait to streamline action execution, reducing boilerplate and enhancing type safety. - Updated the `Core` API to include `execute_command` and `execute_query` methods, providing a unified interface for command and query operations. - Implemented the `Command` trait for `LibraryCreateAction`, ensuring compatibility with existing ActionManager functionality. - Enhanced the API design documentation to reflect the new CQRS structure and its benefits. These changes improve the clarity and maintainability of the action system while preserving existing functionality.
Spacedrive Core v2 Documentation
A unified, simplified architecture for cross-platform file management.
Overview
Core v2 is a complete rewrite of Spacedrive's core system, designed to address the architectural issues identified in the original codebase. It implements a clean, event-driven architecture with unified file management and a dramatically simplified job system.
Key Improvements
✅ Unified File System
- Single API for all file operations (no more dual indexed/ephemeral systems)
- Consistent behavior across all file management scenarios
- Bridge operations between different storage modes
✅ Event-Driven Architecture
- Replaced query invalidation with proper event bus
- Type-safe events for state changes
- Decoupled frontend/backend communication
✅ Modern Database Layer
- SeaORM instead of abandoned prisma-client-rust
- Optimized storage with 70%+ space savings for large file collections
- Proper migrations and database versioning
✅ Simplified Job System
- 50 lines vs 500+ lines to create new jobs
- Automatic serialization with MessagePack
- Type-safe progress reporting
- Database persistence with resume capabilities
✅ Clean Domain Models
- Entry-centric design where every file/folder has metadata by default
- Optional content identity for deduplication
- Unified device management (no more Node/Device/Instance confusion)
What's Complete
- Core initialization and lifecycle
- Library management (create, open, close, discovery)
- Device management with persistent identity
- Domain models (Entry, Location, Device, UserMetadata, ContentIdentity)
- Database layer with SeaORM and migrations
- Job system infrastructure with example jobs
- Event bus for decoupled communication
- File operations foundation (copy jobs)
- Indexing operations foundation
- Comprehensive tests and working examples
Architecture Documents
- Architecture Overview - High-level system design
- Domain Models - Core business entities and their relationships
- Job System - Background task processing and job management
- Database - Data persistence and storage optimization
- Examples - Working code examples and usage patterns
Quick Start
use sd_core_new::Core;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Initialize core
let core = Core::new().await?;
// Create a library
let library = core.libraries
.create_library("My Library", None)
.await?;
println!("Library created: {}", library.name().await);
println!("Path: {}", library.path().display());
// Core automatically handles cleanup on drop
Ok(())
}
Running Examples
# Library management demo
cargo run --example library_demo
# Job system demo
cargo run --example job_demo
# File type system demo
cargo run --example file_type_demo
Running Tests
# Run all tests
cargo test
# Run specific test modules
cargo test library_test
cargo test job_system_test
cargo test indexer_job_test
Project Status
Core v2 provides a solid foundation for Spacedrive's file management capabilities. The architecture is designed to be:
- Simple - Fewer abstractions, clearer responsibilities
- Maintainable - Modern Rust patterns, comprehensive tests
- Extensible - Event-driven design, pluggable job system
- Performant - Optimized database schema, efficient operations
Next Steps
- API Layer - GraphQL/REST API implementation
- Advanced Search - Full-text search with SQLite FTS5
- Sync System - Cloud/P2P synchronization using third-party solutions
- Media Processing - Thumbnail generation and metadata extraction
- File Watching - Real-time filesystem monitoring
Contributing
See the examples for detailed usage patterns and the architecture docs for implementation guidance.