-
Notifications
You must be signed in to change notification settings - Fork 0
Tech Stack
a.ito edited this page Jul 15, 2026
·
1 revision
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)の読み書き。各ノート .cson と boostnote.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 Sync ・ Home