StudySyncは、学習コンテンツの作成、管理、共有を目的としたフルスタックのウェブアプリケーションです。PHPをバックエンドに、HTML/CSS/JavaScriptをフロントエンドに利用しています。
- ユーザー管理: ユーザー登録、ログイン、プロフィール設定、 identicon の管理、フォロー機能。
- コンテンツ作成・管理:
- 単語帳、ノート、問題セットの作成、編集、削除。
- コンテンツの共有範囲の設定。
- コンテンツのレーティングとレポート。
- 学習機能:
- 単語帳学習と記憶度更新。
- 問題セットの解答と試験提出。
- 学習結果の表示。
- 管理者機能:
- ユーザーとテナントのBAN。
- システム情報の管理と掲示。
- コンテンツレポートの閲覧とステータス更新。
- ライブラリ機能: お気に入りのコンテンツをライブラリに保存・管理。
- 検索機能: コンテンツの検索。
StudySyncをローカル環境でセットアップするには、以下の手順が必要です。
以下のソフトウェアで検証しています:
- Apache
- PHP 8.2
- MariaDB 10.6.21
このリポジトリのファイルをWebサーバーのドキュメントルート(またはサブディレクトリ)に配置します。public_html ディレクトリをWebサーバーの公開ディレクトリとして設定してください。
sql/nuko_studysync.sql を使用してデータベースを作成し、初期スキーマとデータをインポートします。
config/config.php を編集し、データベース接続情報やその他のアプリケーション設定を環境に合わせて設定します。
<?php
// 例:
define('DB_HOST', 'localhost');
define('DB_NAME', 'studysync');
define('DB_USER', 'root');
define('DB_PASSWORD', 'your_db_password');
// その他の設定...Webサーバーを起動した後、ブラウザで設定したURL (http://localhost/ または http://localhost/studysync/ など) にアクセスします。
api_app/: APIエンドポイントとビジネスロジックが含まれます。admin/: 管理者向けAPI。content/: コンテンツ作成・管理API。notifications/: 通知関連のクラス。study/: 学習機能関連API。system/: システム情報・レポート関連API。user/: ユーザー管理関連API。util/: ユーティリティ関数やクラス(OAuthなど)。routes.php: APIルーティング定義。
config/: アプリケーションの全体設定ファイル。config.php: メイン設定ファイル。asset_version.php: アセットバージョニング用。
public_html/: 公開されるWebフロントエンドファイル。api/index.php: 全てのAPIリクエストを処理するエントリーポイント。css/: スタイルシート。js/: JavaScriptファイル。legal/: 法的文書(プライバシーポリシーなど)。parts/: PHPテンプレートの共通パーツ。read/: コンテンツ閲覧ページ。tools/: 管理ツールやAPIテスター。write/: コンテンツ作成・編集ページ。entrance.php,login.php,my_content.phpなど: 主要なHTMLページ。
sql/: データベースのスキーマ定義とデータ。nuko_studysync.sql: データベース構築スクリプト。
- データベース:
sql/nuko_studysync.sqlに定義されたスキーマに基づいています。ユーザー、コンテンツ(単語帳、ノート、問題セット)、学習進捗、レポートなどのデータが格納されます。 - 設定ファイル:
config/config.phpにてデータベース接続情報、APIキー、その他のシステム設定を定義します。
- バックエンド: PHPで実装されており、
api_app/routes.phpでAPIエンドポイントが定義されています。 - フロントエンド:
public_html/ディレクトリ内のHTML、CSS、JavaScriptファイルで構成されています。 - API:
public_html/api/index.phpがすべてのAPIリクエストを処理し、api_app/routes.phpに従ってルーティングされます。 - 認証: ユーザー認証にはセッション管理やOAuth2 (
api_app/util/GoogleOAuth2.php) を使用しています。