This document covers the Dart implementation of the locorda specification.
The Dart implementation is organized as a monorepo with the following packages:
-
locorda_core: Platform-agnostic sync logic and CRDT implementations- Abstract interfaces (
Auth,Storage) - CRDT types (
LwwRegister,FwwRegister,OrSet) - Hybrid Logical Clock implementation
- Sync strategies and engine
- Pure Dart - no platform dependencies
- Abstract interfaces (
-
locorda_solid_auth: Solid Pod authentication integration- Concrete implementation of
Auth - Integration with solid-auth library
- Auth UI components:
SolidLoginScreen,SolidStatusWidget - Depends on: Flutter + locorda_core + solid_auth
- Concrete implementation of
-
locorda_solid_ui: Flutter UI components for sync functionality- Pure sync-related UI components that don't depend on auth state
- Depends on: Flutter + locorda_core
TBD
This project uses Melos for multipackage management:
git clone https://github.com/locorda/locorda.git
cd locorda
dart pub get
dart pub run melos bootstrap# Run tests across all packages
dart pub run melos test
dart tool/run_tests.dart # With usage guidance
# Code quality
dart pub run melos analyze
dart pub run melos format
dart pub run melos lint
# Version and release management
dart pub run melos version # Update versions + changelog
dart pub run melos publish # Publish to pub.dev
dart pub run melos release # Preview full releaseAdditional packages planned:
packages/
├── locorda_core/ # ✅ Platform-agnostic core
├── locorda_solid_auth/ # 🚧 Authentication bridge
├── locorda_solid_ui/ # ✅ Flutter UI components
├── locorda_drift/ # 📋 Drift storage backend
This implementation follows the 4-layer architecture defined in the specification:
- Data Resource Layer → Core RDF handling in
locorda_core - Merge Contract Layer → CRDT implementations in
locorda_core - Indexing Layer → Performance optimization in
locorda_core - Sync Strategy Layer → Application strategies in
locorda_core
Platform-specific concerns (authentication, storage, UI) are separated into dedicated packages while keeping the core logic pure and reusable.