TRPGのちょっとしたツールをまとめたようなアプリです。現在は以下のような機能を備えています。
- ダイス予測
- ダイスの期待値や確率を計算します
- ダイスロール
- シンプルなダイスロールおよびBCDiceを使ったダイスロールができます
- ログ解析
- ココフォリアのルームログからダイスの出目を解析します (クトゥルフ神話TRPG 6版・7版 二のみ対応)
- ココフォリア出力
- ココフォリアのキャラ出力形式をビジュアルで編集できます
機能追加のリクエストはサポート用のDiscordサーバーまでお願いします。
必要なもの: Node.js、pnpm
pnpm install
pnpm devpnpm audit で残る警告の大半は、next-pwa、Sentry、OpenNext などの開発・ビルド用推移依存です。
直接依存の互換更新と protobufjs の修正版への固定は行っていますが、上流が要求する版を越えた強制 override は互換性を壊すため行いません。
依存元が修正版を採用した時点で通常の pnpm update により解消します。
src
├── app # Next.jsのルート、画面固有UI、機能の組み立て
├── features # 機能ごとのドメインロジックと外部サービス連携
├── shared # 機能に依存しないUI、ライブラリ、基盤コード
└── test # 複数のテストから使う補助コード
app はルーティングと機能の組み立てを担当します。
画面内だけで完結する表示状態とコンポーネントは、対象ルートの _components に置きます。
features はログ解析、期待値計算、アカウント、プロフィール、Stripeなどの機能単位で分けます。
計算規則、永続化、外部APIとの契約は、利用する画面ではなく所有する機能に置きます。
shared は特定機能を知らないコードだけを置きます。
Firebaseの初期化や汎用UIは含みますが、ユーザー購読や解析保存などの機能固有処理は含みません。
依存方向は app -> features -> shared を基本とします。
appはfeaturesとsharedを利用できます。featuresはsharedを利用できますが、appを参照できません。sharedはappとfeaturesを参照できません。- 機能間の依存は、
accountやprofileのように複数機能を調整する処理に限定します。
この依存方向と循環依存は Oxlint で検査します。 機能ロジックを変更するときは、同じディレクトリに正常系と異常系のテストを追加します。
