# 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 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