Panduan Lengkap

Cara memakai setiap fitur rakit.io — dari editor, AI Builder, database, sampai fungsi serverless — plus cheat sheet menulis perintah ke AI.

Bagian 1

Panduan Fitur

Kenali setiap bagian editor rakit.io: di mana letaknya, apa gunanya, dan cara memakainya langkah demi langkah. Di editor, tombol ⓘ di samping setiap fitur juga membuka penjelasan singkatnya.

F1Memulai & Mengenal Editor

Dari daftar akun sampai paham letak setiap tombol di layar.

Daftar & masuk

  1. Buka halaman depan rakit.io, klik Daftar. Isi username, email, dan password — atau pilih Lanjutkan dengan Google.
  2. Setelah daftar, website pertamamu langsung online di namamu.rakit.io dan editor terbuka otomatis.
  3. Akun baru mendapat bonus kredit AI sekali pakai, ditambah kredit gratis setiap hari (lihat Kredit & Paket).
🔐 Akun yang didaftarkan dengan email + password tetap masuk memakai password, walaupun emailnya sama dengan akun Google-mu. Akun tidak digabung otomatis demi keamanan.

Dua tampilan editor: Simple & Coding

Pilih di tombol tengah atas. Pilihanmu diingat di browser.

✦ Simple

Hanya chat AI dan preview. Cocok kalau kamu cukup bercerita ke AI dan melihat hasilnya tanpa menyentuh kode.

</> Coding

Tampilan lengkap: panel file, editor kode, database, fungsi, diagram, riwayat, dan console. Fitur yang butuh tampilan ini otomatis memindahkanmu ke Coding.

Peta layar (tampilan Coding)

BagianIsinya
Bilah atas kiriLogo, tombol panel file, chip alamat website (tombol folder = ganti/buat project, tautan situs, tombol salin URL).
Bilah atas tengahPilihan Simple / Coding dan status penyimpanan.
Bilah atas kananPreview (tampil/sembunyi), Panduan, Publikasikan (hanya di mode publikasi manual), Lihat situs, badge paket, dan avatar (menu akun).
Panel kiriDaftar file & folder project, tombol file/folder baru, upload gambar, dan pemakaian kuota.
Area tengahTab Code · AI · Data · Diagram · Fungsi · Riwayat · Console. Tombol ⓘ menjelaskan tab yang sedang dibuka.
Panel kananPreview website, pilihan ukuran layar, Pilih blok, dan Edit (teks & gambar).

Menu avatar (pojok kanan atas)

MenuFungsi
Buka website publik · Salin URL websiteMembuka atau menyalin alamat website project aktif.
Mode publikasiPilih langsung tayang atau manual (dev/prod) — lihat Publikasi.
Simpan semuaMenyimpan semua file yang masih terbuka & belum tersimpan.
PengaturanTema terang/gelap, bahasa, dan prediksi kode AI.
English / Bahasa IndonesiaMengganti bahasa tampilan.
Langganan & kredit AILihat paket, beli kredit, atau berlangganan.
KeluarKeluar dari akun di browser ini.
📱 Di HP, editor memakai navigasi bawah: File · Editor (atau Chat AI di tampilan Simple) · Preview. Menu project ada di menu avatar.

F2Project — Banyak Website dalam Satu Akun

Setiap project adalah website terpisah: alamat, file, database, riwayat versi, dan percakapan AI sendiri.

Membuat project baru

  1. Klik tombol folder di chip alamat website (kiri atas).
  2. Pilih Project baru.
  3. Isi alamat website (huruf kecil, angka, tanda -), mis. tokokue → tokokue.rakit.io.
  4. Isi nama project (opsional), lalu Buat project.

Ganti, ganti nama, hapus

  • Ganti project: klik tombol folder, pilih project dari daftar.
  • Ganti nama project…: mengubah nama tampilan (alamat tetap).
  • Hapus project ini…: menghapus file, database, dan riwayatnya. Project terakhir tidak bisa dihapus.
HalKeterangan
Jumlah projectMaksimal 5 per akun.
Kredit AIMilik akun, dipakai bersama semua project.
Kuota file & databaseDihitung per project (besarnya mengikuti paket).
Prompt AI berjalanSatu prompt sekaligus per akun, di project mana pun.

F3File, Folder & Gambar

Semua bagian website tersimpan sebagai file di panel kiri. index.html adalah halaman utama.

Membuat & mengelola file

  • Tombol File baru / Folder baru di atas daftar file. Tulis path lengkap untuk membuat di dalam folder, mis. css/style.css.
  • Klik kanan (atau tombol ⋯) pada file: Buka, Preview halaman ini, Salin URL publik, Ganti nama (F2), Hapus (Del).
  • Klik kanan pada folder: File baru, Folder baru, Upload gambar ke folder itu.
  • Tombol Muat ulang dan Tutup semua folder ada di sebelahnya.

Upload gambar

  • Klik tombol Upload gambar, klik kanan → Upload gambar…, atau seret file langsung ke daftar file.
  • Format: .png .jpg .jpeg .gif .webp .svg .ico .avif — isi file diperiksa, jadi file lain yang diganti ekstensinya ditolak.
  • Nama dirapikan otomatis (huruf kecil, spasi → -). Bila nama sudah ada: Ganti, Simpan sebagai baru, atau Lewati.

Memakai gambar di halaman

Klik gambar di panel file untuk melihatnya (ukuran piksel & file), lalu salin path, tag <img>, atau url() CSS.

index.html
<img src="/images/logo.png" alt="Logo Toko Kue">
style.css
.hero { background-image: url('/images/hero.jpg'); }
💡 AI tahu daftar gambar di project-mu, jadi kamu bisa menulis: “pakai gambar /images/hero.jpg sebagai latar bagian hero”. AI tidak bisa membuat atau mengubah gambar — upload sendiri gambar yang dibutuhkan.
BatasGratisProUnlimited
Ukuran satu file kode512 KB (.html · .css · .js)
Ukuran satu gambar1 MB5 MB10 MB
Total storage per project20 MB100 MB250 MB
Jumlah file & folder5002.0005.000

F4Editor Kode

Editor ala VS Code untuk mengubah HTML, CSS, dan JavaScript secara langsung.

Menyimpan

  • Auto-save (sakelar di bawah editor): tersimpan sendiri saat mengetik, preview ikut berubah.
  • Ctrl/⌘ S simpan file aktif · menu avatar → Simpan semua.
  • Saat menutup tab yang belum tersimpan, kamu ditanya: Simpan / Jangan simpan / Batal.

Prediksi kode (AI) — gratis

  • Berhenti mengetik sebentar → AI menebak lanjutannya dalam teks abu-abu.
  • Tab menerima · Esc atau lanjut mengetik mengabaikan.
  • Tidak memakai kredit (ada batas harian). Matikan di Pengaturan.

Klik kanan → ✦ AI

  • Blok (pilih) beberapa baris kode, lalu klik kanan:
  • ✦ Minta AI mengubah kode ini — mengisi kotak AI dengan kode itu.
  • ✦ Tanya AI tentang kode ini — untuk penjelasan.
  • Permintaan tidak langsung dikirim; kamu bisa melengkapinya dulu.

Cari & navigasi

  • Ctrl/⌘ F cari di file · Ctrl/⌘ B tampil/sembunyi panel file.
  • Breadcrumb di atas editor menunjukkan lokasi file.
  • Bilah bawah: posisi kursor dan bahasa file.

📖 Baca Alur Kode — AI menjelaskan kodemu (gratis)

Tombol Baca Alur Kode di atas editor (untuk file .html, .css, .js) membuka panel penjelasan di samping editor. AI menjelaskan kode berurutan seperti saat dijalankan, bukan urut baris.

  1. Buka file, klik Baca Alur Kode. Tunggu AI menyusun langkah-langkahnya.
  2. Setiap langkah berisi judul, jenis (mulai, keputusan, perulangan, menunggu aksi, permintaan…), baris yang terlibat, penjelasan, contoh nilai nyata, dan istilah penting (klik untuk melihat artinya).
  3. Klik langkah → barisnya disorot di editor. Klik baris di editor → langkahnya terbuka. Pakai tombol ‹ ›, ▶ (putar otomatis), atau panah keyboard.
  4. Langkah yang merujuk file lain (halaman, class CSS, fungsi /api/fn/…) bisa diklik untuk membukanya, lalu ← Kembali.
  5. Lihat juga diagram alur, catatan (bug, perlu dicek, saran), dan kecepatan kode. Pakai Tanya AI untuk bertanya tentang langkah yang sedang dibuka.
💾 Hasil penjelasan disimpan per file. Membuka ulang file yang sama tidak bertanya ke AI lagi. Bila isi file berubah, panel memberi tanda dan tombol Perbarui. Gratis, dengan batas harian per akun.

F5Preview, Pilih Blok & Edit

Lihat website seperti yang dilihat pengunjung, di berbagai ukuran layar.

KontrolFungsi
Kolom alamatUbah path halaman (mis. /tentang) lalu tekan Enter untuk membuka halaman lain. Esc batal.
Desktop · Tablet · HPMengubah lebar preview: penuh, 768 px, atau 390 px — untuk mengecek tampilan responsif.
↻ Muat ulangMemuat ulang preview.
↗ Buka di tab baruMembuka halaman yang sedang di-preview di tab browser baru.
Badge DEVMuncul di mode publikasi manual: preview menampilkan versi dev, bukan website publik.
Ctrl/⌘ \Tampilkan/sembunyikan panel preview.

🎯 Pilih blok — ubah bagian tertentu saja

Daripada menjelaskan “bagian yang di bawah judul kedua…”, tunjuk langsung bagiannya di preview.

  1. Klik Pilih blok di atas preview.
  2. Arahkan kursor ke halaman, lalu klik bagian yang ingin diubah (maks. 5 blok, boleh dari beberapa halaman — pindah halaman lewat link di preview).
  3. Klik Tulis perintah. Blok terpilih muncul di atas kotak AI.
  4. Tulis perubahannya, mis. “jadikan 3 kolom dan beri ikon”, lalu kirim. AI fokus ke blok itu dan tidak mengubah bagian lain.
  5. Klik Selesai untuk keluar dari mode memilih.

✏️ Edit — ubah tulisan & gambar langsung di preview

Untuk mengganti judul, paragraf, label tombol, isi daftar, atau gambar tanpa membuka kode dan tanpa memakai kredit AI.

  1. Klik Edit di atas preview.
  2. Arahkan kursor ke halaman — teks yang bisa diubah diberi kotak biru — lalu klik teksnya dan ketik.
  3. Tekan Enter atau klik di tempat lain untuk menyimpan. Esc membatalkan.
  4. Klik Selesai untuk keluar dari mode edit.

Perubahan ditulis ke file HTML halaman itu (mis. index.html) di tempat yang sama persis — format seperti tebal atau tautan di dalam teks tetap ada. File-nya ikut terbuka di tab Code, jadi bisa dibatalkan dengan Ctrl/⌘ Z. Teks yang ditulis JavaScript (mis. pesan 'Password minimal 6 karakter.' di script.js) juga bisa diubah — string-nya diganti di file JS itu. Teks yang dirakit dari data (mis. “Kamu sudah klik 3 kali”) tidak bisa: saat diklik muncul tanda merah, ubah lewat kode atau minta AI. Pindah halaman: Alt+klik link.

Ganti gambar: di mode Edit, klik gambarnya. Pilih gambar lain dari project, klik Upload gambar baru…, atau tempel alamat gambar (https://…). Isi juga teks alternatif (alt) — deskripsi singkat gambar untuk pembaca layar dan mesin pencari — lalu Simpan. Yang bisa diganti di sini hanya gambar <img>; gambar latar dari CSS dan gambar <picture> dengan beberapa versi diubah lewat kode atau AI.

F6Asisten AI (Builder & Plan)

Buka tab AI atau tekan Ctrl/⌘ I. Teknik menulis prompt ada di Bagian 2.

🔨 Builder

AI langsung menulis/mengubah/menghapus file dan membuat tabel database.

  1. Pilih Builder di bawah kotak prompt.
  2. Tulis permintaan, tekan Enter (Shift+Enter = baris baru).
  3. Lihat progres & daftar file yang diubah. Klik file untuk melihat perbedaannya.
  4. Pilih Simpan untuk menerima atau Batalkan untuk mengembalikan semuanya.

🧭 Plan

AI hanya berdiskusi & menyusun rencana, tanpa mengubah file.

  1. Pilih Plan, ceritakan idemu.
  2. Tanya-jawab sampai rencananya pas.
  3. Tekan Jalankan rencana ini — AI pindah ke Builder dan mengerjakannya.

Fitur kotak prompt

FiturCara pakai
📎 Lampirkan gambarTombol Gambar, tempel (Ctrl/⌘ V), atau seret file. Maks. 3 gambar (JPG/PNG/WEBP, maks. 2 MB) — desain contoh, sketsa, atau screenshot error. Prompt bergambar memakai 2 kredit.
🎯 Blok terpilihDari Pilih blok. Hapus satu blok dengan tombol × pada chip-nya.
⏹ StopMenghentikan AI di tengah jalan. Kreditnya dikembalikan.
Panjang promptMaks. 20.000 karakter.

Percakapan & riwayat

⚙️ Prompt tetap berjalan walau tab ditutup. Setiap prompt dikerjakan di server. Refresh atau tutup tab tidak membatalkannya; saat editor dibuka lagi, progresnya tersambung kembali dan tombol Simpan/Batalkan tetap tersedia. Saat AI sedang ramai, panel menampilkan posisi antrean.
💰 Kredit aman. Kredit dipotong saat prompt dikirim, dan dikembalikan bila prompt gagal, kamu hentikan, atau antrean penuh. Sebelum AI mengubah file, versi otomatis disimpan di Riwayat.

Tombol “✦ … dengan AI” di fitur lain

Banyak fitur punya tombol bertanda ✦ yang mengisi kotak AI dengan permintaan beserta konteksnya (tidak langsung dikirim):

Di manaContoh tombol
FungsiBuat dengan AI, Ubah, Perbaiki dengan AI (dari log/uji coba yang gagal)
DatabasePakai tabel di website, Buat form dengan AI
DiagramPerbaiki temuan dengan AI
ConsolePerbaiki dengan AI pada baris error
Editor kodeKlik kanan → ubah / tanya tentang kode terpilih
Penjelasan fitur (ⓘ)Coba sekarang — contoh prompt untuk fitur itu

F7Database (Tab Data)

Simpan data pengunjung & konten secara permanen — mirip spreadsheet, langsung bisa dipakai dari halaman website.

Membuat tabel

  1. Buka tab Data, klik + (Tabel baru) atau + Buat tabel.
  2. Isi nama tabel (mis. ucapan), lalu tambahkan kolom: nama, tipe, centang Wajib bila harus diisi, dan Privat bila tidak boleh terlihat pengunjung.
  3. Klik Buat tabel. Kolom id dan created_at dibuat otomatis.
💡 Lebih cepat: minta AI di mode Builder — “buat buku tamu dengan form nama dan pesan” — tabel dan halamannya dibuat sekaligus.

Tipe kolom

TipeUntukContoh nilai
TeksNama, pesan, alamat (maks. 10.000 karakter)Budi
AngkaHarga, jumlah, skor150000
Ya/tidakHadir, setuju, sudah dibayartrue / false
TanggalTanggal lahir, jadwal acara2026-12-31 atau 2026-12-31T19:00
RelasiMenunjuk baris di tabel lain (mis. pesanan → produk)12 (id baris tujuan)
GambarFoto produk, avatar, bukti transfer/uploads/produk/abc.jpg
⚠️ Tipe kolom tidak bisa diubah setelah dibuat. Nama kolom & tabel bisa diganti (klik nama, ubah, tekan Enter).

Akses: siapa boleh apa

Klik Atur pada tabel. Setiap operasi bisa Publik (semua pengunjung) atau Hanya kamu (pemilik, lewat editor). Bawaannya semua Hanya kamu.

OperasiArtinyaSaran umum
listMembaca daftar dataPublik untuk buku tamu, katalog, papan skor
viewMembaca satu dataPublik untuk halaman detail produk
createMenambah dataPublik untuk form kontak, RSVP, pesanan
updateMengubah dataHanya kamu (pengunjung anonim)
deleteMenghapus dataHanya kamu

Kolom Privat tidak pernah dikirim ke pengunjung walau list publik — cocok untuk email, nomor HP, alamat.

Mengelola isi tabel

Memakai database dari kode website

RequestFungsi
GET /api/db/<tabel>?sort=-created_at&limit=20&offset=0Daftar baris → { rows, total }. Tambah &kolom=nilai untuk menyaring.
GET /api/db/<tabel>/<id>Satu baris
POST /api/db/<tabel>Tambah baris (body JSON)
PATCH /api/db/<tabel>/<id>Ubah baris
DELETE /api/db/<tabel>/<id>Hapus baris
POST /api/db/<tabel>/upload?column=<kolom>Upload gambar untuk kolom Gambar → { url }
GET /api/db/<tabel>?expand=<kolom_relasi>Ikut mengambil data dari tabel yang ditunjuk kolom relasi
script.jssimpan & tampilkan ucapan
// simpan
const res = await fetch('/api/db/ucapan', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ nama, pesan }),
});
if (!res.ok) alert((await res.json()).error);

// tampilkan 20 terbaru
const { rows } = await (await fetch('/api/db/ucapan?sort=-created_at&limit=20')).json();
script.jsupload foto lalu simpan alamatnya
const up = await fetch('/api/db/produk/upload?column=gambar', { method: 'POST', body: fileInput.files[0] });
const { url } = await up.json();          // mis. "/uploads/produk/lx3k-9f2a.jpg"
await fetch('/api/db/produk', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ nama, gambar: url }),
});
⚠️ Jangan simpan gambar sebagai base64 di kolom teks — akan ditolak. Pakai kolom bertipe Gambar dan upload seperti contoh di atas. Pengunjung hanya bisa upload bila akses create atau update tabel itu publik.
Batas databaseGratisProUnlimited
Ukuran per project10 MB50 MB100 MB
Jumlah tabel · kolom20 tabel · 30 kolom per tabel
Request dari pengunjung300 baca & 60 tulis per menit per pengunjung · maks. 20 upload / 10 menit

F8Fungsi Serverless (Backend)

Kode JavaScript yang berjalan di server, bukan di browser pengunjung — untuk kunci API rahasia, perhitungan yang tidak boleh diakali, notifikasi, atau memanggil layanan lain.

Membuat & mencoba fungsi

  1. Buka tab Fungsi, klik + Fungsi baru. Beri nama (huruf kecil, angka, - atau _, maks. 40), mis. kirim-pesan.
  2. File functions/kirim-pesan.js dibuat dengan kode contoh. Klik Buka kode untuk mengubahnya.
  3. Klik Coba: pilih method, isi query & body JSON, lalu jalankan. Hasil, status, waktu, dan console.log tampil langsung.
  4. Panggil dari halaman website lewat /api/fn/kirim-pesan. Salin URL menyalin alamat lengkapnya.
💡 Atau klik ✦ Buat dengan AI dan ceritakan fungsinya, mis. “kirim notifikasi Telegram setiap ada pesan baru dari form kontak”.

Bentuk kode fungsi

functions/pesan.js
export default async function (req, { db, env, fetch, ai }) {
  // req: { method, query, headers, body }
  const row = await db.insert('pesanan', {
    nama: req.body.nama, total: 150000,
  });
  return { ok: true, id: row.id }; // dikirim sbg JSON
}

Memanggil dari halaman

script.js
const res = await fetch('/api/fn/pesan', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ nama: 'Ani' }),
});
const data = await res.json();

Yang tersedia di dalam fungsi

ObjekKegunaan
reqmethod, query, headers, body (sudah di-parse bila JSON). Untuk jalan terjadwal, req.method bernilai "CRON".
dbDatabase project sebagai pemilik (aturan akses publik tidak berlaku): db.list(tabel, { sort, limit, offset, filter }), db.get, db.insert, db.update, db.delete.
envNilai rahasia dari Rahasia (env), mis. env.TELEGRAM_TOKEN.
fetchMemanggil API luar (maks. 10 per eksekusi; tidak bisa ke website rakit.io — pakai db).
aiMemakai AI dengan API key-mu sendiri — lihat AI di Fungsi.
BalasanNilai biasa dikirim sebagai JSON. Untuk kendali penuh: new Response(teks, { status, headers }) atau Response.json(data, { status }). Error yang dilempar → status 500 { error }.
🧩 Fungsi berjalan di sandbox, bukan Node.js: tidak ada require, paket npm, atau akses file. Kode di folder functions/ tidak pernah bisa dibaca pengunjung.

Referensi lengkap

APIKeterangan
req.methodGET, POST, PUT, PATCH, DELETE… atau CRON saat dijalankan jadwal.
req.pathPath yang dipanggil, mis. /api/fn/pesan.
req.queryObjek parameter URL (nilainya teks): /api/fn/cari?q=kue → req.query.q.
req.headersHeader request (nama huruf kecil). req.headers['x-client-ip'] = IP pengunjung. Cookie tidak diteruskan.
req.bodyObjek bila request mengirim JSON (Content-Type: application/json), selain itu teks mentah. Maks. 1 MB.
await req.text() · await req.json()Body sebagai teks / di-parse sebagai JSON.
db.list(tabel, { sort, limit, offset, filter })→ { rows, total }. sort: '-created_at' (tanda - = terbaru dulu), limit maks. 100, filter: { status: 'baru' } = kolom sama dengan nilai.
db.get(tabel, id)Satu baris (error bila tidak ada).
db.insert(tabel, data)Menambah baris → baris baru beserta id & created_at.
db.update(tabel, id, data)Mengubah kolom yang dikirim saja → baris terbaru.
db.delete(tabel, id)Menghapus baris → { ok: true }.
env.NAMARahasia project (maks. 30 rahasia, nama HURUF_BESAR). Belum diisi → undefined.
await fetch(url, { method, headers, body })Memanggil layanan luar. body berupa objek otomatis dijadikan JSON. Hasil: ok, status, headers.get(nama), await text(), await json(). Maks. 10 panggilan, 8 detik & 2 MB jawaban per panggilan.
console.log/info/warn/errorTampil di Coba, Log eksekusi, dan tab Console (BE). Objek dicetak sebagai JSON. Juga ada console.time/timeEnd, count, table, assert.
return nilaiStatus 200 + JSON. return tanpa nilai → status 204 (kosong).
Response.json(data, { status, headers })JSON dengan status sendiri, mis. 400 untuk input salah.
new Response(teks, { status, headers })Balasan teks/HTML/CSV. Header yang boleh: content-type, cache-control, content-disposition, location, etag, access-control-*, dan x-….
Response.redirect(url, 302)Mengalihkan pengunjung ke alamat lain.
throw new Error('…')Status 500. Di versi dev & uji coba pesan lengkapnya tampil; di website publik pengunjung hanya melihat “Fungsi gagal dijalankan”, detailnya di Log.

Contoh kode siap pakai

Salin ke functions/<nama>.js, sesuaikan nama tabel/kolom, lalu uji dengan tombol Coba.

functions/kontak.jsvalidasi, simpan, kirim notifikasi Telegram
export default async function (req, { db, env, fetch }) {
  if (req.method !== 'POST') return Response.json({ error: 'Pakai POST' }, { status: 405 });

  const { nama, email, pesan } = req.body || {};
  if (!nama || !pesan) return Response.json({ error: 'Nama dan pesan wajib diisi' }, { status: 400 });

  // tabel "pesan" cukup "Hanya kamu": db di fungsi bekerja sebagai pemilik
  const row = await db.insert('pesan', { nama, email, pesan });

  // rahasia: TELEGRAM_TOKEN & TELEGRAM_CHAT_ID (tab Fungsi → Rahasia)
  const tg = await fetch(`https://api.telegram.org/bot${env.TELEGRAM_TOKEN}/sendMessage`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: { chat_id: env.TELEGRAM_CHAT_ID, text: `Pesan baru dari ${nama}:\n${pesan}` },
  });
  if (!tg.ok) console.warn('Telegram gagal', tg.status, await tg.text());

  return { ok: true, id: row.id };
}
functions/checkout.jshitung total di server (harga tidak bisa diakali)
export default async function (req, { db }) {
  const { nama, telepon, items } = req.body || {};   // items: [{ id: 3, jumlah: 2 }, …]
  if (!Array.isArray(items) || !items.length) {
    return Response.json({ error: 'Keranjang kosong' }, { status: 400 });
  }

  let total = 0;
  const rincian = [];
  for (const it of items) {
    const p = await db.get('produk', it.id);           // harga diambil dari database, bukan dari browser
    const jumlah = Math.max(1, Math.min(99, Number(it.jumlah) || 1));
    if (p.stok < jumlah) return Response.json({ error: `Stok ${p.nama} tidak cukup` }, { status: 409 });
    total += p.harga * jumlah;
    rincian.push(`${p.nama} x${jumlah}`);
    await db.update('produk', p.id, { stok: p.stok - jumlah });
  }

  const order = await db.insert('pesanan', { nama, telepon, item: rincian.join(', '), total, status: 'baru' });
  return { ok: true, nomor: order.id, total };
}
functions/cuaca.jsmemanggil API luar tanpa membocorkan API key (GET)
export default async function (req, { env, fetch }) {
  const kota = req.query.kota || 'Jakarta';
  const url = `https://api.openweathermap.org/data/2.5/weather?q=${encodeURIComponent(kota)}`
            + `&units=metric&lang=id&appid=${env.OWM_KEY}`;
  const res = await fetch(url);
  if (!res.ok) return Response.json({ error: 'Data cuaca tidak tersedia' }, { status: 502 });

  const d = await res.json();
  return Response.json(
    { kota: d.name, suhu: d.main.temp, cuaca: d.weather[0].description },
    { headers: { 'cache-control': 'public, max-age=600' } },   // cache 10 menit
  );
}
// dipanggil dari halaman: fetch('/api/fn/cuaca?kota=Bandung')
functions/admin-pesanan.jssatu fungsi, beberapa method + kunci sederhana
export default async function (req, { db, env }) {
  // kunci sederhana untuk halaman admin pribadi (rahasia ADMIN_KEY)
  if (req.headers['x-admin-key'] !== env.ADMIN_KEY) {
    return Response.json({ error: 'Tidak diizinkan' }, { status: 401 });
  }

  switch (req.method) {
    case 'GET':
      return db.list('pesanan', { sort: '-created_at', limit: 50, filter: req.query.status ? { status: req.query.status } : {} });
    case 'PATCH':
      return db.update('pesanan', req.query.id, { status: req.body.status });
    case 'DELETE':
      return db.delete('pesanan', req.query.id);
    default:
      return Response.json({ error: 'Method tidak didukung' }, { status: 405 });
  }
}
// dari halaman: fetch('/api/fn/admin-pesanan?status=baru', { headers: { 'X-Admin-Key': kunci } })
functions/laporan-harian.jsdijalankan jadwal (Pro/Unlimited)
export default async function (req, { db, env, fetch }) {
  if (req.method !== 'CRON') return Response.json({ error: 'Hanya untuk jadwal' }, { status: 403 });

  const sejak = Date.now() - 24 * 3600e3;                     // 24 jam terakhir (created_at dalam UTC)
  const hariIni = new Date(Date.now() + 7 * 3600e3).toISOString().slice(0, 10);   // tanggal WIB untuk judul
  const { rows } = await db.list('pesanan', { sort: '-created_at', limit: 100 });
  const baru = rows.filter((r) => Date.parse(r.created_at) >= sejak);
  const omzet = baru.reduce((n, r) => n + (r.total || 0), 0);

  console.log(`Laporan ${hariIni}: ${baru.length} pesanan, Rp${omzet}`);
  await fetch('https://api.resend.com/emails', {                 // kirim email via Resend
    method: 'POST',
    headers: { Authorization: `Bearer ${env.RESEND_KEY}`, 'Content-Type': 'application/json' },
    body: { from: 'toko@domainmu.com', to: env.EMAIL_SAYA, subject: `Laporan ${hariIni}`,
            html: `<p>${baru.length} pesanan, total Rp${omzet}</p>` },
  });
}
// atur di tab Fungsi → Jadwal → "Setiap hari jam 21:00"
functions/unduh-csv.jsbalasan file & redirect
export default async function (req, { db, env }) {
  if (req.query.key !== env.ADMIN_KEY) return Response.redirect('/', 302);   // bukan pemilik → ke beranda

  const { rows } = await db.list('pendaftar', { sort: 'id', limit: 100 });
  const csv = ['id,nama,email', ...rows.map((r) => `${r.id},"${r.nama}","${r.email}"`)].join('\n');
  return new Response(csv, {
    headers: {
      'content-type': 'text/csv; charset=utf-8',
      'content-disposition': 'attachment; filename="pendaftar.csv"',
    },
  });
}
functions/cs.jschatbot dengan riwayat (butuh Provider AI)
export default async function (req, { ai }) {
  const riwayat = (req.body?.messages || []).slice(-10);      // [{ role: 'user'|'assistant', content }]
  const { text } = await ai.chat({
    system: 'Kamu CS Toko Kue Bu Sari. Jam buka 08.00–20.00. Jawab singkat & ramah.',
    messages: riwayat,
    maxTokens: 400,
  });
  return { reply: text };
}
script.jsMemanggil fungsi & menangani error di halaman
async function kirim(data) {
  const res = await fetch('/api/fn/kontak', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(data),
  });
  const hasil = await res.json().catch(() => ({}));
  if (!res.ok) throw new Error(hasil.error || 'Gagal mengirim');   // pesan dari Response.json({ error })
  return hasil;
}
💡 Kebiasaan baik: periksa input dulu dan balas 400 dengan pesan jelas · jangan percaya harga/total dari browser · simpan semua kunci di Rahasia · pakai console.log lalu lihat hasilnya di Coba atau Log · batas waktu 10 detik, jadi hindari banyak fetch berurutan.
Batas lainNilai
Request ke satu website120 per menit (semua pengunjung) · 60 per menit per pengunjung
Body request · jawaban fetch1 MB · 2 MB
Output console per eksekusi16 KB (sisanya dipotong)
Versi dev (publikasi manual)Fungsi dev dipanggil di namamu--dev.rakit.io/api/fn/… dan memakai database dev

Rahasia, jadwal, dan log

🔑 Rahasia (env)

Isi nama (mis. TELEGRAM_TOKEN) dan nilainya, klik Simpan. Baca di kode lewat env.TELEGRAM_TOKEN. Nilai tidak ditampilkan lagi di editor.

⏱ Jadwal Pro / Unlimited

Klik Jadwal pada fungsi: setiap 5/15/30 menit, setiap jam, setiap hari jam tertentu, setiap minggu, atau cron kustom (waktu WIB). Paling sering: Pro 15 menit, Unlimited 5 menit.

📜 Log eksekusi

Daftar eksekusi terakhir (dipicu pengunjung, uji coba, atau jadwal) dengan status, durasi, error, dan console. Eksekusi gagal punya tombol ✦ Perbaiki dengan AI.

📊 Kuota

Meteran di atas tab menunjukkan eksekusi hari ini. Batas: 10 detik & 64 MB per eksekusi.

Eksekusi per hari (WIB)GratisProUnlimited
Semua fungsi di akun1.00020.000100.000
⚠️ Jangan pernah menulis API key/token di file .html atau .js halaman — siapa pun bisa melihatnya. Simpan di Rahasia (env) dan pakai lewat fungsi.

F9AI di Fungsi (Provider AI)

Bangun fitur AI di websitemu — chatbot, ringkasan, ekstraksi data, cek gambar — memakai API key milikmu sendiri.

Menambahkan provider

  1. Tab Fungsi → bagian Provider AI → tambah provider.
  2. Pilih jenis: OpenAI, Anthropic Claude, Google Gemini, atau kompatibel OpenAI (ada tombol cepat DeepSeek, Groq, OpenRouter, Mistral, Together).
  3. Isi nama (dipakai di kode), API key, model chat, dan model embedding (opsional). Tandai satu sebagai default.
  4. Klik Simpan & tes untuk memastikan key dan modelnya berfungsi. Maks. 10 provider per project.
functions/bantu.js
export default async function (req, { ai }) {
  const { text } = await ai.chat(req.body.pertanyaan, { system: 'Kamu CS toko kue. Jawab singkat.' });
  const data = await ai.json('Ambil nama & HP dari: ' + req.body.pesan, { nama: 'string', hp: 'string' });
  const cek  = await ai.chat('Apakah ini bukti transfer?', { images: ['/uploads/bukti/abc.jpg'] });
  const [a, b] = await ai.embed(['kue coklat', 'brownies']);
  return { text, data, cek: cek.text, mirip: ai.similarity(a, b) };
}
PerintahHasil
ai.chat(prompt, { system, images, provider, model, temperature, maxTokens }){ text, model, provider, usage }
ai.json(prompt, bentuk)Objek sesuai bentuk yang diminta
ai.embed(teks | [teks])Vektor untuk pencarian makna (Anthropic tidak punya embedding)
ai.similarity(a, b)Kemiripan dua vektor (0–1)
ai.providers()Daftar provider terpasang (tanpa key)
🛡️ API key-mu aman. Key disimpan di server, tidak pernah dikirim ke browser maupun ke kode fungsi (editor hanya menampilkan 4 karakter terakhir), dan ikut terhapus saat provider dihapus. Biaya ditagih provider ke akunmu — rakit.io tidak memotong kredit. Pasang batas pengeluaran di dashboard provider.

Batas: maks. 5 panggilan ai.* per eksekusi, 60 detik per panggilan, gambar maks. 4 (5 MB). Waktu menunggu AI tidak dihitung ke batas 10 detik fungsi. Pemakaian per provider tampil di tab Fungsi.

F10Diagram Buatan AI

AI menggambar struktur websitemu dari file & database — untuk memahami gambaran besar, dokumentasi, atau tugas kuliah.

JenisMenunjukkan
Use CaseAktor dan apa yang bisa mereka lakukan di website
ActivityAlur proses utama pengunjung, dengan cabang keputusan
SequenceUrutan interaksi Pengunjung → Halaman → API → database/layanan luar
ClassTabel dan modul JavaScript beserta atribut, method, dan relasinya
StatePerubahan status objek penting (mis. pesanan)
ERDTabel, kolom, tipe, wajib/privat, dan relasi
Peta halamanHalaman, link antarhalaman, file CSS/JS — link rusak & file hilang ditandai
Alur dataHalaman/script/fungsi mana memakai tabel apa — request yang akan ditolak ditandai
  1. Buka tab Diagram, pilih jenisnya.
  2. Klik Update diagram — AI menggambar dari kondisi terbaru (memakai 1 kredit, dikembalikan bila gagal). Diagram tersimpan dan tidak berubah sendiri.
  3. Baca panel Temuan: catatan AI seperti tabel yang bisa dihapus siapa pun atau link rusak.
  4. Bila gambar gagal ditampilkan, klik Perbaiki dengan AI (gratis, maks. 2 kali per diagram).
  5. Salin kode Mermaid atau unduh sebagai SVG. Tombol ⓘ menjelaskan cara membaca jenis diagram yang dibuka.

Zoom & geser

ZoomGeser
MouseScroll roda; klik dua kali (Shift = perkecil)Seret; Shift + scroll = mendatar
TouchpadCubit, atau Ctrl/⌘ + scrollGeser dua jari
Layar sentuhCubit dua jariSeret satu jari
Keyboard+ / −, 0 pas layar, 1 ukuran asliTombol panah

F11Riwayat Versi

“Save point” untuk seluruh file project. Bereksperimen tanpa takut merusak.

Kapan versi tersimpan

  • Otomatis saat kamu mulai mengedit (paling sering tiap 10 menit).
  • Otomatis sebelum AI mengubah file.
  • Otomatis sebelum mengembalikan versi (jadi restore pun bisa dibatalkan).
  • Manual: tombol Simpan versi sekarang dengan nama sendiri, mis. “sebelum ganti desain”.

Mengembalikan

  1. Buka tab Riwayat, pilih versi.
  2. Lihat file berlabel Berbeda, Sudah dihapus, atau File baru. Klik Lihat perbedaan.
  3. Kembalikan file ini untuk satu file, atau Kembalikan ke versi ini untuk seluruh project.
⚠️ Database tidak ikut disimpan/dikembalikan, supaya data kiriman pengunjung tidak hilang. Mengembalikan seluruh project juga menghapus file yang dibuat setelah versi itu.
Batas riwayat per projectGratisProUnlimited
Disimpan selama7 hari30 hari90 hari
Jumlah versi202002.000

Riwayat tidak dihitung ke kuota storage.

F12Console — Mencari Penyebab Error

Semua pesan dari websitemu di satu tempat. Angka merah di tab menandakan error baru.

SumberIsinya
FE (frontend)console.log dan error dari halaman di preview
BE (backend)Log dan error fungsi serverless
JaringanRequest halaman ke server (mis. fetch('/api/db/produk')) beserta status-nya
SistemCatatan seperti halaman yang dimuat
StatusArtinya
2xxBerhasil
4xxPermintaan ditolak — mis. 403 akses tabel belum publik, 404 tabel/halaman tidak ada, 400 data tidak valid
5xxError di server/fungsi

F13Publikasi: Langsung Tayang atau Dev/Prod

Atur kapan perubahan terlihat oleh pengunjung. Buka menu avatar → Mode publikasi.

⚡ Langsung tayang bawaan

Setiap perubahan langsung terlihat di namamu.rakit.io. Cocok untuk belajar dan mencoba-coba.

🚀 Publikasi manual (dev/prod)

Kamu mengedit versi dev di namamu--dev.rakit.io (bisa dibagikan untuk minta pendapat). Website publik baru berubah saat kamu menekan Publikasikan. Database dev terpisah untuk uji coba.

Mempublikasikan perubahan

  1. Titik pada tombol Publikasikan (kanan atas) menandakan ada perubahan yang belum tayang.
  2. Klik tombolnya — tampil daftar file baru, diubah, dihapus, dan perubahan struktur database.
  3. Klik Publikasikan. Data & gambar kiriman pengunjung di website publik tetap aman; data uji coba dev tidak ikut.
  4. Bila ada tabel/kolom yang akan dihapus, centang konfirmasi dulu — datanya akan hilang dari website publik.
⚠️ Kembali dari manual ke langsung tayang membuat perubahan yang belum dipublikasikan langsung tayang, dan data uji coba di dev diganti data asli dari website publik.

F14Kredit AI, Langganan & Pembayaran

Badge kredit di panel AI menunjukkan sisa kreditmu. Klik badge itu atau menu avatar → Langganan & kredit AI.

Berapa biaya tiap fitur?

FiturBiaya
Prompt AI (Builder / Plan)1 kredit
Prompt dengan gambar2 kredit
Update diagram1 kredit
Prediksi kode, Baca Alur Kode, perbaikan diagramGratis (ada batas harian)
AI di fungsi (ai.*)Ditagih provider ke API key-mu, bukan kredit rakit.io
Prompt gagal / dihentikan / antrean penuhKredit dikembalikan

Sumber kredit (dipakai berurutan)

  1. Kuota langganan — bila berlangganan Pro/Unlimited.
  2. Bonus awal untuk akun baru (sekali pakai), lalu kredit gratis harian — reset pukul 00.00 WIB, sisanya tidak menumpuk.
  3. Kredit yang dibeli — tidak hangus.

Paket

GratisProUnlimited
AIKredit gratis harianKuota kredit tiap 30 hariTanpa kuota bulanan, ada batas prompt per hari
Storage file / project20 MB100 MB250 MB
Database / project10 MB50 MB100 MB
File & folder5002.0005.000
Ukuran gambar1 MB5 MB10 MB
Riwayat versi7 hari / 2030 hari / 20090 hari / 2.000
Eksekusi fungsi / hari1.00020.000100.000
Jadwal fungsi—min. 15 menitmin. 5 menit

Harga dan kuota AI terbaru tampil di menu Langganan & kredit AI.

Membayar dengan QRIS

  1. Pilih paket kredit atau langganan, lalu klik bayar.
  2. Pindai kode QRIS dengan aplikasi bank atau e-wallet mana pun.
  3. Biarkan jendela pembayaran terbuka — kredit/paket aktif otomatis begitu pembayaran diterima.

F15Pengaturan & Pintasan Keyboard

Menu avatar → Pengaturan. Pengaturan disimpan di browser yang sedang dipakai.

Tampilan & bahasa

Tema Terang (kertas krem) atau Gelap. Warna editor kode dan diagram ikut menyesuaikan. Pilih bahasa tampilan Bahasa Indonesia atau English — penjelasan, diagram, dan pesan dari AI ikut bahasa itu.

Editor kode

Prediksi kode otomatis (AI) — nyalakan/matikan tebakan kode abu-abu.

PintasanAksi
Ctrl/⌘ SSimpan file
⌥ ⌘ SSimpan semua
Ctrl/⌘ FCari di file
Ctrl/⌘ BTampil/sembunyi panel file
Ctrl/⌘ \Tampil/sembunyi preview
Ctrl/⌘ IBuka Asisten AI
Enter · Shift EnterKirim prompt · baris baru
Tab · EscTerima · abaikan prediksi kode
F2 · DelGanti nama · hapus file terpilih
← →Pindah langkah di Baca Alur Kode

F16Masalah Umum & Solusinya

Cek di sini dulu sebelum bingung.

MasalahPenyebab & solusi
Form tidak tersimpan, Console menunjukkan 403Akses create tabel masih “Hanya kamu”. Buka tab Data → Atur → jadikan Publik.
Data tidak muncul, status 404Nama tabel di kode berbeda dengan di tab Data (perhatikan huruf & garis bawah).
Kolom email tidak tampil di halamanKolom bertanda Privat memang tidak dikirim ke pengunjung. Lihat di tab Data.
Gambar tidak munculPath salah (huruf besar/kecil berpengaruh). Klik gambar di panel file → salin path-nya.
Perubahan tidak terlihat di website publikMode publikasi manual aktif — tekan Publikasikan. Atau file belum tersimpan.
Hasil AI tidak sesuaiTekan Batalkan, lalu tulis ulang lebih spesifik, atau pakai Pilih blok. Bisa juga kembali lewat tab Riwayat.
“AI sedang penuh”Antrean sedang ramai; kredit dikembalikan. Coba lagi sebentar.
Kredit habisTunggu reset 00.00 WIB, beli kredit, atau berlangganan.
File/gambar ditolak karena kuotaHapus file yang tidak dipakai, perkecil gambar, atau upgrade paket.
Fungsi error / timeoutLihat Log eksekusi di tab Fungsi, lalu ✦ Perbaiki dengan AI. Pastikan rahasia (env) yang dipakai sudah diisi.
Tombol diam saja saat diklikBuka tab Console → saring FE → baca error merah → ✦ Perbaiki dengan AI.
Bagian 2

Cheat Sheet Prompt

Cara menulis perintah ke AI Builder agar hasilnya tepat sejak percobaan pertama — lengkap dengan contoh siap salin.

1Dasar — Cara AI Bekerja

Pahami dua mode & tiga aturan emas agar hasilnya tepat sejak percobaan pertama.

🧭 Mode Plan

AI hanya menyusun rencana — tidak menyentuh file. Cocok untuk proyek baru atau ide yang masih kabur. Akhiri dengan menekan “Jalankan rencana ini”.

Mode PlanRencanakan website portfolio fotografi untuk fotografer pernikahan.

🔨 Mode Builder

AI langsung membuat/mengubah file dan tabel database. Cocok untuk membangun, mengubah, atau memperbaiki.

Mode BuilderBuat website portfolio fotografi pernikahan dengan galeri, halaman tentang, dan form kontak.

Tiga aturan emas

  • Sebut tujuan, bukan cuma nama. “Website untuk toko kue rumahan yang terima pesanan online” jauh lebih baik daripada “website toko kue”.
  • Sebut bagiannya satu per satu. Halaman apa, isi tiap bagian, data apa yang disimpan.
  • Satu prompt = satu perubahan besar. Untuk hal berbeda, kirim prompt terpisah agar mudah diperbaiki dan hemat kredit.
💡 Rumus prompt yang baik: [Jenis situs] untuk [siapa/tujuan], dengan [bagian-bagian], gaya [warna/suasana], dan [data yang perlu disimpan]

2Struktur & Halaman

Menentukan file, halaman, dan navigasi.

Halaman lengkapBuat website profil perusahaan dengan halaman: - index.html — hero, layanan, keunggulan, testimoni - tentang.html — sejarah, visi misi, tim - layanan.html — daftar layanan lengkap - kontak.html — form + peta + info Buat menu navigasi yang sama di semua halaman.
Struktur folderPisahkan CSS ke folder css/style.css dan JavaScript ke js/app.js. Gunakan file terpisah, jangan inline.

Layout dari awal

BuilderBuat layout grid: header lengket di atas, konten 3 kolom responsif, footer dengan 4 kolom tautan.

Menambah halaman

BuilderTambahkan halaman galeri.html dengan judul "Galeri", galeri foto grid masonry, dan tautkan ke menu.
💡 Responsif & aksesibilitas sudah jadi bawaan AI. Untuk memastikan, tulis: “pastikan responsif di HP dan semua gambar punya alt”.

3Desain & Gaya Visual

Cara menyebut warna, font, dan suasana dengan efektif.

Gaya visualGunakan desain modern minimalis: - Warna utama hijau tua (#14532d), aksen kuning (#facc15) - Font Poppins dari Google Fonts untuk judul, Inter untuk teks - Sudut membulat, bayangan halus, banyak ruang kosong - Tema terang (light mode)
Yang diinginkanCara menulis prompt
Warna spesifikwarna utama #2563eb, latar krem #fef9f3
Gaya umumgaya korporat bersih & profesional / playful & ceria
Fontfont "Plus Jakarta Sans" dari Google Fonts
Tema gelapdark mode dengan tombol pengalih tema
Animasianimasi fade-in saat halaman di-scroll
Ikonikon dari Lucide (via CDN)

Ikon & ilustrasi

BuilderPakai ikon Lucide dari CDN untuk fitur layanan. Gunakan placeholder gambar dari picsum.photos untuk sementara.

Tema gelap

BuilderTambahkan tombol pengalih tema terang/gelap di kanan atas. Simpan pilihan di localStorage dan ingat saat dibuka kembali.
⚠️ Tidak ada build step / npm. Library eksternal (Bootstrap, Tailwind CDN, Chart.js, dsb.) hanya bisa dimuat dari CDN lewat <script> atau <link>. Tulis jelas, mis. “pakai Bootstrap 5 dari CDN”.

4Responsive Design — Desktop / Mobile

Cara meminta tampilan yang berbeda di HP dan desktop, atau mengunci ke salah satu.

📐 Bawaan AI sudah responsif. Kalau tidak disebut, AI membuat tata letak yang menyesuaikan sendiri (desktop & mobile). Bagian ini untuk saat kamu butuh perilaku khusus — misal satu halaman hanya boleh untuk desktop, atau tampilan mobile jauh berbeda.

Pilih arah tampilan

Bawaan

Responsif (dua-duanya)

Tata letak menyesuaikan layar. Tidak perlu ditulis — ini default.

Desktop

Desktop-only

Halaman dirancang untuk layar lebar (mis. dashboard, tabel data).

Mobile

Mobile-only

Dirancang khusus layar HP (mis. aplikasi absensi, kalkulator).

Desktop-only

Halaman dibuat untuk layar lebar. Pengunjung HP melihat pesan “buka di desktop”.

BuilderHalaman dashboard ini khusus desktop. Jika dibuka di layar sempit (HP), sembunyikan isinya dan tampilkan pesan: "Halaman ini lebih nyaman dibuka di komputer. Silakan buka lewat layar yang lebih besar."
BuilderBuat layout desktop-only dengan lebar minimum 1200px, sidebar kiri tetap (fixed), dan area konten lebar. Kunci agar tidak "pecah" di layar kecil.

Mobile-only

Dirancang untuk HP: tombol besar, satu kolom, navigasi bawah.

BuilderBuat halaman ini khusus untuk HP: - Satu kolom, tombol besar & mudah disentuh - Bilah navigasi tetap di bawah layar - Lebar maksimal 480px, di tengah jika dibuka di desktop - Teks cukup besar untuk dibaca sambil berdiri
BuilderOptimalkan khusus layar HP: sembunyikan elemen yang hanya berguna di desktop, gunakan menu "hamburger", dan utamakan kecepatan serta area sentuh ≥ 44px.

Perilaku berbeda per ukuran layar

Kalau ingin elemen muncul/hilang atau berubah bentuk di ukuran tertentu:

Sembunyikan di HP

BuilderSembunyikan sidebar dan tabel lebar saat dibuka di HP, tapi tetap tampil utuh di desktop.

Ubah bentuk

BuilderDi desktop menu tampil mendatar di atas. Di HP, ubah jadi tombol hamburger yang membuka panel geser dari samping.

Kolom menyesuaikan

BuilderKatalog tampil 4 kolom di desktop, 2 kolom di tablet, 1 kolom di HP.

Tabel jadi kartu

BuilderTabel data di desktop, tapi berubah jadi daftar kartu bertumpuk saat di HP agar tidak perlu geser-geser.

Ukuran layar (titik henti umum)

Kalau mau menyebut angka pastinya, gunakan acuan ini:

PerangkatLebar layarSebutkan di prompt
📱 HP< 640pxdi HP (di bawah 640px)
📱 HP besar / tablet kecil640–767pxdi layar sedang
💻 Tablet768–1023pxdi tablet (768–1023px)
🖥️ Desktop≥ 1024pxdi desktop (1024px ke atas)
🖥️ Desktop lebar≥ 1280pxdi layar lebar
KebutuhanCara menulis prompt
Kunci ke desktophalaman ini khusus desktop, tampilkan pesan "buka di komputer" kalau di HP
Kunci ke mobilebuat khusus HP, lebar maksimal 480px, rata tengah di desktop
Elemen tertentusembunyikan bagian statistik saat di HP
Menumenu mendatar di desktop, hamburger di HP
Grid katalog4 kolom desktop, 2 tablet, 1 HP
Gambargambar menyesuaikan lebar, tidak melebihi layar
Fontteks judul lebih kecil di HP (24px), lebih besar di desktop (40px)
Orientasisusun berdampingan saat layar mendatar (landscape)
Uji di HPpastikan tidak ada yang keluar batas layar atau perlu digeser

Contoh: dashboard desktop-only

BuilderBuat dashboard admin khusus desktop: - Sidebar kiri tetap + konten lebar - Tabel data lengkap - Jika lebar layar < 1024px, ganti isi dengan pesan agar dibuka di komputer - Sembunyikan semua kontrol di layar kecil

Contoh: aplikasi mobile-only

BuilderBuat aplikasi absensi khusus HP: - Lebar maks 480px, rata tengah - Navigasi tab tetap di bawah - Tombol besar "Absen Masuk / Keluar" - Tampilkan jam besar di atas - Simpan riwayat ke database
💡 Cara menguji: buka situsmu di HP, atau di desktop tekan F12 lalu aktifkan mode perangkat (ikon HP) untuk melihat tampilan mobile tanpa perlu HP sungguhan.
⚠️ Penting: mobile-only / desktop-only berarti pengunjung dengan perangkat lain tidak bisa memakai situs. Pakai hanya bila memang disengaja (mis. alat internal pemilik). Kalau ingin semua bisa akses, cukup pakai responsif biasa (tulis: “pastikan rapi di HP maupun desktop”).

5SEO & Berbagi di Media Sosial

Agar situs muncul di Google dan tampil menarik saat tautannya dibagikan ke WhatsApp/media sosial.

🔎 AI tidak otomatis menambahkan informasi SEO. Sebut permintaan ini secara eksplisit agar situsmu mudah ditemukan dan tautannya tampil rapi saat dibagikan.

Judul & deskripsi (Google)

BuilderTambahkan informasi SEO di semua halaman: - Judul tab yang jelas (maks 60 karakter) - Deskripsi untuk Google (maks 160 karakter) - Nama brand di akhir judul Contoh: "Kopi Nusantara — Biji Kopi Lokasi Pilihan"

Pratinjau saat dibagikan (Open Graph)

BuilderSaat tautan dibagikan ke WhatsApp/Facebook/ Twitter, tampilkan pratinjau: - Judul & deskripsi singkat - Gambar pratinjau (1200×630) - Nama situs Tambahkan tag Open Graph untuk itu.

Ikon tab & perangkat

BuilderTambahkan favicon (ikon di tab browser) dan ikon untuk layar utama HP, lalu pasang di semua halaman.

Bahasa & mesin pencari

BuilderSetel bahasa halaman ke Indonesia (lang="id"), tambahkan sitemap sederhana dan izinkan Google mengindeks situs.

Contoh permintaan SEO lengkap

BuilderOptimalkan SEO untuk website toko kopi "Kopi Nusantara": - Judul: "Kopi Nusantara — Biji Kopi Lokasi Pilihan" - Deskripsi: "Beli biji kopi segar dari petani lokal. Pilihan arabika & robusta terbaik, dikirim ke seluruh Indonesia." - Gambar pratinjau: logo toko dengan latar cokelat - Favicon: biji kopi - Bahasa: Indonesia Tambahkan juga di halaman produk dan halaman tentang.
KebutuhanCara menulis prompt
Muncul di Googleoptimalkan SEO agar muncul di pencarian Google, tambahkan judul dan deskripsi halaman
Tautan rapi di WAbuat pratinjau bagus saat tautan dibagikan ke WhatsApp dan media sosial
Favicontambahkan favicon berupa logo saya di tab browser
Kata kuncisertakan kata "toko kue jakarta" dan "pesan kue online" secara alami
Google Mapstambahkan lokasi toko yang terbaca Google (alamat, jam buka)
Multi-halamanpastikan setiap halaman punya judul & deskripsi berbeda
💡 Judul & deskripsi adalah yang paling penting. Kalau hanya sempat minta satu hal, minta itu — inilah yang muncul di hasil pencarian Google dan saat tautan dibagikan.

6Aksesibilitas — Mudah Dipakai Semua Orang

Membuat situs nyaman dipakai siapa saja, termasuk pengguna pembaca layar dan orang dengan gangguan penglihatan.

Gambar & teks alternatif

BuilderPastikan setiap gambar punya teks alternatif (alt) yang menjelaskan isinya, untuk pembaca layar. Gambar hiasan cukup diberi alt kosong.

Kontras & keterbacaan

BuilderPastikan kontras teks dan latar cukup (teks gelap di latar terang), ukuran font minimal 16px, dan jarak antarbaris nyaman.

Bisa dipakai tanpa mouse

BuilderPastikan semua tombol dan tautan bisa diakses dengan tombol Tab di keyboard, dan ada penanda jelas saat sedang difokus.

Form yang jelas

BuilderSetiap kolom form punya label yang jelas (ketik "Nama", bukan sekadar kotak kosong), dan pesan kesalahan mudah dimengerti.
Permintaan menyeluruhRapikan aksesibilitas situs: - Semua gambar punya teks alt - Kontras warna memadai - Bisa dinavigasi dengan keyboard (Tab) - Form punya label - Struktur judul berurutan (H1 lalu H2, bukan melompat) - Tombol punya area sentuh cukup besar di HP
💡 Kenapa penting? Situs yang aksesibel lebih ramah bagi semua orang — termasuk yang memakai HP sambil jalan, koneksi lambat, atau membaca di bawah sinar matahari. Bonusnya: penilaian Google juga lebih baik.

7Form & Validasi Input

Form yang benar menyimpan data dengan rapi dan memberi tahu pengunjung bila ada yang salah.

Form lengkap

BuilderBuat form pemesanan dengan: - Nama (wajib), Email (wajib, format email) - Nomor HP (wajib, hanya angka) - Alamat (wajib), Catatan (opsional) - Validasi saat dikirim: tandai kolom yang salah dengan pesan jelas - Setelah berhasil: tampilkan "Terima kasih, pesanan Anda sudah masuk" dan kosongkan form

Kolom pilihan & tanggal

BuilderForm pendaftaran acara: - Nama, email - Pilihan paket (dropdown: Reguler/VIP) - Tanggal kunjungan (date picker) - Jumlah orang (1-10) - Centang "Saya setuju syarat & ketentuan" Simpan ke database setelah valid.

Unggah berkas & gambar

BuilderForm dengan input gambar: - Pilih foto, tampilkan pratinjau sebelum kirim - Batasi ukuran maksimal 2 MB - Simpan ke kolom bertipe gambar di database - Setelah dikirim, tampilkan gambar di galeri

Menampilkan data masuk

BuilderForm kontak + daftar pesan masuk, tampilkan 10 terbaru dengan waktu kirim. Hanya saya (pemilik) yang bisa melihat daftarnya.
⚠️ Data dari form pengunjung tidak boleh disimpan hanya di browser. Minta AI menyimpannya ke database (lihat bagian Database) agar tidak hilang saat pengunjung menutup halaman.

8Animasi & Interaksi Lanjutan

Sentuhan dinamis agar situs terasa hidup — tanpa mengganggu.

Animasi saat menggulir

BuilderBuat elemen muncul halus (fade + naik) saat digulir ke bawah, dengan animasi bertahap antar-kartu. Jangan ganggu pembacaan.

Efek hover

BuilderTombol membesar sedikit & kartu terangkat saat kursor di atasnya, dengan transisi halus. Efek tetap wajar di layar sentuh (HP).

Galeri & lightbox

BuilderSaat gambar galeri diklik, buka tampilan besar (lightbox) dengan latar gelap, tombol tutup, dan panah untuk gambar berikutnya.

Tab & akordeon

BuilderBuat FAQ akordeon: pertanyaan diklik untuk membuka jawaban, panah berputar, hanya satu yang terbuka pada satu waktu.

Notifikasi & toast

BuilderSetelah form tersimpan, munculkan notifikasi kecil di pojok atas ("Data terkirim") yang hilang sendiri setelah 3 detik.

Mode gelap/terang

BuilderTombol pengalih tema terang/gelap, ingat pilihan pengunjung, ikuti pengaturan HP mereka secara otomatis saat pertama dibuka.
💡 Manis tapi jangan berlebihan. Animasi bagus untuk menuntun perhatian. Kalau terlalu banyak, situs terasa lambat dan membingungkan. Sebut: "animasi halus, tidak berlebihan".

9Gambar, Media & Ikon

Cara meminta gambar, ilustrasi, peta, video, dan ikon tanpa file sendiri.

🖼️ Punya foto sendiri? Upload lewat panel File (lihat File & Gambar), lalu sebut path-nya di prompt, mis. “pakai /images/hero.jpg untuk latar hero”. AI tidak bisa membuat gambar, jadi untuk sementara bisa memakai tautan gambar dari internet. Gambar kiriman pengunjung disimpan lewat kolom bertipe Gambar di database.

Gambar sementara (placeholder)

BuilderGunakan gambar contoh dari picsum.photos untuk semua foto sementara, dengan ukuran yang sesuai. Nanti saya ganti dengan foto asli.

Ikon

BuilderPakai ikon dari Lucide (CDN) untuk fitur layanan: truk pengiriman, keamanan, dukungan 24 jam, dan garansi.

Ilustrasi

BuilderTambahkan ilustrasi dari unDraw untuk bagian "cara kerja" (3 langkah), gaya yang cocok dengan warna situs.

Peta lokasi

BuilderSematkan peta Google Maps untuk lokasi toko (Jl. Contoh No. 123, Jakarta) di halaman kontak dan footer.

Video YouTube

BuilderSematkan video YouTube (tautan: youtube.com/watch?v=XXXX) secara responsif di bagian profil perusahaan.

Ikut tampil cepat

BuilderMuat gambar secara bertahap (lazy load) dan tampilkan placeholder abu-abu sebelum gambar selesai termuat.

Mengatur banyak halaman dan tautan antar-halaman dengan rapi.

🔗 URL bersih otomatis: berkas tentang.html bisa dibuka lewat /tentang. Halaman 404.html kustom juga otomatis dipakai bila ada halaman yang tidak ditemukan.

Menu navigasi

BuilderBuat menu navigasi dengan logo di kiri, tautan halaman di tengah, dan tombol kontak di kanan. Menu menempel di atas saat digulir, dan jadi hamburger di HP.

Halaman 404 sendiri

BuilderBuat halaman 404.html yang ramah: pesan lucu, ilustrasi, dan tombol "Kembali ke beranda".

Navigasi bawah (HP)

BuilderUntuk aplikasi HP, buat bilah navigasi tetap di bawah dengan ikon beranda, riwayat, dan profil.

Tautan dalam halaman

BuilderBuat menu yang menggulir ke bagian dalam halaman (Tentang, Layanan, Kontak) dengan posisi tepat di bawah header.

11Kinerja & Kecepatan

Situs yang cepat lebih menyenangkan dan lebih disukai mesin pencari.

Ringan & cepat

BuilderBuat situs seringan mungkin: hindari perpustakaan besar kalau tidak perlu, muat gambar bertahap, dan gunakan CSS yang efisien.

Font cepat

BuilderMuat hanya 2 varian font (normal & tebal), dan tampilkan teks dengan font cadangan sampai font asli siap (agar tidak kosong).

Gambar hemat

BuilderGunakan gambar berukuran wajar (maks lebar 1600px), format modern, dan tentukan dimensi agar tata letak tidak bergeser.

Indikator memuat

BuilderSaat data sedang diambil dari database, tampilkan indikator memuat (spinner), dan pesan jelas bila gagal.
💡 Semua aset rakit.io sudah dikompresi (gzip) & di-cache, jadi situsmu memang cepat sejak awal. Fokus pada ukuran gambar — itu penyebab situs lambat yang paling umum.

12Konten & Tulisan

AI bisa menulis teksnya sekaligus — beri tahu siapa pembacanya.

Nada tulisan

BuilderTulis semua teks dengan nada ramah, hangat, dan sederhana (tanpa istilah rumit), seolah bicara ke teman.

Sasaran pembaca

BuilderTulis untuk ibu rumah tangga usia 30-50 yang baru mulai berbisnis online. Hindari istilah teknis, tonjolkan kemudahan.

Bagian penting

BuilderBuat judul utama yang menarik (headline), subjudul penjelas, dan tombol ajakan ("Pesan Sekarang", "Hubungi Kami").

Konten contoh

BuilderIsi dengan teks contoh yang masuk akal untuk bisnis kuliner rumahan di Bandung, 6 menu, 3 testimoni, dan informasi kontak.
💡 Semakin spesifik (siapa pembaca, bisnis apa, di mana), semakin bagus tulisan yang dihasilkan. Ganti "website bisnis" menjadi "website katering rumahan di Yogyakarta untuk acara keluarga".

13Keamanan & Data Pribadi

Melindungi data pengunjung dan menjaga agar tidak disalahgunakan.

KebutuhanCara menulis prompt
Data sensitiftandai email, nomor HP, dan alamat sebagai data privat — hanya saya yang bisa lihat
Form publikpengunjung hanya boleh mengirim, tidak boleh melihat daftar kiriman orang lain
Anti-spamtambahkan kolom "ketik hasil 3+2" untuk mencegah bot mengirim form
Data tidak hilangsimpan semua data pengunjung ke database, jangan hanya di browser
Kata sandikalau ada area pribadi, jangan simpan kata sandi di situs — pakai pemilik saja
API key / tokensimpan token Telegram di fungsi serverless, baca dari env.TELEGRAM_TOKEN — jangan tulis di halaman
Harga tidak bisa diakalihitung total pesanan di fungsi serverless, bukan di browser
⚠️ Prinsip aman: untuk data pengunjung yang bersifat pribadi (email, telepon, alamat), selalu atur sebagai khusus pemilik. Kamu melihat & mengelolanya lewat tab Database di editor.

14Integrasi Pihak Ketiga (CDN & Layanan)

Menambahkan layanan populer lewat CDN/tautan — tanpa server sendiri.

🔌 Tambahkan perpustakaan atau layanan lewat tautan (CDN). Sebutkan nama & sumbernya dengan jelas, mis. "pakai Chart.js dari CDN".
KebutuhanPrompt
Grafik & statistiktampilkan grafik penjualan bulanan pakai Chart.js dari CDN
Petasematkan Google Maps untuk lokasi Jl. Merdeka 10
WhatsApptambahkan tombol WhatsApp mengambang ke nomor 0812xxxx
Instagram/sosialtambahkan tautan ke Instagram @tokosaya dan Facebook
Videosematkan video YouTube youtube.com/watch?v=xxxx secara responsif
Kerangka UIpakai Bootstrap 5 dari CDN untuk tata letaknya
Tanggalpakai date picker yang rapi dan mudah dipakai di HP
Kalender acaratampilkan kalender bulanan untuk memilih tanggal kunjungan
Notifikasi Telegrambuat fungsi serverless yang mengirim pesan Telegram setiap ada pesanan baru (token di env.TELEGRAM_TOKEN)
API layanan lainbuat fungsi yang mengambil kurs dari API luar, simpan API key di rahasia
Fitur AI sendiribuat fungsi yang meringkas ulasan pelanggan pakai ai.chat (provider default saya)
Laporan otomatisbuat fungsi laporan penjualan harian; saya akan atur jadwalnya tiap jam 07.00
💡 Butuh kunci rahasia atau logika di server? Lihat Fungsi Serverless. Setelah AI membuat fungsinya, isi rahasianya sendiri di tab Fungsi → Rahasia (env).

15Tabel Data & Dashboard

Menampilkan banyak data dengan rapi, plus ringkasan angka dan grafik.

Tabel dengan sortir & cari

BuilderBuat tabel data barang dengan kolom Nama, Kategori, Jumlah, Harga. Bisa diurutkan per kolom, dicari, dan ada halaman (10 baris per halaman).

Ringkasan angka

BuilderDi atas tabel, tampilkan kartu ringkasan: total barang, total nilai (rupiah), dan jumlah barang dengan stok rendah.

Grafik

BuilderBuat grafik batang penjualan 6 bulan terakhir dan grafik lingkaran kategori produk terlaris (pakai Chart.js).

Tambah/ubah/hapus

BuilderForm tambah data, tombol ubah dan hapus di tiap baris dengan konfirmasi sebelum menghapus. Data langsung terbarui di tabel.
💡 Dashboard = desktop. Tabel lebar paling nyaman di layar besar. Minta: "tampilan tabel untuk desktop, dan jadi kartu bertumpuk di HP" (lihat bagian Responsive).

16Pola Prompt Lanjutan

Teknik agar hasil makin tepat, terutama untuk situs yang kompleks.

Iterasi bertahap (dari rencana ke hasil)

Alur terbaik1. Mode Plan: "Rencanakan aplikasi kasir untuk toko kelontong." 2. Baca & sesuaikan rencananya. 3. "Jalankan rencana ini." (mode Builder) 4. "Sekarang tambahkan fitur cetak struk." 5. "Perbaiki: stok berkurang otomatis setelah transaksi."

Konteks + permintaan

Beri contoh

BuilderBuat kartu produk seperti gaya marketplace, contoh tata letak: gambar di atas, nama, harga tebal, tombol "Beli" penuh lebar di bawah.

Sebut yang kamu tidak mau

BuilderBuat situs minimalis. JANGAN pakai warna mencolok, animasi berlebihan, atau tata letak yang ramai.

Rujuk bagian spesifik

BuilderDi halaman index.html, bagian hero: perbesar judul, tambahkan tombol kedua "Lihat Menu" di samping tombol "Pesan".

Minta perbaikan bertarget

BuilderTombol "Kirim" tidak berfungsi. Cek kenapa dan perbaiki agar form tersimpan ke database.

Saat hasil kurang pas

MasalahPrompt perbaikan
Tata letak berantakanrapikan tata letak bagian layanan: sejajarkan ikon, judul, dan deskripsi dengan rapi
Warna tidak cocokganti aksen kuning jadi biru muda, sisanya tetap
Terlalu penuhsederhanakan: tambah jarak antarbagian, kurangi elemen
Fungsi errorsaat tombol diklik tidak terjadi apa-apa. Periksa dan perbaiki
Belum responsifdi HP tata letaknya rusak. Perbaiki agar rapi di layar kecil
Ingin variasibuat 3 pilihan gaya hero, saya pilih salah satu
💡 Satu pesan, satu tujuan. Umpan balik pendek & spesifik ("tombol terlalu kecil", "judul kurang tebal") jauh lebih efektif daripada mengulang seluruh permintaan.

17Database — Simpan & Tampilkan Data

Kekuatan utama rakit: situs bisa menyimpan data tanpa server sendiri. AI akan membuat tabelnya otomatis.

🗄️ Setiap project punya database bawaan. Data diakses dari JavaScript situs lewat fetch('/api/db/nama_tabel') — tanpa API key, tanpa CORS. Jangan gunakan localStorage untuk data yang dikirim pengunjung, karena localStorage hanya ada di browser satu orang.

Pola umum: pilih yang sesuai kebutuhan

Jenis situs / fiturPromptAkses tabel
Buku tamu / komentar Buat buku tamu: form nama & pesan, daftar pesan terbaru di bawahnya. publik: list, create
Form kontak / pendaftaran Buat form kontak (nama, email, pesan). Kiriman hanya boleh dibaca pemilik. publik: create + email privat
Pendaftaran acara / RSVP Form pendaftaran seminar: nama, email, instansi, jumlah peserta. publik: create
Katalog produk Buat katalog produk (nama, harga, deskripsi, gambar) yang tampil di halaman dan bisa dilihat semua orang. publik: list
Polling / voting Buat polling: simpan pilihan pengunjung, tampilkan hasil dalam persentase. publik: list, create
Papan skor / leaderboard Simpan skor pemain (nama, skor) dan tampilkan peringkat tertinggi. publik: list, create
Pesanan (order) Form pesanan: nama, telepon, alamat, item, total. Hanya pemilik yang boleh melihat daftar pesanan. publik: create + data privat
Ulasan / rating produk Buat ulasan dengan nama, rating bintang 1–5, dan komentar. publik: list, create

Sebutkan tipe kolom

BuilderSimpan pendaftaran dengan kolom: nama (teks, wajib), email (teks, wajib, privat), telepon (teks, privat), tanggal_lahir (tanggal), jumlah_orang (angka), setuju_syarat (ya/tidak), foto (gambar). Tampilkan konfirmasi setelah kirim.

Ingin melihat data sendiri?

Pengunjung anonim (belum ada akun). Jadi gunakan update/delete sebagai khusus pemilik — kamu melihat & mengelolanya lewat tab Database di editor.

BuilderSimpan data yang masuk, dan atur agar hanya saya (pemilik) yang bisa melihat, mengubah, dan menghapusnya.
💡 Contoh kombinasi kaya: “Buat toko online sederhana: katalog produk dari database (nama, harga, gambar, stok), keranjang di halaman, dan form checkout yang mengirim pesanan (nama, telp, alamat, item) — pesanan hanya bisa saya lihat.”

18Interaksi & Fitur JavaScript

Perilaku dinamis: filter, pencarian, keranjang, kalkulator, dan lainnya.

Pencarian & filter

BuilderTambahkan kotak pencarian dan filter kategori di atas katalog. Hasil menyaring langsung saat mengetik (tanpa reload).

Keranjang belanja

BuilderBuat keranjang: tombol "Tambah ke keranjang" di tiap produk, halaman keranjang dengan ubah jumlah dan total harga, lalu tombol checkout.

Kalkulator

BuilderBuat kalkulator harga: pilih paket, jumlah halaman, dan opsi tambahan, lalu tampilkan total secara langsung.

Slider / carousel

BuilderBuat slider gambar otomatis berganti tiap 5 detik, dengan tombol panah dan titik navigasi.

Modal / popup

BuilderSaat kartu produk diklik, buka modal berisi detail lengkap dan tombol tutup.

Unggah & tampilkan gambar

BuilderForm dengan input file gambar, tampilkan pratinjau sebelum dikirim, lalu upload ke kolom gambar di database.
💡 Sebutkan perilakunya, bukan teknisnya. “Saat tombol diklik, total langsung berubah” lebih ampuh daripada “pakai addEventListener”. AI yang memilih cara teknisnya.

19Contoh Prompt Lengkap (Siap Pakai)

Tinggal salin, sesuaikan nama & detail, kirim ke mode Builder.

A · Undangan pernikahanBuat website undangan pernikahan digital untuk Rina & Dimas: - Cover dengan nama, tanggal, dan foto - Hitung mundur (countdown) ke hari acara - Detail acara: akad & resepsi (tanggal, waktu, lokasi + peta) - Buku ucapan: form nama & pesan, daftar ucapan terbaru - Konfirmasi kehadiran (nama, jumlah orang, hadir/tidak) Gaya elegan dengan warna sage green & krem, font serif "Playfair Display".
B · Toko online sederhanaBuat toko online untuk "Kopi Nusantara": - Katalog produk: nama, harga, deskripsi, gambar (dari database, bisa dilihat siapa saja) - Halaman detail produk dengan pilihan jumlah - Keranjang belanja dengan total harga - Form pemesanan (nama, telepon, alamat, catatan) → hanya saya yang bisa melihat - Halaman kontak dengan jam buka Warna cokelat kopi & krem, responsif.
C · Profil perusahaanBuat website profil PT Maju Jaya: - Beranda: hero, statistik angka, layanan unggulan, klien - Tentang: sejarah singkat, visi & misi, struktur tim - Layanan: 6 layanan dengan ikon dan deskripsi - Portofolio: galeri proyek dengan filter kategori - Blog sederhana: daftar artikel dari database - Kontak: form (nama, email, pesan), peta, info Gaya korporat biru tua & putih, font Inter.
D · Event & pendaftaranBuat website seminar "Digital Marketing 2026": - Hero dengan judul, tanggal, lokasi, tombol daftar - Agenda acara (rundown per jam) - Pembicara: foto, nama, jabatan, bio - Pendaftaran: nama, email, instansi, jumlah peserta → hanya saya yang bisa lihat - FAQ (accordion) - Hitung mundur ke hari acara Gaya modern ungu & putih.
E · Sistem inventaris (tabel)Buat aplikasi inventaris barang sederhana: - Tabel barang: nama, kategori, jumlah, harga, lokasi - Form tambah barang - Pencarian dan filter per kategori - Ringkasan: total barang, total nilai - Tampilkan peringatan jika stok di bawah 5 (dipakai internal — tabel hanya saya yang bisa kelola)
F · Kuis interaktifBuat kuis pilihan ganda tentang pengetahuan umum: - 10 pertanyaan, masing-masing 4 pilihan - Skor berjalan, umpan balik benar/salah - Halaman hasil dengan skor akhir - Simpan skor terbaik ke database dan tampilkan 5 tertinggi Gaya ceria, warna-warni, animasi halus.

20Memperbaiki & Mengubah

Cara mengoreksi hasil tanpa memulai dari nol.

SituasiPrompt
Hasil kurang pasPerbaiki bagian hero: teksnya terlalu kecil dan tombolnya kurang menonjol. Buat lebih besar dan kontras.
Ganti warnaGanti semua warna hijau menjadi biru navy, jaga sisanya.
Ubah isiGanti judul menjadi "Selamat Datang di Toko Kami" dan teksnya jadi lebih ramah.
Susun ulangPindahkan bagian testimoni ke bawah bagian harga.
Tambah fiturTambahkan tombol WhatsApp mengambang di kanan bawah.
Perbaiki errorForm tidak tersimpan saat dikirim. Cek dan perbaiki agar datanya masuk ke database.
Kurangi/ubah gayaTerlalu ramai. Sederhanakan: kurangi warna, tambah ruang kosong.
💡 Perbaikan makin presisi jika menyebut bagiannya. Sebut nama halaman/bagian (“di bagian footer”, “di halaman kontak”) agar AI mengubah yang tepat, bukan seluruh situs.
🔄 Semua perubahan bisa dibatalkan. Di mode Builder, perubahan ditampilkan dengan tombol Simpan / Batalkan sebelum diterapkan. Ada juga riwayat percakapan — buka kembali untuk melanjutkan — dan tab Riwayat untuk kembali ke versi mana pun.

21Batasan & Tips Teknis

Yang perlu diketahui agar tidak membentur dinding.

AspekBatas
Jenis file.html · .css · .js + gambar yang di-upload
Ukuran per file kodeMaks 512 KB
Total per project20 MB & 500 file/folder (lebih besar di paket Pro/Unlimited)
Panjang satu promptMaks 20.000 karakter, maks. 3 gambar lampiran
Kode serverfungsi serverless JavaScript di functions/ — bukan PHP/Node.js, tanpa npm
Build step / npmTidak ada — pakai CDN untuk library
Akun pengunjungBelum ada — pengunjung anonim
Operasi databaselist · view · create · update · delete
Tipe kolom databaseteks · angka · ya/tidak · tanggal · relasi · gambar
Responsivebawaan responsif · bisa dikunci mobile/desktop saja
SEO & pratinjau berbagiharus diminta — AI tidak menambah otomatis
Gambar/mediaupload gambar · AI tidak bisa membuat gambar · video lewat YouTube

✅ Lakukan

  • Sebut tujuan & pengguna situs
  • Rinci bagian per bagian
  • Sebut data yang perlu disimpan
  • Satu perubahan besar per prompt
  • Pakai Mode Plan untuk ide yang belum matang
  • Sebutkan warna & font spesifik

🚫 Hindari

  • Prompt super singkat: “buat website”
  • Campur 5 perubahan berbeda dalam satu prompt
  • Minta PHP / Node.js / npm (pakai fungsi serverless)
  • Menulis API key di file halaman
  • Simpan data penting di localStorage
  • Asumsi pengunjung punya akun
  • Ganti-ganti gaya tanpa menyebut bagiannya
⚠️ Hemat kredit AI. Setiap prompt memakai kredit (prompt bergambar 2 kredit; akun baru dapat bonus awal sekali, lalu kredit gratis per hari, ditambah langganan & isi ulang — lihat Kredit & Paket). Rencanakan dulu dengan Mode Plan, baru jalankan — agar tidak bolak-balik memperbaiki.

★Template Prompt Universal

Salin, isi bagian dalam [ ], lalu kirim.

Buat website [jenis] untuk [siapa & tujuannya]. Halaman: - index.html — [bagian 1], [bagian 2], [bagian 3] - [halaman lain] — [isinya] Data yang perlu disimpan: [nama tabel + kolom + siapa yang boleh lihat/simpan]. Gaya: warna [utama] & [aksen], font [nama font], [modern/minimalis/elegan/ceria]. Pastikan responsif di HP dan mudah dipakai.