Kiro Builder LabCommunity workshop guide
60 menit Unduh Kiro
Hands-on lab · Beginner

Building a Full-Stack App with Spec-Driven Development

Gunakan Kiro untuk mengubah ide menjadi requirements, design, implementation tasks, lalu aplikasi Task Tracker yang bekerja—dalam satu alur yang dapat ditinjau.

60 menit 9 modul ≤50 credit guardrail

Yang akan Anda bangun

Task Tracker full-stack satu halaman. Frontend React, backend Express, dan penyimpanan in-memory di laptop Anda. Pengguna dapat melihat daftar task, menambahkan task baru, dan menandai task selesai.

Tampilan akhir aplikasi

localhost:5173

Task Tracker

Tulis judul task…
Add task
  • Learn Kiro Specsbelum selesai
  • Review requirementsselesai
  • Run smoke testbelum selesai

Empty state, loading, dan pesan error juga ditangani.

Satu halaman, satu form, satu daftar task. Tanpa login dan tanpa halaman lain.

Tiga user story

  • Sebagai pengguna, saya ingin melihat semua task saya.
  • Sebagai pengguna, saya ingin menambahkan task dengan judul wajib.
  • Sebagai pengguna, saya ingin menandai task selesai atau belum selesai.
UIReactTask form & list
HTTP / JSON
APIExpress3 endpoints
Read / write
DBMemoryTask store

High-Level Design (HLD)

Browser menjalankan satu halaman React pada port 5173. Native fetch mengirim request JSON melalui proxy Vite ke Express pada port 3001. Express membaca dan mengubah satu array Task di memory.

LayerTanggung jawabBatas scope
React ClientForm, list, loading, empty, validation, dan error stateSatu halaman; tanpa router/global store
Vite ProxyMeneruskan /api/* ke port 3001Tanpa CORS package
Express APIList, create, dan toggle taskTepat tiga endpoint
In-memory StoreMenyimpan id, title, completed, createdAtData hilang saat restart

Tiga API yang akan dibuat

Hanya tiga endpoint. Setiap endpoint melayani tepat satu user story di atas.

Method & pathFungsiSuksesError
GET /api/tasksAmbil semua task200 + array task500
POST /api/tasksBuat task baru201 + task400 judul kosong
PATCH /api/tasks/:id/toggleUbah status selesai200 + task404 task tidak ada

Bentuk satu data Task

Contoh response JSON
{
  "id": "7fbbf8c6-3901-4f2f-a118-a40c681f302f",
  "title": "Learn Kiro Specs",
  "completed": false,
  "createdAt": "2026-09-08T10:00:00.000Z"
}

Cara kerja aplikasi

1

Load

Halaman dibuka → GET /api/tasks → React menampilkan daftar atau empty state.

Story 1
2

Create

Pengguna mengisi judul → POST /api/tasks → server memvalidasi → task baru tampil.

Story 2
3

Toggle

Pengguna memilih task → PATCH /api/tasks/:id/toggle → status diperbarui.

Story 3
4

Restart

API dihentikan atau dimulai ulang → array kembali kosong. Ini perilaku yang disengaja.

By design

Learning objectives

01

Specify

Mengubah ide menjadi acceptance criteria yang dapat diperiksa.

02

Design

Meninjau komponen, API, data model, dan error handling.

03

Implement

Menjalankan task terukur dan memvalidasi hasil terhadap spec.

Modul 2 · 7 menit

Registrasi dan setup Kiro

Pasang Kiro IDE, masuk dengan identitas pilihan Anda, lalu catat saldo awal sebelum mengirim prompt.

  1. 1

    Unduh dan instal Kiro

    Buka kiro.dev/downloads, pilih installer untuk sistem operasi Anda, lalu jalankan instalasi.

  2. 2

    Masuk ke Kiro

    Buka Kiro dan pilih metode sign-in yang tersedia, misalnya GitHub, Google, atau AWS Builder ID. Akun AWS tidak diwajibkan untuk menggunakan Kiro.

  3. 3

    Periksa credit balance

    Buka dashboard subscription/usage dari Kiro dan lihat saldo awal Anda. Pembaruan usage dapat tidak langsung terlihat, jadi periksa lagi di antara fase bila perlu.

Rekomendasi penggunaan

Budget credit per fase

Pakai angka ini sebagai patokan saat lab berjalan. Total rekomendasinya 50 credit, sesuai Free tier.

Requirements≤ 6
Design≤ 6
Tasks≤ 4
Implementasi≤ 28
Validasi/fix≤ 6
Angka per fase adalah rekomendasi workshop, bukan tarif resmi atau jaminan konsumsi. Kompleksitas prompt, model, refinement, dan eksekusi task memengaruhi pemakaian aktual. Saldo sebenarnya selalu dilihat di dashboard usage Kiro.
Modul 3 · 5 menit

Siapkan workspace kosong

Kita sengaja memulai dari folder kosong agar artefak dan kode dihasilkan dari spec yang sama.

  1. 1

    Instal Node.js LTS dan npm

    Lakukan langkah ini sebelum workshop. Unduh rilis LTS dari Node.js Downloads. npm ikut terpasang bersama Node.js.

    Windows

    Jalankan Windows Installer .msi dan pertahankan pilihan default, termasuk penambahan Node.js ke PATH. Alternatif dengan winget:

    PowerShell / Windows Terminal
    winget install OpenJS.NodeJS.LTS

    macOS

    Cara termudah: unduh macOS Installer .pkg versi LTS lalu ikuti wizard. Jika diminta memilih arsitektur, gunakan ARM64 untuk Mac Apple Silicon atau x64 untuk Mac Intel. Jika Homebrew sudah tersedia, Anda juga bisa memakai:

    Terminal · macOS
    brew --version
    brew install node

    Jika brew belum terpasang, gunakan installer .pkg. Memasang Homebrew saat workshop berjalan terlalu lama. Terminal macOS memakai zsh, tetapi seluruh command lab tetap sama.

    Linux atau WSL

    Gunakan installer atau version manager LTS yang direkomendasikan pada halaman Node.js Downloads. Hindari package distro yang terlalu lama karena bisa tidak kompatibel dengan Vite.

    Setelah instalasi pada sistem operasi apa pun, tutup dan buka kembali Kiro agar PATH terbaca.

  2. 2

    Verifikasi Node.js dan npm

    Buka terminal baru di Kiro dan jalankan:

    Terminal
    node --version
    npm --version

    Kedua command harus menampilkan nomor versi. Jika muncul not recognized pada Windows atau command not found pada macOS/Linux, restart Kiro lalu buka terminal baru dan pastikan Node.js tersedia pada PATH.

    Khusus macOS: jika memakai Homebrew atau nvm, pastikan terminal Kiro memuat profil shell Anda. Homebrew berada di /opt/homebrew/bin pada Apple Silicon dan /usr/local/bin pada Intel.

  3. 3

    Buat folder project

    Buat folder bernama kiro-task-tracker, lalu buka folder tersebut melalui File → Open Folder di Kiro.

    Struktur awal
    kiro-task-tracker/
    └── (empty)
  4. 4

    Pastikan mode Spec tersedia

    Pada chat Kiro pilih sesi Spec. Untuk lab ini gunakan alur Feature → Requirements-First, bukan Quick Spec, agar setiap keputusan dapat ditinjau.

Modul 4 · 10 menit

Definisikan requirements

Mulai Feature Spec Requirements-First. Kita menetapkan perilaku aplikasi dan batas scope sebelum Kiro menulis kode.

  1. 1

    Buat Feature Spec

    Pada panel Specs, klik +, pilih Feature lalu Requirements-First. Gunakan nama task-tracker.

  2. 2

    Kirim prompt requirement

    Salin prompt berikut tanpa menambah fitur lain.

    Prompt 1 · Create requirements
    Buat feature spec Requirements-First untuk aplikasi Task Tracker full-stack.
    
    Tujuan pengguna:
    1. Melihat daftar task.
    2. Menambahkan task dengan judul wajib.
    3. Menandai task selesai atau belum selesai.
    
    Gunakan struktur monorepo dengan folder backend dan frontend. Backend memakai Node.js dengan Express dan penyimpanan in-memory. Frontend memakai React dengan Vite. Aplikasi hanya satu halaman.
    
    API dibatasi menjadi:
    - GET /api/tasks
    - POST /api/tasks
    - PATCH /api/tasks/:id/toggle
    
    Acceptance criteria harus mencakup happy path, judul kosong, task yang tidak ditemukan, kegagalan API, loading state, dan empty state. Gunakan format EARS yang jelas.
    
    Jangan tambahkan autentikasi, database cloud, deployment, Docker, state-management library, pagination, search, real-time update, atau styling kompleks.
  3. 3

    Review sebelum approve

    Buka .kiro/specs/task-tracker/requirements.md. Pastikan requirement menjelaskan perilaku yang teramati, bukan detail kode.

    • Menampilkan daftar dan empty state.
    • Menambah judul valid.
    • Menolak judul kosong.
    • Toggle status selesai.
    • Menangani not found dan API error.
Checkpointrequirements.md tersedia dan sudah disetujui.
Modul 5 · 7 menit

Review technical design

Generate design dari requirements yang telah disetujui. Jangan memilih teknologi baru saat fase ini.

  1. 1

    Generate design

    Lanjutkan workflow Spec dan minta Kiro membuat design.md. Jika diminta konteks tambahan, gunakan prompt pembatas berikut.

    Prompt 2 · Design guardrail
    Buat design sesederhana mungkin untuk workshop pemula.
    
    Gunakan monorepo dengan folder backend dan frontend. Backend hanya berisi API task (Express, array in-memory, tiga endpoint). Frontend hanya berisi halaman React (React hooks bawaan, native fetch) yang mengonsumsi API tersebut. Sertakan data flow, kontrak tiga endpoint, model Task, validasi, dan error handling.
    
    Sertakan juga spesifikasi UI/UX yang konkret: struktur DOM halaman (judul, form, kartu, daftar task), token warna sebagai CSS variable, dan gaya task yang sudah selesai (strikethrough, warna pudar). Ini requirement wajib, bukan opsional.
    
    Hindari repository pattern, ORM, Docker, authentication, cloud services, UI framework/icon package, dan abstraksi yang tidak diperlukan.
  2. 2

    Cocokkan design dengan target

    TaskPagestate & fetch
    TaskFormcreate task
    +
    TaskListrender & toggle
    MethodPathSuccessError utama
    GET/api/tasks200 + array500
    POST/api/tasks201 + task400 title kosong
    PATCH/api/tasks/:id/toggle200 + task404 not found
  3. 3

    Periksa spesifikasi UI/UX

    Pastikan design.md memuat struktur DOM (judul halaman, kartu, form, daftar task), token warna sebagai CSS variable, dan gaya task selesai (strikethrough + warna pudar). Ini bagian wajib, bukan pelengkap.

  4. 4

    Approve design

    Approve bila design hanya memiliki komponen, endpoint, dan spesifikasi UI/UX yang dibutuhkan. Periksa sisa credit di dashboard Kiro sebelum lanjut ke fase tasks.

Checkpointdesign.md memetakan UI → API → storage, termasuk spesifikasi UI/UX, dan sudah disetujui.
Modul 6 · 5 menit

Buat implementation plan

Ubah design menjadi task kecil yang memiliki hasil jelas dan dapat dijalankan berurutan.

  1. 1

    Generate tasks

    Lanjutkan workflow untuk membuat tasks.md. Gunakan pembatas ini jika task terlalu banyak.

    Prompt 3 · Task plan guardrail
    Buat tepat lima required implementation tasks:
    1. Scaffold project dengan folder backend dan frontend beserta shared scripts.
    2. Implementasikan backend: in-memory store dan tiga endpoint Express.
    3. Implementasikan frontend: React UI dan state.
    4. Integrasikan frontend dengan backend termasuk loading, empty, validation, dan error state.
    5. Jalankan validasi build dan smoke test.
    
    Setiap task harus merujuk requirement terkait. Jangan menambahkan optional tasks, deployment, authentication, database, atau test framework baru.
  2. 2

    Review dependencies

    Pastikan scaffolding dikerjakan sebelum backend/frontend, dan validasi menjadi task terakhir. Untuk lab ini jalankan task satu per satu agar konsumsi dan perubahan mudah diamati.

Mengapa ada dua pilihan Run All Tasks?

Pada versi Kiro IDE yang diuji untuk workshop ini, required dan optional task dibedakan pada tasks.md dengan format berikut. Konvensi marker, label, dan kapan chooser tampil dapat berubah pada versi Kiro berikutnya.

Task markers
- [ ] 1. Implementasikan fitur inti
- [ ]* 1.1 Tambahkan property-based tests
PilihanYang dijalankanRekomendasi
Run all required tasksSeluruh required task yang belum selesai (- [ ])Gunakan untuk implementasi inti atau dry run fasilitator
Run all required and optional tasksRequired dan optional task yang belum selesai (- [ ]*)Hanya stretch goal jika waktu dan credit cukup

Kiro membuat dependency graph dan menjalankan task terpilih dalam beberapa wave. Task independen dapat berjalan paralel; task dependent menunggu prerequisite selesai.

Checkpointtasks.md berisi tepat lima required tasks dan tidak memiliki optional task.
Modul 7 · 15 menit

Implementasikan vertical slice

Jalankan task secara berurutan. Setelah setiap task, lihat diff dan pastikan tidak ada scope tambahan.

1

Scaffold

Jalankan task scaffolding. Hasil minimum: root scripts, backend/, frontend/, dan dependency yang diperlukan.

Rekomendasi ≤ 4 credits
2

Backend

Jalankan task API. Review bahwa hanya tiga endpoint dibuat dan validasi title dilakukan di server.

Rekomendasi ≤ 7 credits
3

Frontend

Jalankan task UI. Review form, list, empty state, loading, dan pesan error.

Rekomendasi ≤ 9 credits
4

Integration

Jalankan task integrasi. Pastikan frontend menggunakan native fetch dan memperbarui state setelah create/toggle.

Rekomendasi ≤ 8 credits

Jika implementasi berhenti atau terlalu luas

Gunakan satu prompt koreksi yang menyebut gejala dan hasil yang diharapkan. Jangan meminta Kiro “perbaiki semuanya”.

Prompt 4 · Focused recovery
Periksa implementasi saat ini terhadap requirements dan design task-tracker.

Perbaiki hanya masalah yang menghalangi vertical slice berikut:
- backend dapat dijalankan,
- frontend dapat dijalankan,
- daftar task dapat dimuat,
- task valid dapat ditambahkan,
- status task dapat di-toggle.

Jangan refactor, menambah dependency, mengubah styling, atau menambahkan fitur baru. Jelaskan file yang diubah setelah selesai.

Jalankan aplikasi

Pastikan terminal berada di root project yang berisi package.json, backend/, dan frontend/. Pasang seluruh workspace dependency:

Terminal · project root
npm install

Cara A — satu command (default)

Dari root project:

Terminal · project root
npm run dev

Client dan API berjalan bersamaan dalam satu terminal lewat concurrently.

Cara B — dua terminal, backend dulu

Gunakan bila Cara A tidak berhasil, atau Anda ingin log backend dan frontend terpisah.

Terminal 1 — backend lebih dulu:

Terminal 1 · backend
cd backend
npm run dev

Tunggu sampai log menunjukkan server aktif di port 3001. Jangan lanjut sebelum backend aktif, karena Vite proxy pada frontend akan gagal terhubung.

Terminal 2 — baru frontend:

Terminal 2 · frontend
cd frontend
npm run dev
KomponenURLFungsi
React Clienthttp://localhost:5173UI Task Tracker
Express APIhttp://localhost:3001/api/tasksJSON task endpoint

Buka http://localhost:5173 di browser. Biarkan terminal tetap terbuka selama smoke test — pada Cara B, kedua terminal harus tetap terbuka bersamaan. Untuk menghentikan, fokuskan terminal lalu tekan Ctrl + C.

Pada macOS gunakan Ctrl + C, bukan Cmd + C. Jika port masih terpakai karena terminal lama tertutup, periksa dengan lsof -ti :3001 pada macOS/Linux atau Get-NetTCPConnection -LocalPort 3001 pada Windows PowerShell, lalu hentikan process tersebut setelah memastikan itu milik lab ini.

Development server adalah proses jangka panjang dan harus dijalankan manual pada terminal Kiro. Jangan mengubah port atau menambahkan CORS package; Vite proxy sudah diarahkan ke API port 3001.

Modul 8 · 5 menit

Validasi terhadap spec

Keberhasilan bukan sekadar “aplikasi terbuka”. Uji perilaku yang ditulis pada acceptance criteria.

Validasi build

Terminal
npm run build

Jika build gagal, kirim satu error aktual kepada Kiro dan minta perbaikan terbatas:

Prompt 5 · Targeted build fix
Perbaiki hanya error build berikut tanpa refactor atau fitur tambahan:

[PASTE ERROR TERMINAL DI SINI]

Setelah memperbaiki, jalankan kembali build satu kali dan ringkas perubahan.
Modul 9 · 3 menit

Review hasil dan penggunaan credit

Catat saldo terakhir, evaluasi fase termahal, dan bawa insight ini ke pelaksanaan workshop.

Lab complete

Anda membangun aplikasi dari spec, bukan dari tebakan.

Requirements mendefinisikan perilaku, design membuat keputusan teknis terlihat, dan tasks menghubungkan design ke implementasi.

Catat hasil eksperimen

menit
credits
kali
task

Pertanyaan evaluasi fasilitator

  1. Apakah total penggunaan maksimal 50 credits?
  2. Fase mana yang menggunakan credits paling besar?
  3. Apakah ada prompt yang sebenarnya bisa dihilangkan?
  4. Apakah semua peserta dapat mencapai vertical slice dalam 60 menit?
  5. Checkpoint mana yang perlu disediakan sebagai backup?

Next step ke AWS

UIAmplify Hostingatau S3 + CloudFront
APIAPI Gateway+ AWS Lambda
DBDynamoDBpersistent tasks

Ekstensi cloud sengaja tidak dilakukan dalam lab 60 menit. Requirement inti dapat dipertahankan; perbarui design.md dan tasks.md untuk migrasi implementasi.

Referensi resmi

Informasi produk dari sumber resmi telah diparafrasekan untuk mematuhi ketentuan lisensi. Wording UI dan behavior produk dapat berubah; periksa sumber untuk informasi terbaru.