プログラミング
Show HN: Syncular – TypeScriptとRustコアによるオフラインファーストSQL同期
Show HN: Syncular – offline-first SQL sync with TypeScript and Rust cores (github.com)
要約
Syncularは、サーバー権威型でオフラインファーストのSQL同期システムです。クライアントはローカルSQLiteデータベースを使用し、書き込みは楽観的アウトボックスを経由します。サーバー上の順序付けされたコミットログが真実の源となります。TypeScriptとRustのコアを持ち、仕様駆動で開発されています。
全文翻訳
syncular サーバー権威型、オフラインファーストのSQL同期。クライアントはローカルのSQLiteデータベース(ブラウザではOPFS、それ以外ではネイティブSQLite)を保持し、書き込みは楽観的アウトボックスを経由し、サーバー上の1つの順序付けられたコミットログが真実の源となります。
ドキュメント
クイックスタート
ライブデモ
ベンチマーク
ブログ
bun create syncular-app my-app
リポジトリの構築方法
仕様ファースト: SPEC.md が規範であり、spec/vectors/ がゴールデンフィクスチャです。仕様とコードが一致しない場合は、コードが変更されます。2つのコア(TypeScriptとRust)は、実装に依存しない適合性スイートによって同期が保たれます。
テストドクトリン: 統合シナリオのためのループバックインメモリトランスポート。トランスポートインターフェースでのフォールトインジェクション。テストは明示的な準備完了シグナルを待ちます(スリープは禁止)。リアルソケットテストは少数で隔離されています。packages/conformance を参照してください。
1つの良いパス: ブラウザはOPFSに永続化し、サポートされていない環境をエラーとして報告します。同期はWebSocket over で実行されます。
レイアウトパス
それが何であるか
packages/core プロトコルコーデック、共有型、ベクターラウンドトリップ
packages/server handleSyncRequest(bytes, ctx) + ストレージ/認証インターフェース(SQLite、Postgres、D1)
packages/server-hono, packages/server-workers フレームワークバインディング(Hono、Cloudflare Workers)
packages/web-client @syncular/client: @sqlite.org/sqlite-wasm 上のTSクライアントコア
packages/react クライアント上のReactフック
packages/typegen スキーマIR + TypeScriptエミッタ、名前付きクエリ(cargo-free)
packages/crypto, packages/crdt-yjs カラムごとのE2EEプリミティブ、Yjs CRDTマージャー
packages/testing @syncular/testkit: リアルサーバー+クライアントのインメモリループバック
packages/conformance 両方のコアがパスする必要があるシナリオランナー
rust/ RustクライアントコアとそのC-ABI FFIクレート
bindings/ Tauri、React Native、Swift、Kotlin、Flutterアプリ
docs/ ドキュメントサイト(syncular.dev)
コマンド
bun install
bun run check # typecheck + lint + test
コントリビューティング
最初にAGENTS.mdを読んでください。その中のドクトリン(仕様ファースト、フォールバックなし、テストでのタイマーなし、クロスコアパリティ)は、人間と機械のコントリビューターの両方に適用されます。
AI支援について: LLMは、テスト、再現、ベンチマーク、ドキュメント、本番コードに歓迎されます。提出するすべてのものをレビュー、理解、反復し、すべての行を擁護する準備をしてください。本番コードは最も厳格なレビューを受けます。Syncular自身の開発では、LLM支援は主にテストの作成と技術的概念の反復に使用されており、同じレビュー基準が適用されます。低労力で機械生成されたPR、イシュー、コメントはコメントなしで閉じられます。エージェント向けの完全なポリシーとプレーンテキストドキュメントバンドルは、syncular.dev/llms で確認できます。