No description
- HTML 45.8%
- Ruby 39.4%
- PLpgSQL 9.7%
- CSS 2.7%
- JavaScript 1.1%
- Other 1.3%
Adds a "Claudeへの渡し方" section matching the turn export page style, with step-by-step instructions and a copy-paste prompt for generating the digest novel from full-turn JSON data. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .github | ||
| app | ||
| bin | ||
| config | ||
| db | ||
| docker | ||
| docs | ||
| lib/tasks | ||
| log | ||
| public | ||
| script | ||
| storage | ||
| test | ||
| tmp | ||
| vendor | ||
| world_files/sample | ||
| .dockerignore | ||
| .gitattributes | ||
| .gitignore | ||
| .rubocop.yml | ||
| .ruby-version | ||
| config.ru | ||
| Dockerfile | ||
| Gemfile | ||
| Gemfile.lock | ||
| package-lock.json | ||
| package.json | ||
| Procfile.dev | ||
| Rakefile | ||
| README.md | ||
PBW(Play By Web)
Web上でPlay By Mail形式のTRPGを運営・プレイするためのシステムです。
概要
- GMが世界観・シナリオ・ターンを管理し、プレイヤーが行動を提出する
- AIアシスタント(Claude)との連携でターンリプライを自動生成
- Hotwire(Turbo + Stimulus)によるインタラクティブなUI
技術スタック
| カテゴリ | 技術 |
|---|---|
| バックエンド | Ruby on Rails 8.1 / Ruby 4.0 |
| データベース | PostgreSQL 17 |
| フロントエンド | Hotwire(Turbo + Stimulus)/ Tailwind CSS |
| 認証 | Devise + OmniAuth(Google / X) |
| Markdown | Redcarpet |
| ページネーション | Pagy |
| ジョブキュー | Solid Queue |
| デプロイ | Docker Compose |
ドキュメント
docs/gm_manual.md— GMマニュアル(World作成からゲーム終了まで)docs/player_guide.md— プレイヤーガイドdocs/design_draft.md— 設計書docker/INSTALL.md— 本番環境セットアップ手順
ローカル環境のセットアップ
必要条件
- Ruby 4.0.2
- PostgreSQL 17(ポート: 5433)
- Node.js(Tailwind CSS用)
セットアップ手順
# 依存関係のインストール
bundle install
npm install
# データベースの作成・マイグレーション・シードデータ投入
bin/rails db:create db:migrate db:seed
# 開発サーバーの起動
bin/rails server
環境変数
.env ファイルをプロジェクトルートに作成し、以下を設定してください。
DATABASE_URL=postgresql://localhost:5433/pbw_development
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=yourpassword
主な機能
プレイヤー向け
- トップページのPBW紹介文・プレイヤーガイド(
/guide) - 世界観・シナリオ閲覧(ログイン不要)
- 世界観サブヘッダー(アイコン・ナビリンク)が全世界観ページに表示
- 設定資料集・掲示板・キャラクター一覧・エリア(地図表示対応)・派閥の各ページ
- キャラクター作成・管理(World内最大3体)
- ターン行動提出(秘密行動対応)
- 個人リプライ・共通リプライ・共有イベントの閲覧
- 配信済みターンでの自分の提出行動確認
- 掲示板(スレッド・投稿)
GM向け
- 世界観(World)・シナリオ(Game)管理
- エリア・派閥・キャラクター管理
- ファイル管理(世界観アイコン・エリア地図・設定資料MDファイルのアップロード・削除)
- 設定資料(導入・シナリオ追加説明・ルール)管理
- 世界状態管理(GMのみ非公開フラグ対応)
- ターン管理(受付開始 → 締切 → 配信)
- ターンごとのリプライ方針入力(AIへの指示)
- GMイベント・共有イベント管理
- AIエクスポート / インポート(Claude連携)
- 総まとめ小説(Digest)管理・公開
管理者向け
- ユーザー管理・ロール変更
本番環境
Docker Compose による構成です。詳細は docker/INSTALL.md を参照してください。
konbase(LAN): app / worker / db / redis
konvps(さくらVPS): Nginx + Let's Encrypt(リバースプロキシ)
ディレクトリ構成(主要部分)
app/
├── controllers/
│ ├── gm/ # GM管理画面コントローラー
│ └── admin/ # 管理者画面コントローラー
├── models/
├── services/
│ ├── ai_export_service.rb # ターンデータをAI用JSONに変換
│ └── ai_import_service.rb # AI生成JSONをDBに取り込む
└── views/
├── gm/
└── admin/
docs/
├── gm_manual.md
├── player_guide.md
└── design_draft.md
docker/
├── docker-compose.yml
├── deploy.sh
└── INSTALL.md
docs/
├── gm_manual.md
├── player_guide.md # /guide で表示されるプレイヤーガイド(Markdown編集可)
└── design_draft.md
world_files/
└── {world_files_path}/ # 世界観ごとのディレクトリ
├── _icon.{ext} # 世界観アイコン(GM管理画面からアップロード)
├── _map.{ext} # エリア地図(GM管理画面からアップロード)
└── *.md # 設定資料集MDファイル(GM管理画面からアップロード)
ライセンス
Private