# Kord (Monorepo)

Kord는 Discord 서버 관리를 돕는 강력하고 유연한 다기능 봇 및 전용 웹 대시보드 프로젝트입니다.
현재 모노레포(Monorepo) 구조로 관리되고 있습니다.

## 1. 프로젝트 구조 (Structure)

본 프로젝트는 **Turborepo**와 **Yarn Workspaces**를 사용합니다.

- **`apps/bot`**: Discord.js 기반의 봇 본체 (ShardingManager 적용)
- **`apps/dashboard`**: Next.js 기반의 봇 관리 웹 대시보드
- **`packages/db`**: Prisma 스키마 및 데이터베이스 데이터 접근 레이어 (공용)
- **`packages/grpc-contracts`**: 봇과 대시보드 간의 gRPC 통신 규약 (공용)

## 2. 요구사항 (Requirements)

- **Runtime**: Node.js v22 이상 (추천)
- **Package Manager**: Yarn v4 (Berry)
- **Database**: PostgreSQL (Prisma 사용)
- **Discord**: Bot Token 및 Client ID

## 3. 시작하기 (Quick Start)

### 로컬 개발 환경 설정

1. **의존성 설치**:
    ```bash
    yarn install
    ```

2. **환경 변수 설정**: 루트 및 각 앱 디렉토리의 `.env` 설정을 완료합니다.

3. **데이터베이스 및 코드 생성**:
    ```bash
    yarn run generate
    ```

### 실행 방법

전체 프로젝트를 한꺼번에 실행하거나 개별 앱을 실행할 수 있습니다.

- **모든 앱 실행 (Bot + Dashboard)**:
    ```bash
    yarn dev
    ```

- **봇만 실행**:
    ```bash
    yarn workspace @kord/bot dev
    ```

- **대시보드만 실행**:
    ```bash
    yarn workspace dashboard dev
    ```

## 5. 인프라 검증 (Infrastructure Verification)

인프라 설정(DB, gRPC, 환경 변수)이 올바른지 확인하려면 다음 스크립트를 실행합니다:
```bash
npx tsx scripts/verify-recovery.ts
```

## 6. 로컬 접속 정보 (Local Connection Info)

로컬에서 개발 및 테스트 시 다음 주소를 사용합니다.

- **웹 대시보드 (Dashboard)**: [http://localhost:3000](http://localhost:3000)
- **gRPC 프록시 서버 (Bot Proxy)**: `localhost:50051` (대시보드와 봇 간 통신)
- **데이터베이스 (PostgreSQL)**: `localhost:5432`

## 5. 아키텍처 (Architecture)

Kord는 **gRPC Proxy** 아키텍처를 사용하여 대시보드와 샤딩된 봇 인스턴스 간의 실시간 통신을 처리합니다. 자세한 내용은 관련 문서를 참조하세요.
- [대시보드 통신 아키텍처 가이드](Docs/Decisions/Dashboard_Architecture_gRPC.md)

## 5. 문서 (Documentation)

모둔 상세 문서는 `Docs/` 디렉토리에 위치합니다.
- [문서 전체 색인 (Docs Index)](Docs/index.md)
- [로컬 가이드북 (SKILL.md)](SKILL.md)
