# Panduan Deployment ke GitHub

## Langkah 1: Setup Git Repository

```bash
cd /home/webserver-1/project/snap-bi

# Add semua file (kecuali yang di .gitignore)
git add .

# Commit pertama
git commit -m "Initial commit: Laravel Snap BI Library v1.0.0"

# Rename branch ke main (opsional, sesuai preferensi GitHub)
git branch -M main
```

## Langkah 2: Buat Repository di GitHub

1. Login ke GitHub
2. Klik **New Repository**
3. Repository name: `snap-bi` (atau sesuai keinginan)
4. Description: "Laravel library untuk menangani response SNAP BI"
5. Visibility: **Public** (untuk dependency) atau **Private** (jika ingin private)
6. **JANGAN** centang "Initialize with README" (karena sudah ada)
7. Klik **Create repository**

## Langkah 3: Connect dan Push ke GitHub

```bash
# Ganti YOUR_USERNAME dengan username GitHub Anda
git remote add origin https://github.com/YOUR_USERNAME/snap-bi.git

# Push ke GitHub
git push -u origin main
```

## Langkah 4: Tagging untuk Versioning

```bash
# Buat tag untuk versi 1.0.0
git tag -a v1.0.0 -m "Release version 1.0.0"

# Push tag ke GitHub
git push origin v1.0.0
```

## Langkah 5: Menggunakan sebagai Dependency di Project Lain

### Opsi 1: Menggunakan GitHub Repository (Recommended)

Tambahkan di `composer.json` project yang akan menggunakan library ini:

```json
{
  "repositories": [
    {
      "type": "vcs",
      "url": "https://github.com/YOUR_USERNAME/snap-bi.git"
    }
  ],
  "require": {
    "gaco/snap-bi": "dev-main"
  }
}
```

Atau untuk versi spesifik:

```json
{
  "repositories": [
    {
      "type": "vcs",
      "url": "https://github.com/YOUR_USERNAME/snap-bi.git"
    }
  ],
  "require": {
    "gaco/snap-bi": "^1.0.0"
  }
}
```

Kemudian install:

```bash
composer require gaco/snap-bi:dev-main
# atau
composer require gaco/snap-bi:^1.0.0
```

### Opsi 2: Menggunakan Private Repository (Jika Private)

Jika repository private, gunakan token:

```json
{
  "repositories": [
    {
      "type": "vcs",
      "url": "https://YOUR_TOKEN@github.com/YOUR_USERNAME/snap-bi.git"
    }
  ],
  "require": {
    "gaco/snap-bi": "dev-main"
  }
}
```

### Opsi 3: Publish ke Packagist (Public Repository)

Jika ingin publish ke Packagist agar bisa di-install tanpa menambahkan repository:

1. Daftar di https://packagist.org
2. Submit package: https://packagist.org/packages/submit
3. Masukkan URL repository GitHub
4. Setelah approved, bisa langsung install:

```bash
composer require gaco/snap-bi
```

## Update Version

Setiap kali ada update:

```bash
# Update version di composer.json (jika perlu)
# Lalu commit dan push
git add .
git commit -m "Update: description of changes"
git push origin main

# Buat tag baru untuk versi baru
git tag -a v1.0.1 -m "Release version 1.0.1"
git push origin v1.0.1
```

## Best Practices

1. **Semantic Versioning**: Gunakan format `MAJOR.MINOR.PATCH` (1.0.0)
2. **Changelog**: Buat file `CHANGELOG.md` untuk tracking perubahan
3. **Releases**: Buat GitHub Release untuk setiap versi baru
4. **Tags**: Selalu tag setiap release untuk memudahkan versioning
