Files
knowledge_base/README.md
Yutaka Kurosaki 61d42d79f1 Enable language switching for guest users
Changes:
- Move locale.update route outside auth middleware
- Update LocaleController to support both authenticated and guest users
  - Guest users: Save locale preference to session only
  - Authenticated users: Save to both session and database
- Add language switcher dropdown to header for all users
  - Display current language with globe icon
  - Show all 8 supported languages in dropdown
  - Highlight currently selected language with checkmark

This allows non-logged-in users to change the interface language,
improving accessibility for international visitors.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 12:30:35 +09:00

346 lines
9.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Knowledge Base
Markdown対応のナレッジベースアプリケーションです。Wiki風のリンク記法`[[ページ名]]`)をサポートし、ドキュメント間の相互リンクを簡単に作成できます。
## 機能
- 📝 **Markdownエディタ** - リアルタイムプレビュー付きのドキュメント編集
- 🔗 **Wikiリンク** - `[[ページ名]]` 記法でドキュメント間リンクを作成
- 🔍 **クイックスイッチャー** - Ctrl+K (Cmd+K) で高速ドキュメント検索
- 📁 **階層構造** - フォルダ形式でドキュメントを整理(タイトルに `/` を含めると自動で階層化)
- 🌳 **サイドバーツリー** - 折りたたみ可能なドキュメントツリー
- 👥 **ユーザー管理** - 管理者によるユーザーのCRUD操作
- 🔒 **認証** - Laravel Breezeによるログイン/登録機能
- 🎨 **シンタックスハイライト** - コードブロックの自動ハイライト
- 🌐 **多言語対応** - 8言語サポートユーザーごとに言語設定可能
## 対応言語
| 言語 | コード |
|------|--------|
| English | en |
| 日本語 | ja |
| Deutsch | de |
| Français | fr |
| Español | es |
| 简体中文 | zh-CN |
| 繁體中文 | zh-TW |
| 한국어 | ko |
## 技術スタック
- **Backend**: Laravel 11 + Livewire 3
- **Frontend**: Alpine.js + Tailwind CSS
- **Database**: MySQL 8.0
- **Server**: Nginx + PHP-FPM 8.2
## Docker構成
| サービス | コンテナ名 | ポート | 説明 |
|---------|-----------|--------|------|
| Nginx | kb_nginx | 9700 | Webサーバー |
| PHP | kb_php | - | PHP-FPM + Composer + Node.js |
| MySQL | kb_mysql | 9702 | データベース |
| phpMyAdmin | kb_phpmyadmin | 9701 | DB管理ツール |
| MailHog | kb_mailhog | 9725 | メールテストSMTP: 1025 |
## ディレクトリ構成
```
.
├── docker/
│ ├── nginx/
│ │ └── default.conf
│ ├── php/
│ │ ├── Dockerfile
│ │ └── php.ini
│ └── mysql/
│ └── my.cnf
├── src/
│ ├── app/
│ │ ├── Console/Commands/ # Artisanコマンド
│ │ ├── Http/Controllers/ # コントローラー
│ │ ├── Livewire/ # Livewireコンポーネント
│ │ ├── Models/ # Eloquentモデル
│ │ └── Services/ # ビジネスロジック
│ ├── lang/ # 言語ファイルi18n
│ ├── resources/views/
│ │ ├── layouts/ # レイアウト
│ │ ├── livewire/ # Livewireビュー
│ │ └── admin/ # 管理画面
│ └── routes/
│ └── web.php # ルーティング
├── compose.yml
└── README.md
```
## セットアップ
### 1. リポジトリのクローン
```bash
git clone <repository-url>
cd knowledge-base
```
### 2. 環境変数の設定
```bash
cp src/.env.example src/.env
```
`src/.env` を編集:
```env
DB_CONNECTION=mysql
DB_HOST=kb_mysql
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=root
MAIL_MAILER=smtp
MAIL_HOST=kb_mailhog
MAIL_PORT=1025
```
### 3. Dockerコンテナの起動
```bash
docker compose up -d
```
### 4. 依存関係のインストール
```bash
# Composer
docker exec kb_php composer install
# npm
docker exec kb_php npm install
docker exec kb_php npm run build
```
### 5. データベースのセットアップ
```bash
# マイグレーション
docker exec kb_php php artisan migrate
# 初期データの投入(管理者ユーザー + 初期ドキュメント)
docker exec kb_php php artisan db:seed
```
個別にシーダーを実行する場合:
```bash
# 管理者ユーザーのみ
docker exec kb_php php artisan db:seed --class=UserSeeder
# 初期ドキュメントのみ
docker exec kb_php php artisan db:seed --class=DocumentSeeder
```
### 6. 管理者の設定
```bash
# 既存ユーザーを管理者に設定
docker exec kb_php php artisan user:set-admin admin@example.com
# 管理者権限を削除する場合
docker exec kb_php php artisan user:set-admin admin@example.com --remove
```
## アクセスURL
| サービス | URL |
|---------|-----|
| アプリケーション | http://localhost:9700 |
| phpMyAdmin | http://localhost:9701 |
| MailHog | http://localhost:9725 |
## 初期データ
### 初期アカウント
UserSeederを実行した場合
- **Email**: admin@example.com
- **Password**: password
- **権限**: 管理者
### 初期ドキュメント
DocumentSeederを実行すると以下のドキュメントが作成されます
| ドキュメント | 内容 |
|------------|------|
| Home | ホームページ(ウェルカムメッセージ、機能紹介) |
| Getting Started | 使い方ガイドドキュメント作成、Wikiリンク、ショートカット |
| Markdown Guide | Markdown記法ガイド見出し、リスト、コード、テーブル等 |
※ 既存のドキュメントがある場合、DocumentSeederはスキップされます。
## 本番環境へのデプロイ
### ⚠️ 重要: サブドメインを使用してください
このアプリケーションは **サブドメイン** でのデプロイを推奨します。
```
✅ 推奨: kb.example.com
❌ 非推奨: example.com/kb (サブディレクトリ)
```
**理由**: Livewire 3はサブディレクトリデプロイに完全対応していません。`/livewire/update` エンドポイントがサブディレクトリを考慮しないため、AJAX通信が失敗します。
### デプロイ手順
1. **サブドメインのDNS設定**
```
kb.example.com → サーバーIPアドレス
```
2. **Webサーバー設定**nginx例
```nginx
server {
listen 80;
server_name kb.example.com;
root /var/www/knowledge-base/src/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
}
```
3. **環境変数の設定**
```env
APP_URL=https://kb.example.com
APP_ENV=production
APP_DEBUG=false
```
4. **本番用の最適化**
```bash
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan optimize
```
## よく使うコマンド
```bash
# コンテナ操作
docker compose up -d # 起動
docker compose down # 停止
docker compose restart # 再起動
docker compose logs -f # ログ確認
# PHPコンテナ内でコマンド実行
docker exec kb_php php artisan [command]
docker exec kb_php composer [command]
docker exec kb_php npm [command]
# コンテナに入る
docker exec -it kb_php bash
# キャッシュクリア
docker exec kb_php php artisan config:clear
docker exec kb_php php artisan route:clear
docker exec kb_php php artisan view:clear
docker exec kb_php php artisan cache:clear
```
## 管理者機能
管理者(`is_admin = true`)は以下の機能にアクセスできます:
- **ユーザー管理** (`/admin/users`)
- ユーザー一覧表示
- 新規ユーザー作成
- ユーザー編集(名前、メール、パスワード、管理者権限)
- ユーザー削除
管理者はログイン後ダッシュボードへ、一般ユーザーはフロントページへリダイレクトされます。
## ドキュメントの作成
### 基本的な使い方
1. サイドバーの「New Document」をクリック
2. タイトルとMarkdownコンテンツを入力
3. 保存
### 階層構造の作成
タイトルに `/` を含めると自動的に階層化されます:
- `Laravel/Livewire/Components` → `Laravel/Livewire/` フォルダ内に作成
- `git/認証設定` → `git/` フォルダ内に作成
### Wikiリンク
`[[ページ名]]` 記法でリンクを作成できます:
```markdown
詳細は [[Getting Started]] を参照してください。
[[Laravel/Livewire/Components]] も確認してください。
```
## 言語設定
ユーザーは「プロフィール」ページから使用言語を変更できます。
1. 右上のユーザー名をクリック
2. 「プロフィール」を選択
3. 「言語設定」セクションで言語を選択
4. 「保存」をクリック
## トラブルシューティング
### パーミッションエラー
```bash
docker exec kb_php chmod -R 775 storage bootstrap/cache
docker exec kb_php chown -R www-data:www-data storage bootstrap/cache
```
### コンテナが起動しない
```bash
docker compose down --remove-orphans
docker compose up -d
```
### Nginxがエラーで停止する
`docker/nginx/default.conf` の `fastcgi_pass` が `kb_php:9000` になっているか確認してください。
### データベース接続エラー
`src/.env` の `DB_HOST` が `kb_mysql` になっているか確認してください。
### Livewireのエラー本番環境
「404 /livewire/update」エラーが出る場合は、サブディレクトリではなくサブドメインでデプロイしてください。
```bash
# キャッシュをクリア
php artisan config:clear
php artisan route:clear
php artisan cache:clear
```
## ライセンス
MIT License