HyperDrive 仕様書

HyperDrive(storage プロジェクト)の仕様ドキュメント入口。詳細は各リンク先を参照すること。


1. プロジェクト概要

サービス名: HyperDrive

コンセプト・解決する問題

Google Drive の利便性をベースに、P2P 技術によるプライバシー保護AI による高度なセマンティック検索を統合した、セルフホスト可能な個人用ナレッジ・管理システム。

主な解決課題:

領域 解決する問題
P2P インシデント共有 共有リンクの発行や権限設定の手間を省き、合言葉だけでセキュアな受け渡しを可能にする。機密ファイルはデバイス間で完結し、サーバーに実体やログが残らない
ベクトル検索 「内容は覚えているがファイル名・保存場所がわからない」問題を、曖昧なワード(例: 「青い空の画像」「去年の会議資料」)で解決する
OCR 検索 スクリーンショットや領収書など、画像内にしかない情報をテキスト検索の対象にする

対象ユーザー

  • 一般ユーザー: 直感的なファイル共有と高度な検索機能を求める層
  • パワーユーザー: 自分のデータを自分で管理(セルフホスト)し、プライバシーを重視するエンジニア層

既存サービスとの差別点

  Google Drive Microsoft OneDrive HyperDrive
データの管理 企業 企業 セルフホスト可能
検索機能 高度なラベル探し 文脈の理解 全データをベクトル化
ファイル共有 サーバー経由 サーバー経由 P2P
ターゲット web完結派, スマホユーザー Windowsユーザー, Officeユーザー 一般ユーザー、パワーユーザー

2. 技術スタック

カテゴリ 技術 補足
DB PostgreSQL + SeaORM 生SQL禁止 → overview.md
Backend Rust -
Frontend TanStack Start -
Session Valkey -
監視 Grafana / Prometheus / Loki -
Storage RustFS -
Python FastAPI ベクトル化・OCR処理 multilingual-e5(ベクトル化)、PaddleOCR/EasyOCR(OCR)を実行するサービス
Qdrant ベクトルDB ファイル内容のベクトル保存・HNSW近傍探索
Plasmo ブラウザ拡張 ブラウザ上での画像キャプチャ・OCR送信

3. データベース設計方針

物理削除(Row を消す操作)は行わない。別途フラグを持つことで削除したことにする。


4. APIエンドポイント一覧(早見表)

※ フォルダー系作成・削除のエンドポイントに typo あり (/v1/forders)

カテゴリ 機能 メソッド エンドポイント 認証要否 詳細
アカウント系 作成 POST /v1/auth/register 不要 アカウント系/作成.md
アカウント系 ログイン POST /v1/auth/login 不要 アカウント系/ログイン.md
アカウント系 ログアウト POST /v1/auth/logout アカウント系/ログアウト.md
アカウント系 現在ユーザー(実装のみ) GET /v1/auth/me セッション確認用。仕様早見表の /v1/accounts/me とは別パス
アカウント系 変更 PATCH /v1/accounts/:id アカウント系/変更.md
アカウント系 削除 DELETE /v1/accounts/me 要(管理者権限) アカウント系/削除.md
アカウント系 凍結 PATCH /v1/accounts/:id/freeze 要(管理者権限) アカウント系/凍結.md
アカウント系 凍結解除 PATCH /v1/accounts/:id/unfreeze 要(管理者権限・凍結状態) アカウント系/凍結解除.md
アカウント系 プロフィール取得 GET /v1/accounts/me アカウント系/プロフィール取得.md
アカウント系 一覧 GET /v1/accounts 要(管理者権限) アカウント系/一覧.md
ファイル系 アップロード POST /v1/files ファイル系/アップロード.md
ファイル系 一覧 GET /v1/files 任意(open共有は不要、secret共有は要) ファイル系/一覧.md
ファイル系 マイファイル一覧 GET /v1/files/mine ファイル系/マイファイル一覧.md
ファイル系 更新 PATCH /v1/files/:id ファイル系/更新.md
ファイル系 削除 DELETE /v1/files/:id ファイル系/削除.md
ファイル系 ゴミ箱 GET /v1/files/trash ファイル系/ゴミ箱.md
ファイル系 ゴミ箱から復元 POST /v1/files/trash/:id/restore ファイル系/復元.md
ファイル系 ゴミ箱を空にする DELETE /v1/files/trash ファイル系/ゴミ箱空.md
ファイル系 閲覧 GET /v1/files/:id 任意 ファイル系/閲覧(要修正).md
ファイル系 リンク共有 POST /v1/files/:id/links 要(公開フラグ要) ファイル系/共有系/リンク共有.md
ファイル系 共有リンク一覧 GET /v1/files/:id/links ファイル系/共有系/共有リンク一覧.md
ファイル系 共有リンク削除 DELETE /v1/files/:id/links/:link_id ファイル系/共有系/共有リンク削除.md
ファイル系 合言葉共有 POST /v1/files/watchword 要(合言葉共有トグル要) ファイル系/共有系/合言葉共有.md
ファイル系 ダウンロード GET /v1/files/:id/download ファイル系/共有系/ダウンロード.md
フォルダー系 作成 POST /v1/forders フォルダー系/作成.md
フォルダー系 一覧 GET /v1/folders フォルダー系/一覧.md
フォルダー系 更新 PATCH /v1/folders/:id フォルダー系/更新.md
フォルダー系 削除 DELETE /v1/forders/:id フォルダー系/削除.md
検索系 内容検索 GET /v1/search 検索系/内容検索.md
検索系 ベクトル検索 GET /v1/search 検索系/ベクトル検索.md
検索系 ファイル名検索 GET /v1/search 検索系/ファイル名検索.md
検索系 アカウント名検索 GET /v1/search 要(管理者権限) 検索系/アカウント名検索.md
検索系 OCR検索 GET /v1/search 検索系/OCR検索.md
P2P シグナリング WS /v1/ws/watchword インフラ/WebSocketシグナリングエンドポイント.md

5. その他ドキュメント

5.1 凍結アカウントの挙動

凍結時の挙動.md

5.2 UIコンポーネント一覧

コンポーネント.md

5.3 コーディング規則

コーディング規則.md

5.4 開発環境セットアップ

開発環境.md

5.5 インフラ・外部サービス仕様

5.6 共通仕様

5.7 その他インフラ

5.8 実装ガイド(開発者向け)

5.9 P2Pファイル転送(詳細)