# Hướng Dẫn Development

## Cấu Trúc Dự Án

```
├── apps/              # Frontend applications
├── services/          # Backend microservices
├── packages/          # Shared libraries
├── infra/             # Infrastructure configs
├── deployments/       # Deployment configs
├── scripts/           # Automation scripts
└── docs/              # Documentation
```

## Quy Trình Development

### 1. Tạo Feature Branch

```bash
git checkout -b feature/my-feature
```

### 2. Thực Hiện Thay Đổi

- Viết code tuân theo TypeScript strict mode
- Thêm tests cho chức năng mới
- Cập nhật tài liệu nếu cần

### 3. Chạy Tests Locally

```bash
# Tất cả tests
pnpm test

# Service cụ thể
pnpm --filter @goodgo/iam-service test
```

### 4. Lint và Format

```bash
pnpm lint
pnpm format
```

### 5. Tạo Pull Request

- Push branch của bạn
- Tạo PR target `develop`
- CI/CD sẽ chạy tự động

## Thêm Service Mới

1. Sử dụng template:
   ```bash
   ./scripts/utils/create-service.sh my-new-service
   ```

2. Cập nhật cấu hình service
3. Implement business logic
4. Thêm tests
5. Cập nhật tài liệu

## Thêm Package Mới

1. Tạo package trong `packages/new-package`
2. Thêm vào workspace trong `pnpm-workspace.yaml`
3. Export từ `index.ts`
4. Thêm tests
5. Ghi lại cách sử dụng

## Database Migrations

## Database Migrations

```bash
# Tạo migration (dev)
./scripts/db/migrate.sh iam-service dev

# Áp dụng migrations (production)
./scripts/db/migrate.sh iam-service deploy
```

## Kubernetes Deployment

### Local Kubernetes (Docker Desktop)

```bash
# Enable Kubernetes trong Docker Desktop
# Settings → Kubernetes → Enable Kubernetes

# Deploy service
cd deployments/local/kubernetes
./deploy.sh

# Verify deployment
kubectl get pods -n iam-local
kubectl logs -f -n iam-local -l app=iam-service

# Port forward để test
kubectl port-forward svc/iam-service 5002:80 -n iam-local
curl http://localhost:5002/health/live
```

**Xem hướng dẫn chi tiết**: [Kubernetes Local Deployment Guide](./kubernetes-local.md)

## Debugging

- Sử dụng logger từ `@goodgo/logger`
- Kiểm tra Traefik logs: `docker logs traefik-local`
- Kiểm tra service logs: `./scripts/dev/logs.sh iam-service`
