Skip to main content
Glama
daffaoir

bedengan-apps

by daffaoir
README.md
# Bedengan Apps MCP

Cara satu-satunya sekarang untuk menerbitkan atau memperbarui aplikasi di
**Bedengan App Hub** (`https://apps.wisatabedengan.com`) — lewat AI coding
tool (mis. Antigravity), bukan lewat halaman web lagi.

**Cara pakai sehari-hari, singkatnya:** setelah terpasang (sekali saja, lihat
di bawah), cukup minta AI-nya *"tolong unggah folder ini jadi aplikasi baru"*
atau *"update aplikasi X dengan kode terbaru"*. Sisanya — mengecek proyeknya,
membetulkan kalau ada yang kurang, lalu mengirim — dilakukan otomatis. Tidak
ada admin yang menyetujui secara manual lagi: begitu lolos pemeriksaan,
aplikasinya **langsung live**.

**Ini bukan jalur baru ke VPS.** Server ini hanya memanggil API hub yang sama
lewat token akun sendiri — tidak pernah menyentuh Docker atau server secara
langsung.

## Pasang sekali di laptop

1. **Unduh folder ini.** Kalau belum terbiasa `git clone`, cukup klik tombol
   hijau **"Code" → "Download ZIP"** di halaman GitHub repo ini, lalu ekstrak
   ke folder mana saja di laptop (mis. `Documents/bedengan-apps-mcp`).
2. Minta **token API** dari admin, atau buat sendiri kalau sudah punya akun:
   masuk ke `https://apps.wisatabedengan.com` → tombol **"Token API"** →
   **Buat / Perbarui Token API**. Kode yang muncul **hanya tampil sekali** —
   catat dulu sebelum menutup jendelanya.
3. Buka terminal di folder hasil ekstrak tadi, jalankan:
   ```bash
   npm install
   npm run build
   npm run init
   ```
   `npm run init` akan bertanya URL hub (tekan Enter untuk pakai bawaan,
   `https://apps.wisatabedengan.com`) dan token dari langkah 2. Tersimpan di
   `~/.bedengan-apps/config.json` di laptop sendiri — **tidak pernah** ikut
   ter-zip ke proyek mana pun, dan tidak boleh dibagikan ke orang lain.

## Sambungkan ke Antigravity

Tambahkan ke pengaturan MCP server Antigravity (cari menu "MCP Servers" di
pengaturannya):

```json
{
  "mcpServers": {
    "bedengan-apps": {
      "command": "node",
      "args": ["/path/absolut/ke/folder-hasil-ekstrak/dist/index.js"]
    }
  }
}
```

Ganti path di atas dengan lokasi `dist/index.js` di dalam folder tempat kalian
mengekstrak/memasang tadi (langkah 1 di atas) — path lengkap, bukan relatif.
Setelah disimpan, restart Antigravity — AI-nya sekarang bisa memakai tools di
bawah.

## Yang terjadi kalau diminta "unggah folder ini"

1. AI-nya memeriksa proyek (`validate_project`) — mengecek jenis aplikasinya
   terdeteksi, tidak ada berkas rahasia (`.env`, kunci API) ikut ter-zip, dan
   strukturnya lengkap.
2. Kalau ada yang perlu dibenahi, AI-nya membenahi bagian itu saja di kode,
   lalu mengecek ulang — berulang sampai bersih. Tidak perlu Anda ikut campur
   kecuali AI-nya benar-benar bingung.
3. Setelah bersih, dikirim sungguhan (`submit_app` untuk aplikasi baru,
   `update_app` untuk memperbarui yang sudah live).
4. **Tidak ada yang perlu menyetujui.** Dalam beberapa saat aplikasinya sudah
   bisa dibuka di `https://<subdomain-pilihan>.apps.wisatabedengan.com`.

## Tools yang tersedia

| Tool | Fungsi |
|---|---|
| `validate_project` | Cek folder lokal (tanpa mengirim apa pun) — jenis aplikasi terdeteksi, peringatan struktur, dan "kesalahan" keras yang akan bikin ditolak kalau tidak dibenahi dulu. **Selalu dipanggil lebih dulu**, otomatis, sebelum dua tool di bawah. |
| `submit_app` | Terbitkan aplikasi **baru**. Lolos pemeriksaan = langsung live di subdomain yang diminta. |
| `update_app` | Perbarui aplikasi yang **sudah live** milik akun sendiri dengan kode terbaru. Versi lama otomatis tersimpan (bisa dikembalikan lewat dashboard web kalau versi baru ternyata bermasalah). |
| `check_status` | Cek status sebuah pengajuan dan progres build-nya. |
| `list_my_apps` | Lihat semua aplikasi & pengajuan milik akun sendiri — termasuk `appId` yang dibutuhkan `update_app`. |

Kalau AI coding tool yang dipakai mendukung "MCP prompts", ada juga alur siap
pakai bernama **`siapkan_dan_terbitkan`** yang membungkus langkah 1-4 di atas
jadi satu perintah. Kalau tidak didukung, tidak masalah — AI-nya tetap tahu
urutan yang benar dari deskripsi tiap tool.

## Kalau ditolak

Pesan penolakan selalu menyebutkan apa yang harus dibenahi, contoh:

- *"Ditolak otomatis -- ada indikasi rahasia ikut terunggah: Berkas .env ikut
  ter-zip"* → hapus/kecualikan `.env` dari proyek yang dikirim (lihat bagian
  "Yang dikecualikan otomatis" di bawah), lalu coba lagi.
- *"Jenis aplikasi tidak dikenali"* → biasanya berkas utamanya tidak ada di
  tempat yang diharapkan (mis. `index.html`/`app.py`/`package.json` tidak di
  folder paling luar) atau tidak ada script `start`. Minta AI-nya membetulkan
  strukturnya: web statis butuh `index.html` di akar, Python butuh `app.py` +
  `requirements.txt`, Node butuh `package.json` dengan script `"start"` yang
  membaca `process.env.PORT` dan mendengarkan di `0.0.0.0`.
- *"Jatah aplikasi Python/Node Anda sudah penuh"* → hapus salah satu aplikasi
  lama yang sudah tidak dipakai lewat dashboard web dulu, baru coba lagi.

## Menyimpan data yang perlu bertahan (database, unggahan pengguna, dll)

Kalau aplikasinya menyimpan data sendiri (mis. database payroll, unggahan
pengguna, hasil input) dan datanya harus tetap ada meski aplikasinya nanti
diperbarui lewat `update_app`, **simpan semuanya di folder `./data/` pada akar
proyek** (relatif dari folder tempat `package.json`/`app.py`/`index.html`
berada). Folder itu satu-satunya bagian aplikasi yang TIDAK ikut diganti saat
kodingannya diperbarui — bagian lain (kode, `node_modules`, dst) diganti
seluruhnya setiap `submit_app`/`update_app` berhasil.

Kalau proyeknya sudah punya data asli di folder `./data/` saat pertama kali
diunggah (mis. rekan kerja memindahkan aplikasi yang sudah dipakai dari
laptopnya sendiri, lengkap dengan isinya) — data itu ikut terbawa dan tetap
ada di server sejak awal, tidak perlu dipindah manual lagi.

## Yang dikecualikan otomatis saat membungkus ZIP

`node_modules`, `.git`, `__pycache__`, `.venv`/`venv`, `.DS_Store`, `.next`,
`.cache`. Untuk mengecualikan yang lain, buat berkas `.bedenganignore` di akar
folder proyek — satu nama folder/berkas relatif per baris (bukan glob penuh
seperti `.gitignore`, cukup nama persis).

## Kalau token bocor

Cabut sendiri lewat dashboard web (tombol "Token API" → "Cabut Token API")
atau minta admin mencabutnya dari panel admin — kata sandi login dan sesi
web tidak ikut terganggu. Buat token baru, jalankan `npm run init` lagi.

TDQS

A4.4/5.0

Scored across 5 tools

Disambiguation4/5

Each tool has a reasonably distinct role: validation, creation, updating, status lookup, and listing. The only mild overlap is between check_status and list_my_apps, since both expose submission/app state, but one is single-item-oriented and the other is an overview.

Naming Consistency5/5

Tool names consistently follow a verb_noun pattern: validate_project, submit_app, check_status, update_app, list_my_apps. The style is uniform and predictable, making it easy to anticipate what each tool does.

Tool Count5/5

Five tools is well-scoped for an app deployment workflow: validate, create, update, check status, and list apps. Each tool earns its place and there is no unnecessary redundancy or bloat.

Completeness4/5

The core lifecycle is covered: validate before deploy, submit new apps, update existing apps, check status, and list owned apps. A delete or rollback tool is missing, but rollback is explicitly handled through the web dashboard, so the gap is minor.

Maintenance

ActivityMaintained
ResponsivenessNo issues