BluePeriod Project Overview
BluePeriodのプロジェクト全体像 — 機能、技術、開発規約
BluePeriod Project Overview
このドキュメントは、AIアシスタントおよびエージェント向けに、BluePeriodプロジェクトの全体像を伝えるエントリーポイントです。ブランド定義は 00_verbal_identity を、設計思想は 00_philosophies_of_blueperiod を参照してください。
1. プロジェクト概要
BluePeriodは、次世代のWeb文芸プラットフォームです。 「AI小説投稿サイト」ではなく、小説・技術書・エッセイ・漫画など、あらゆる「本(Book)」をAIと共に構築(Architect)し、公開(Publish)するための統合環境です。
コア・フィロソフィー
BluePeriod は確固たる信念に基づいて設計されています。詳細は 00_philosophies_of_blueperiod を参照してください。
- Serenity (静謐): 創造のための境界ある静寂。ノイズの排除とデータの安らぎ。
- Symbiosis (共生): 人間・AI・文化・言語が対等に交響する創作のバイオーム。
- Serendipity (邂逅): 文脈と質による、思わぬ発見。
2. 主要機能 (Product Features)
2.1 Bookshelf(プロジェクト管理)
ユーザーが作成したすべてのプロジェクトを一覧・管理するダッシュボードです。
- 新規プロジェクト作成、インポート、削除
- プロジェクトのメタデータ編集(タイトル、著者、カバー画像等)
- グローバル検索・フィルタリング
2.2 Project Editor(執筆環境)
単一のプロジェクトに特化した執筆ワークスペースです。3パネルレイアウトで構成されます。
- 左パネル(プロット): Part → Arc → Chapter → Story → Section の階層構造で物語を設計
- 中央パネル(原稿): セクションごとの執筆・編集。AIによるリライト・推敲機能
- 右パネル(AIアシスタント): プロジェクトコンテキストを理解したAIとの対話
2.3 AI Chat(AI対話機能)
AIとのチャット機能を提供する独立ページです(/ai)。
- 通常チャットモード: シンプルな質疑応答
- エージェントモード: LangGraph.jsによる自律型エージェント。Web検索、プロジェクトデータ参照、長期記憶を活用した複雑なタスク実行
- Long-Term Memory: Orama + Transformers.jsによるブラウザ内ベクトル検索。過去の会話を記憶・検索
- Session Artifacts: エージェントが収集した情報を「机の上の資料」として管理・再利用
2.4 Explore(作品探索)
公開された作品を閲覧・検索するページです(/explore)。「オンライン書店」のような役割を持ちます。
- ランキングではなく、AIレビューに基づく探索
- インライン・エクスパンダーによるスムーズな閲覧体験
- タグ・コレクションによる発見
2.5 Prompts(プロンプト管理)
アプリケーション全体で使用するAIプロンプトアセットを管理します(/prompts)。
- プロンプトカードの作成・編集・削除
- タグによる分類・検索
- クラウド同期対応
2.6 Sync(クラウド同期)
Local-Firstデータを安全にクラウドへ同期します。
- Simple Full Sync: IndexedDB全体を単一のバックアップファイルとしてエクスポートし、暗号化してクラウドにアップロードします。復元時はクラウド上のファイルをダウンロード・復号化し、ローカルデータを完全に置き換えます
- E2E暗号化: ユーザーのSync Keyでクライアントサイド暗号化。Zero-Knowledge Architecture
- 競合解決: 自動マージは行わず、常にユーザーの選択に基づきます(Cloud Newer / Local Newer / Synced の判定)
- Supabase Storage: 暗号化されたバックアップファイルを
user_backups/[user_id]/full_db_dump_sync/backup.encに保存
2.7 Publish(作品公開)
執筆した作品を公開するためのウィザードです(/project/{id}/publish)。
- AIレビューによる品質チェック
- カバー画像、OGP設定
- 静的化してWeb書籍として公開
3. 技術的特徴 (Technical Overview)
3.1 アーキテクチャ概要
- MPA (Multi-Page Application): 明確に責務が分離された複数ページで構成
- Local-First: データはまずIndexedDBに保存。オフライン動作可能(PWA)
- BFFパターン: 外部LLMとの通信はNext.js API Routesがプロキシ
詳細: 01_architecture
3.2 主要技術スタック
| カテゴリ | 技術 |
|---|---|
| Framework | Next.js 16 (App Router), React, TypeScript |
| State Management | Jotai (Atomic Model) |
| Local Storage | Dexie.js (IndexedDB wrapper) |
| Remote Backend | Supabase (PostgreSQL, Auth, Storage) |
| Styling | Tailwind CSS v3, shadcn/ui (Radix UI) |
| AI Integration | LangChain.js, LangGraph.js |
| Vector Search | Orama (ブラウザ内検索エンジン) |
| Embedding | Transformers.js (ブラウザ内ベクトル化) |
| Landing Page | Astro 4+ |
3.3 AIエージェント機能
- Client-Side LangGraph: エージェントの「脳」はブラウザ内で実行。ローカルデータに直接アクセス
- ReActパターン + Router: 雑談と調査を分類し、適切な処理ルートへ振り分け
- ツール群: Web検索(Tavily)、プロジェクトデータ参照、URLオープン、メモリ操作、アーティファクト編集
- Session Artifacts: ツール実行結果を資料として保存・再利用
3.4 デザインシステム
- 哲学: 「静謐なアトリエ(A Serene Atelier)」。創作者の集中を妨げるノイズを排除
- テーマ: 青とグレーを基調としたミニマルなデザイン
- セマンティックトークン:
bg-primary、text-muted-foreground等、意味に基づいたトークン使用。Raw Colorの使用は禁止 - Beyond Numbers: ランキングなどの数値指標を表示せず、文脈と定性的フィードバックを重視
詳細: 09_design_system
3.5 状態管理(Jotai)
- Atomic Model: 状態を小さな「アトム」に分割し、不要な再レンダリングを抑制
- 関心の分離: 状態定義、永続化、ビジネスロジック、UIを明確に分離
3.6 Local-First & E2E暗号化同期
ユーザーのプライバシーを保護するため、Zero-Knowledge Architectureを採用しています。
- Simple Full Sync:
dexie-export-importを使用してIndexedDB全体を単一のバックアップファイル(Blob)としてエクスポート - Local Storage: データはまず
Dexie.js(IndexedDB) に保存されます - Sync Key: ユーザーデバイス上で生成される12単語のニーモニック(BIP39互換)。サーバーには送信されません
- Encryption Flow:
- Local Data (JSON) -> Gzip圧縮
Sync Keyから PBKDF2 (100k iterations) で AES-256-GCM 鍵を導出- クライアントサイドで暗号化
- 暗号化されたBlobを Supabase Storage (
backup.enc) にアップロード
- Restore Flow:
- Supabase Storageから
backup.encをダウンロード - Sync Keyで復号化
dexie-export-importでローカルIndexedDBをクリアして復元(アトミックインポート)
- Supabase Storageから
- Security: 運営者(管理者)であっても、ユーザーの原稿データを閲覧・復号することは技術的に不可能です
3.7 AI Review System(品質保証)
作品公開(Publish)前に、AIエージェントによる自動査読が行われます。「思想警察」ではなく、「品質保証(QA)」としての役割を持ちます。
Review Schema (Zod Definition):
const ReviewReportSchema = z.object({
overall_assessment: z.object({
is_publishable: z.boolean(), // 掲載可否
summary: z.string(), // 公開用レビューコメント
}),
completion_status: z.object({
is_complete: z.boolean(), // 完結しているか(エタり防止)
}),
prohibitions: z.array(z.object({
category: z.enum(["hate_speech", "sexual_violence", "graphic_violence", "other"]),
evidence: z.string(),
})),
detailed_ratings: z.object({ // 5段階評価
originality: RatingSchema,
plot_structure: RatingSchema,
character_development: RatingSchema,
readability: RatingSchema,
}),
});4. Systemドキュメント索引 (System Documentation Index)
各ドキュメントの詳細情報を確認してください。
| ドキュメント | 内容 |
|---|---|
| 00_verbal_identity | ブランド定義(タグライン、ブランドステートメント、パーパス、禁止用語集) |
| 00_philosophies_of_blueperiod | 設計思想(3S、クラウンシャイネス、タグライン) |
| document_architecture | ドキュメント構造、命名規則、メンテナンスフローの定義 |
| 01_architecture | アーキテクチャ設計、MPA構成、BFFパターン、データフロー |
| 02_technology_stack | 使用ライブラリ・フレームワークの一覧と選定理由 |
| 03_state_management | Jotaiによる状態管理の哲学と実装 |
| 04_database_schema | IndexedDB(Dexie.js)のスキーマ定義 |
| 04_database_schema_supabase | Supabase(PostgreSQL)のスキーマ定義 |
| 05_api_specification | APIエンドポイントの仕様 |
| 05_migration_guide | マイグレーション履歴とガイド |
| 06_development_guidelines | コーディング規約、命名規則、実装前チェックリスト |
| 06_routing_architecture | ルーティング構造の定義 |
| 08_git_commit_conventions | コミットメッセージ規約 |
| 09_design_system | デザイン哲学、カラースキーム、UI/UXガイドライン |
| 09_sync_components | 同期機能のコンポーネント |
| 10_sync_architecture | 同期アーキテクチャの詳細(Simple Full Sync) |
| 12_ai_agent_architecture | AIエージェントのアーキテクチャ、ツール、ノード定義 |
| 13_hybrid_architecture | ハイブリッドアーキテクチャ |
| 14_ai_provider_integration_guide | AIプロバイダー統合ガイド |
5. 開発時の注意事項 (Constraints)
- App Router Only:
pages/ディレクトリは使用しない(Astroを除く)。すべてapp/ディレクトリ内のServer Components / Client Components構成とする - Strict Typing:
any型の使用は原則禁止。Zodスキーマを活用し、型安全性を確保する - Performance:
useEffectの乱用を避け、可能な限りServer ActionsやReact Query、Jotaiを活用する - Semantic Tokens: UI実装では必ずセマンティックトークン(
bg-primary等)を使用。Raw Color(bg-blue-500等)の使用は禁止