> ## Documentation Index
> Fetch the complete documentation index at: https://docs.econtractid.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Cài đặt Môi trường

> Hướng dẫn cài đặt và cấu hình môi trường phát triển cho econtractid

## Yêu cầu hệ thống

| Phần mềm   | Phiên bản tối thiểu |
| ---------- | ------------------- |
| Node.js    | 18.x LTS            |
| npm        | 9.x                 |
| PostgreSQL | 14+                 |
| Redis      | 6+                  |
| Git        | 2.x                 |

***

## Cài đặt Backend (NestJS API)

<Steps>
  <Step title="Clone repository">
    ```bash theme={null}
    git clone https://github.com/your-org/econtractid-api.git
    cd econtractid-api
    ```
  </Step>

  <Step title="Cài đặt dependencies">
    ```bash theme={null}
    npm install
    ```
  </Step>

  <Step title="Cấu hình biến môi trường">
    Copy file `.env.example` thành `.env` và điền các giá trị:

    ```env theme={null}
    # Database
    DB_HOST=localhost
    DB_PORT=5432
    DB_NAME=econtractid
    DB_USER=postgres
    DB_PASS=password

    # JWT
    JWT_SECRET=your_super_secret_key_here
    JWT_EXPIRES_IN=3600
    JWT_REFRESH_SECRET=your_refresh_secret
    JWT_REFRESH_EXPIRES_IN=604800

    # Redis
    REDIS_HOST=localhost
    REDIS_PORT=6379

    # File Storage (MinIO)
    MINIO_ENDPOINT=localhost
    MINIO_PORT=9000
    MINIO_ACCESS_KEY=minioadmin
    MINIO_SECRET_KEY=minioadmin
    MINIO_BUCKET=econtractid-files

    # Email (SMTP)
    MAIL_HOST=smtp.gmail.com
    MAIL_PORT=587
    MAIL_USER=noreply@econtractid.vn
    MAIL_PASS=app_password_here
    ```
  </Step>

  <Step title="Chạy database migration">
    ```bash theme={null}
    npm run migration:run
    ```
  </Step>

  <Step title="Khởi động server">
    ```bash theme={null}
    # Development (hot-reload)
    npm run start:dev

    # Production
    npm run build
    npm run start:prod
    ```

    API sẽ chạy tại `http://localhost:3000`.
  </Step>
</Steps>

***

## Cài đặt Frontend (Angular)

<Steps>
  <Step title="Clone repository">
    ```bash theme={null}
    git clone https://github.com/your-org/econtractid-frontend.git
    cd econtractid-frontend
    ```
  </Step>

  <Step title="Cài đặt dependencies">
    ```bash theme={null}
    npm install
    ```
  </Step>

  <Step title="Cấu hình environment">
    Sửa file `src/environments/environment.ts`:

    ```typescript theme={null}
    export const environment = {
      production: false,
      apiUrl: 'http://localhost:3000/api',
      wsUrl: 'ws://localhost:3000',
    };
    ```
  </Step>

  <Step title="Khởi động dev server">
    ```bash theme={null}
    npm start
    ```

    Ứng dụng chạy tại `http://localhost:4200`.
  </Step>
</Steps>

***

## Chạy bằng Docker Compose

Để khởi động toàn bộ hệ thống bằng Docker:

```bash theme={null}
# Clone repo
git clone https://github.com/your-org/econtractid.git
cd econtractid

# Khởi động tất cả services
docker compose up -d

# Xem logs
docker compose logs -f api
```

**Services được khởi động:**

| Service            | Port            |
| ------------------ | --------------- |
| API (NestJS)       | `3000`          |
| Frontend (Angular) | `4200`          |
| PostgreSQL         | `5432`          |
| Redis              | `6379`          |
| MinIO              | `9000` / `9001` |

***

## Kiểm tra cài đặt

Sau khi khởi động, kiểm tra bằng lệnh:

```bash theme={null}
# Kiểm tra API health
curl http://localhost:3000/api/health

# Expected response
{"status": "ok", "version": "1.0.0"}
```
