# Knowledge Base Markdown対応のナレッジベースアプリケーションです。Wiki風のリンク記法(`[[ページ名]]`)をサポートし、ドキュメント間の相互リンクを簡単に作成できます。 ## 機能 - 📝 **Markdownエディタ** - リアルタイムプレビュー付きのドキュメント編集 - 🔗 **Wikiリンク** - `[[ページ名]]` 記法でドキュメント間リンクを作成 - 🔍 **クイックスイッチャー** - Ctrl+K (Cmd+K) で高速ドキュメント検索 - 📁 **階層構造** - フォルダ形式でドキュメントを整理(タイトルに `/` を含めると自動で階層化) - 🌳 **サイドバーツリー** - 折りたたみ可能なドキュメントツリー - 👥 **ユーザー管理** - 管理者によるユーザーのCRUD操作 - 🔒 **認証** - Laravel Breezeによるログイン/登録機能 - 🎨 **シンタックスハイライト** - コードブロックの自動ハイライト ## 技術スタック - **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/ # ビジネスロジック │ ├── 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 --class=UserSeeder ``` ### 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 ## よく使うコマンド ```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 ``` ## 管理者機能 管理者(`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]] も確認してください。 ``` ## トラブルシューティング ### パーミッションエラー ```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` になっているか確認してください。 ## ライセンス MIT License