Skip to content

Tech Stack

a.ito edited this page Jul 15, 2026 · 1 revision

技術スタック (Tech Stack)

The Boosters は Boostnote Legacy(BoostIO, GPL-3.0)を fork し、ビルド系と ランタイムを段階的にモダン化した ローカルファースト / バックエンドレス の ノートアプリです。「サーバを持たず、ノートを 1 ファイル = 1 ノートのプレーンな ファイル(.cson)として保存し、その保存フォルダをユーザー自身のクラウド同期 フォルダ(Dropbox / iCloud Drive / Google Drive / OneDrive)に置くことで 複数デバイス同期を実現する」というスキームが設計の核です。詳細は Backend-less Cloud Sync を参照。

版数は 現行インストール版(pnpm-lock.yaml 準拠) を実測して記載。依存更新で パッチは前後します。

レイヤ別スタック

レイヤ 採用技術 バージョン 備考
デスクトップシェル Electron 28.3.3 Chromium 120 / Node 18 系。旧 legacy は Electron 4
UI フレームワーク React + react-dom 16.14.0 Hooks 対応。class component と併存
状態管理 Redux + react-redux redux 3.7.2 / react-redux 7.2.9 action/reducer は browser/main/store.js
ルーティング connected-react-router 6.9.3 Redux 連携ルーター
エディタコア CodeMirror 5 5.65.21 Markdown ソース編集
Markdown レンダラ markdown-it 6.1.1 preview パイプライン
スタイル CSS Modules (Stylus) .styl ファイル
ビルド(本番/開発) Vite 6.4.3 vite build--watch で dev)。webpack 1 から移行
旧ビルド(撤去進行中) webpack / grunt webpack 1.15.0 / grunt 0.4.5 段階的に廃止
テスト Jest(コンポーネント)+ AVA(データ層) jest 22.4.4 / ava 0.25.0 npm test
Lint / Format ESLint + Prettier eslint 4.19.1 pre-commit で lint
パッケージング electron-builder mac universal / win x64、ad-hoc 署名

ストレージ / 永続化に関わる依存

パッケージ バージョン 役割
@rokt33r/season 5.3.1 CSON(CoffeeScript Object Notation)の読み書き。各ノート .csonboostnote.json の serialize/parse
sander 0.5.1 Promise ベースのファイル I/O(ノートの読み書き・存在確認・削除)
fs-extra 11.x 追加のファイル操作
electron-config 1.0.0 一部のマシンローカル設定(例: autoUpdateEnabled)の永続化
moment 2.30.1 createdAt / updatedAt の日時整形
lodash 4.x データ整形ユーティリティ全般
uuid / keygen 3.4.0 ノートキー生成(keygen(true)=uuid v4、ストレージキー=10 byte hex)

永続化の住所(どこに何が保存されるか)

データ 保存先 形式 同期対象か
ノート本文+メタデータ <storagePath>/notes/<key>.cson CSON(1 ノート 1 ファイル / season 経由) ✅ 同期する(クラウドフォルダに置く核)
フォルダ定義・ストレージメタ <storagePath>/boostnote.json JSON 互換(season/CSON で読み書き / folders[], version ✅ 同期する
添付画像 <storagePath>/attachments/<noteKey>/… バイナリ ✅ 同期する(本文の :storage 参照先)
ストレージ一覧(開く場所) localStorage['storages'] JSON(key/type/name/path/isOpen ❌ マシンローカル(各デバイスで登録)
アプリ設定 localStorage['config'] + ~/.boostnoterc JSON / RC ❌ 基本マシンローカル

ポイント: 同期されるのはストレージ「フォルダの中身」だけ。「どのフォルダを ストレージとして開くか」は各デバイスの localStorage にあるため、新デバイスでは クラウド同期フォルダ内の場所を一度手動で「ストレージを追加」する必要があります。

モダン化の方針(サマリ)

  • Legacy を製品としてそのまま延命しつつ、ビルド(webpack 1 → Vite)と Electron(4 → 28)を更新。React/Redux の大改修は避ける(互換維持)。
  • 将来のリアルタイム協調(Yjs CRDT / self-hosted Hocuspocus)は別トラックで検討中。 現行の「バックエンドレス=クラウドフォルダ同期」はその前段のベースライン。

関連ページ: Backend-less Cloud SyncHome

Clone this wiki locally