Folioはローカルサーバのストレージに保存されたスキャン資料を有効活用することを目的として設計されたシステムです。
- Library / Collection / Bookを単位としてスキャン資料を自由に整理できます。
- 書籍やページには永続性のある静的なURLが与えられ、Wikiなどから自由に参照できます。
- 各書籍には、BibTeXと互換性のある書誌情報の他、目次情報を保存できます。
- 各画像ページには、タグ・メモ・マーカーなどの注釈情報を保存できます。
このプロジェクトの設計情報は docs/ 以下に整理されています。
docs/
vision/ なぜ作るか(思想・方向性)
requirements/ 何を作るか(要求・ユースケース)
architecture/ どう構成するか(全体構造)
design/ モジュール設計・UI設計
specs/ API・データ・フォーマット仕様
decisions/ ADR(設計判断ログ)
guides/ 使い方・開発ガイド
reference/ 用語・定数・一覧
roadmap/ 将来計画
vision/
- プロダクトの目的・思想・前提条件・非ゴールを定義します。
- すべての設計判断の基礎となるレイヤーです。
requirements/
- 解決すべき課題やユーザーの要求を記述します。
- 機能ではなく「ユーザー体験として何が必要か」を扱います。
architecture/
- システム全体の構成を定義します。
- 技術選定、コンポーネント分割、データフローなどを含みます。
design/
- 各機能やモジュールの具体的な設計を記述します。
- UI構造や内部ロジックの分解などが対象です。
specs/
- API仕様、データ構造、ファイルフォーマットなどの 機械が解釈可能な「契約」を定義します。 実装が一致すべき「唯一の正解」を定義する層です。
- 入出力の厳密なスキーマ
- エンドポイント仕様
- JSON / DB / ファイル構造
- エンコーディングやフォーマット規則
- アルゴリズムや処理手順の確定仕様
decisions/
- 設計上の意思決定ログ(ADR)を記録します。
- なぜその選択をしたのかを追跡可能にします。
guides/
- 利用方法や開発手順などの実用的なガイドをまとめます。
reference/
- システム全体で共有される「意味・対応関係・基準」を集約します。 実装ではなく「理解のための共通認識」を定義する層です。
- 用語(Glossary)
- ID体系(UUID, slug, pathルールなど)
- 定数・列挙型(status, type, flags)
- データ構造の一覧
- ファイル形式・命名規則
- 外部仕様との対応関係
roadmap/
- 将来の機能追加や改善計画を管理します
- 実装のフェーズ制御(time-based constraint)
- Folioは探究心のある個人のために作られたセルフホスティングアプリであり一般公開やコラボレーションを想定していない。