コンテンツにスキップ

アプリケーションを開発する

GitHub リポジトリをクローンして、開発を行います。お好みのエディタを使用してコードを編集し、Node.jsを利用したローカル環境でアプリを利用することができます。

以下は環境変数の例です。/apps/frontend/.env/apps/backend/.env に設定してください。

/apps/frontend/.env
VITE_BACKEND_URL=http://localhost:3001
/apps/backend/.env
OPENAI_API_KEY="sk-xxxxxx"
OPENAI_API_ENDPOINT="https://your-openai-api-endpoint"
BETTER_AUTH_URL="http://localhost:3001"
BETTER_AUTH_SECRET=dummyDummyDummy
CORS_ORIGIN="http://localhost:3000"
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
DB_PORT=5432
POSTGRES_DB="tutoriallm_db"
DB_HOST="db.tutoriallm.local"
DOMAIN="localhost"
DEFAULT_USER_PASSWORD="admin"
DEFAULT_USER_NAME="admin"
S3_USER="s3_root"
S3_PASSWORD="s3_password"
S3_ACCESS_KEY_ID="s3_access_key_id"
S3_SECRET_ACCESS_KEY="s3_secret_access_key"

ドキュメンテーション(apps/docs)の開発サーバーを利用する際は、環境変数を、/apps/docs/.env に設定してください。

/apps/docs/.env
OPENAPI_DOCS_URL=http://localhost:3001

TutoriaLLM は、PostgreSQLと接続する必要があります。また、vector が利用できる PostgreSQL が必要です。ここでは、Docker composeを使用してpgvectorを利用する方法を説明します。

/docker-compose.pg.yml
services:
db:
container_name: tutoriallm_db
image: pgvector/pgvector:pg14
ports:
- "5432:5432"
env_file:
- ./apps/backend/.env
environment:
- POSTGRES_USER
- POSTGRES_PASSWORD
- POSTGRES_DB
- PGDATA=/var/lib/postgresql/data/pgdata
- TZ=UTC
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $POSTGRES_USER -d $POSTGRES_DB"]
interval: 5s
timeout: 60s
retries: 5
start_period: 5s
volumes:
- db_data_db:/var/lib/postgresql/data
volumes:
db_data_db:

Docker composeを利用して、フロントエンドとバックエンドを起動します。TutoriaLLMリポジトリ内にあるdocker-compose.ymlと、docker-compose.dev.override.ymlを使用してください。

Start the server
docker compose -f docker-compose.yml -f docker-compose.dev.override.yml up --build # ビルドして起動
docker compose -f docker-compose.yml -f docker-compose.dev.override.yml up # 起動

ドキュメンテーションの開発サーバーを起動する必要がある場合はpnpmを使用してください。

pnpmを利用することで、個別にフロントエンドとバックエンドを起動することができます。

データベースを起動します。

Start the database
docker compose up

フロントエンドとバックエンド、必要があればドキュメンテーションを以下のコマンドで起動します。

Start the development server
# フロントエンド
cd apps/frontend
pnpm i && pnpm dev
# バックエンド
cd apps/backend
pnpm i && pnpm dev
# ドキュメンテーション
cd apps/docs
pnpm i && pnpm dev

このリポジトリでは、pnpm workspaceを使用して、フロントエンドとバックエンドで型定義を共有しています。 型定義はバックエンドで定義し、フロントエンドで使用することができます。

Build the type definitions
# バックエンドで型定義を生成
cd apps/backend
pnpm run build

ルートディレクトリで、以下のコマンドでテストを実行します。

Test
pnpm test

拡張機能は、デフォルトでは/packages/extensionsに配置されています。拡張機能を作成する場合は、このディレクトリに配置してください。 index.tsでエクスポートされた値をフロントエンドとバックエンドが読み込むために利用します。

拡張機能を定義した後、以下のコマンドでビルドします。

Build the extension
# 拡張機能のビルド
pnpm run build

ビルド後、再度フロントエンドとバックエンドを起動してください。