Yutaka Kurosaki f57d235651 Remove language setting from profile page
Since language switching is now available in the header for all users,
the separate language setting section in the profile page is redundant.

Changes:
- Remove update-locale-form include from profile/edit.blade.php
- Delete profile/partials/update-locale-form.blade.php

Users can now change language using the header dropdown instead.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 12:36:53 +09:00
2025-11-29 15:54:35 +09:00
2025-11-29 11:28:25 +09:00

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. リポジトリのクローン

git clone <repository-url>
cd knowledge-base

2. 環境変数の設定

cp src/.env.example src/.env

src/.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コンテナの起動

docker compose up -d

4. 依存関係のインストール

# Composer
docker exec kb_php composer install

# npm
docker exec kb_php npm install
docker exec kb_php npm run build

5. データベースのセットアップ

# マイグレーション
docker exec kb_php php artisan migrate

# 初期データの投入(管理者ユーザー + 初期ドキュメント)
docker exec kb_php php artisan db:seed

個別にシーダーを実行する場合:

# 管理者ユーザーのみ
docker exec kb_php php artisan db:seed --class=UserSeeder

# 初期ドキュメントのみ
docker exec kb_php php artisan db:seed --class=DocumentSeeder

6. 管理者の設定

# 既存ユーザーを管理者に設定
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を実行した場合

初期ドキュメント

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例

    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. 環境変数の設定

    APP_URL=https://kb.example.com
    APP_ENV=production
    APP_DEBUG=false
    
  4. 本番用の最適化

    php artisan config:cache
    php artisan route:cache
    php artisan view:cache
    php artisan optimize
    

よく使うコマンド

# コンテナ操作
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/ComponentsLaravel/Livewire/ フォルダ内に作成
  • git/認証設定git/ フォルダ内に作成

Wikiリンク

[[ページ名]] 記法でリンクを作成できます:

詳細は [[Getting Started]] を参照してください。
[[Laravel/Livewire/Components]] も確認してください。

言語設定

ユーザーは「プロフィール」ページから使用言語を変更できます。

  1. 右上のユーザー名をクリック
  2. 「プロフィール」を選択
  3. 「言語設定」セクションで言語を選択
  4. 「保存」をクリック

トラブルシューティング

パーミッションエラー

docker exec kb_php chmod -R 775 storage bootstrap/cache
docker exec kb_php chown -R www-data:www-data storage bootstrap/cache

コンテナが起動しない

docker compose down --remove-orphans
docker compose up -d

Nginxがエラーで停止する

docker/nginx/default.conffastcgi_passkb_php:9000 になっているか確認してください。

データベース接続エラー

src/.envDB_HOSTkb_mysql になっているか確認してください。

Livewireのエラー本番環境

「404 /livewire/update」エラーが出る場合は、サブディレクトリではなくサブドメインでデプロイしてください。

# キャッシュをクリア
php artisan config:clear
php artisan route:clear
php artisan cache:clear

ライセンス

MIT License

Description
Simple Markdown Knowledge base site
Readme 904 KiB
Languages
PHP 57.3%
Blade 42.2%
JavaScript 0.2%
Dockerfile 0.2%