Cara Situs Ini Dibuat
ShinyQ HQ dibangun secara terbuka oleh AI coding agent berdasarkan spec dan rencana tertulis. Kurniadi meninjau perubahan dan menyetujui setiap merge. Halaman ini mengikuti proses pembangunannya, dari cetak biru hingga pemeriksaan wajib sebelum rilis.
Data per 2 Nov 2026, commit a403821
Cetak Biru
Seluruh sistem dalam satu peta: siapa yang menulis kode, di mana hasilnya di-deploy, dan apa yang berjalan saat pengunjung membuka situs.
Cara kerjanya
- 1
Setiap halaman disiapkan sebagai HTML statis dan dihosting di Cloudflare Pages. Situs klasik tidak memerlukan WebGL atau server runtime Next.js.
- 2
Menara 3D dipasang di sisi klien di atas halaman-halaman itu dan tidak pernah menggantikan isinya.
- 3
Pages Functions menangani Asisten Rover, beacon performa dan kunjungan, serta permintaan statistik publik.
- 4
Cron Worker merangkum statistik kunjungan ke KV setiap dua jam. Statistik publik menampilkan jumlah dan topik, bukan log mentah atau pertanyaan yang diketik pengunjung.
- 5
Agent Office berjalan live. Hook di GitHub Copilot, Claude Code, dan Codex memanggil relay di Mac pemilik, yang hanya mengirim status dan jenis aktivitas tiap sesi; kode, prompt, dan path file tidak pernah keluar dari mesin itu.
- 6
Worker hq-office tidak memiliki rute publik: Pages Functions mengaksesnya lewat service binding. Durable Object-nya menyimpan sepuluh meja, jalur CI yang dilaporkan webhook GitHub, dan replay delapan hari.
- 7
Ask membaca knowledge pack dari Workers KV setelah memeriksa hash-nya, dengan fallback kecil yang disertakan dalam bundle. Gemma 4 di Workers AI menjawab lebih dulu; Mistral Small 3.1 dan dua tier Groq gratis menjadi cadangan jika tier sebelumnya gagal.
- 8
Panduan belajar sertifikasi disimpan sebagai PDF di bucket R2 privat. Pages Function mengirimnya per rentang byte agar panduan dapat dibuka di pembaca PDF situs tanpa mengunduh seluruh file.
Lini Masa Pembangunan
Rangkaian pull request yang sudah digabungkan, dari fondasi pertama hingga halaman ini. Jumlah dan tanggalnya diambil dari riwayat repositori.
Nomor pull request terbuka di GitHub pada tab baru.
Fondasi dan Lima Lantai
Dataset konten, misi, infrastruktur peluncuran, kerangka menara, rover, dan lima lantai pertama mulai terbentuk.
15 pull request di-merge
Pemuatan Game-First, Situs Klasik, dan Ask the HQ
Situs klasik dirombak, layar pemuatan 3D dan pipeline CI cepat ditambahkan, pekerjaan klien diberi label sektor, dan asisten Ask the HQ diluncurkan. Lantai yang bisa dijelajahi, penampil CV, dan perbaikan performa juga hadir pada tahap ini.
30 pull request di-merge


Beranda situs klasik, dari mockup desain sampai halaman yang dibangun. Title Case, Call Pad, dan Lantai Tulisan
Judul diseragamkan ke Title Case dan daftar proyek memakai satu urutan. Area panggil lift serta hero beranda baru ditambahkan, lalu lantai Tulisan dan area atap dibangun.
6 pull request di-merge


Hero halaman awal, dari mockup desain hingga hasil implementasi. Point-and-Go, Onboarding, dan Aula Sorotan
Konten diperluas dengan perspektif, tautan situs aktif, dan proyek ticketing. Gerakan point-and-go, PDF makalah, dialog Rover, panduan awal, dan Aula Sorotan juga ditambahkan.
7 pull request di-merge
Performa, Kamera, dan Efek Visual
Kartu berbagi dan SEO ditambahkan; lift dan kamera dibuat lebih mulus dan leluasa. Pengujian GPU, CPU, dan memori menjadi dasar gate performa, disusul pengaturan gerakan serta papan melayang.
20 pull request di-merge
Statistik Kunjungan, Ruang Ops, Data dan ML, Keamanan
Statistik kunjungan publik, Tech Reactor, Ops Control Room, pod Data dan ML, dan Topic Constellation dibangun, disusul audit keamanan, jawaban Ask tentang cara situs dibuat, dan desain ulang README.
43 pull request di-merge
Uptime, CSP, dan Chunk Lantai
Peringatan uptime per jam dan hash CSP per halaman ditambahkan, paket diperbarui, lantai dimuat sebagai chunk tersendiri, dan lantai Labs dibagi menjadi tiga papan proyek.
22 pull request di-merge


Lantai Labs sebelum dan sesudah pembagian menjadi tiga papan. Diagram, Musik, Siang dan Malam
Diagram arsitektur, musik latar, tautan Situs klasik yang bisa dibagikan, dan smart CI ditambahkan. Tahap ini juga menghadirkan siklus langit siang-malam, HUD Corners dengan minimap, serta gerakan kamera saat tiba yang konsisten di setiap lantai.
11 pull request di-merge
Menu Rover, Suara Latar, dan Ruang Mesin
Ask mendapat 100 pertanyaan pilihan, memori multi-turn, dan tier cadangan Groq gratis; Rover mendapat menu dan animasi saat diam, dan setiap lantai punya suara latarnya sendiri. Deploy kini berjalan saat merge dan rollback jika CI main gagal. Intro mendapat gerakan kamera pembuka, dan kisah pembangunan ini hadir bersama lantai rahasia B1 Ruang Mesin, yang terbuka setelah kelima lantai dikunjungi.
21 pull request di-merge
CI Lebih Cepat, Langit Hidup, dan Intro Baru
CI dipercepat: main hanya menjalankan pemeriksaan yang belum dicakup run pull request yang lolos, gate performa mengikuti import bersama, pemeriksaan menyeluruh budget dipindahkan ke run malam, Lighthouse hanya memeriksa halaman terdampak, dan shard e2e dibagi menurut waktu worker. Matahari dan bulan kini terbit dan terbenam dalam siklus empat menit, Rover bangun sebelum kamera mengorbit mengelilingi Lobi, dan setiap keputusan pemilik disimpan dalam file tersendiri.
14 pull request di-merge
Agent Office, Panduan Belajar, dan Suara Rover
Backend Agent Office hadir: Worker dengan Durable Object, serta relay dengan hook untuk Copilot, Claude Code, dan Codex. Panduan belajar sertifikasi pindah ke R2 dengan pembaca di dalam situs dan Study Vault di L4. Situs klasik mendapat perbaikan performa cepat dan penyempurnaan desain, statistik publik diperbarui setiap dua jam, Rover menjawab dengan suaranya sendiri, dan knowledge pack Ask pindah ke Workers KV.
16 pull request di-merge
Lobi Lebih Lega, 3D Lebih Cepat, dan Kantor 3D
Lantai Lobi melebar menjadi 54 u dengan jarak 6 u antar-penghalang, dan Agent Office dibuka di sayap L1 tersendiri, dengan kartu Kantor Agen Langsung di beranda Situs klasik. Putaran performa C sampai E mengeluarkan layout lantai dari Situs klasik, menyajikan data 3D sebagai JSON statis, membuat satu atlas logo, menurunkan frame rate saat tidak ada yang bergerak, dan memasang chunk 3D sekitar 250 ms lebih cepat. Evaluasi Ask malam hari pindah ke model Groq yang tidak dipakai produksi.
16 pull request di-merge
Revamp Kantor, Pembaruan, dan B1 yang Hidup
Revamp kantor menempatkan kru Rover yang hidup di sepuluh meja dalam dua baris, dengan drone pembantu, beacon Needs Kurniadi, pipeline ship-it dari CI ke produksi, dan replay harian. Statistik kunjungan menjadi akurat (kunjungan otomatis dilewati), Node, Bun, Next.js, dan paket lain diperbarui, dan blocklist keamanan publik dihapus: nama klien dijaga lewat review. B1 menjadi mesin yang hidup: kisah yang lebih rinci ini dengan stasiun Otak Rover dan Desain yang Ditolak, serta aula reaktor yang intinya bergerak mengikuti run CI, deploy, agent yang aktif, dan kunjungan secara langsung.
17 pull request di-merge
CI yang Lebih Ramping, Hologram B1, dan Statistik Kunjungan yang Jujur
Pull request kini memakai lebih sedikit shard performa dan cache yang lebih ramping, sementara kode mati dan tes ganda yang sudah diverifikasi dibersihkan. Setiap bay B1 mendapat hologram yang digambar dari datanya sendiri, dengan Stack Halo di atas reaktor. Perjalanan lift kini mengambil diagonal 35 derajat, setiap ruang L2 dan L4 serta setiap proyek L3 mendapat ikon atau patung melayang sendiri, dan penghitungan kunjungan kini first-party dengan pembaruan setiap jam.
15 pull request di-merge
Ask yang Lebih Cerdas, Satu Pembaca PDF, Time Travel, dan Recruiter Pass
Ask beralih ke retrieval semantik hibrida dengan ingatan lima giliran, menjawab pertanyaan kewargaan, belajar, dan tim, serta dapat menguraikan cara Kurniadi menangani masalah yang mirip dengan masalah pengunjung. Setiap PDF kini terbuka di pembaca panduan belajar yang sama, perjalanan karier menjadi skyline Time Travel dengan slider dan Play, situs klasik mendapat recruiter pass, dan dinding B1 mendapat panel gunmetal dengan sambungan yang menyala.
12 pull request di-merge
Reader Track, 3D untuk Ponsel, dan Desain Ulang Hallmark
L4 mengganti timeline tulisan dengan satu rak buku untuk setiap reader track. Ponsel mendapat kartu boot yang menempel di bawah, tampilan pembuka Lobby, dan tur singkat yang menempel. Situs klasik didesain ulang halaman demi halaman, teks bahasa Indonesia ditulis ulang agar terdengar alami, dan 24 nama stack mendapat logo.
13 pull request di-merge
3D untuk Ponsel Bagian 2 dan 3, Sertifikasi, dan Vault Sepuluh Buku
Setiap judul lantai kini terbaca di ponsel, ponsel yang dipegang menyamping mendapat kamera sendiri, dan joystick kini melayang. GH-300 berhasil diraih, panduan belajar AB-100 masuk ke Study Vault yang kini memuat sepuluh buku dalam dua tingkat, dan profil diselaraskan dengan LinkedIn.
37 pull request di-merge
Bekerja dengan AI Agent
Agent menulis kode; manusia bertanggung jawab atas keputusan. Koordinator membagi pekerjaan ke beberapa sesi paralel, dan setiap perubahan mengikuti alur yang sama, dengan spec dan rencananya tersimpan di repositori.
Setiap perubahan, langkah demi langkah
- 1
Koordinator
Chat koordinator menyimpan permintaan dan keputusan pemilik. Koordinator membagi pekerjaan per fitur dan membuka satu sesi proyek untuk setiap fitur, masing-masing dengan git worktree dan branch sendiri agar pekerjaan paralel tidak bertabrakan, serta membatasi CI hingga dua run bersamaan.
- 2
Spec
Diskusi bersama agent menghasilkan spec desain tertulis: apa yang akan dibangun dan alasannya. Keputusan konten pemilik tetap menjadi acuan akhir.
- 3
Rencana
Spec dijabarkan menjadi rencana di repositori: tugas kecil, file yang akan diubah, pengujian yang ditulis lebih dulu, serta perintah untuk memverifikasi setiap langkah.
- 4
Tugas Agent
Di dalam sesi, workflow superpowers menjalankan rencana sebagai tugas subagent: satu agent baru untuk setiap tugas, masing-masing mengembalikan laporan beserta bukti pengujian. Sub-agent yang lebih kecil menjelajahi kode, menjalankan perintah panjang, dan meninjau diff dalam konteksnya sendiri.
- 5
Tinjauan
Setiap tugas ditinjau sebelum tugas berikutnya dimulai. Perubahan tampilan lantai juga diperiksa melalui visual gate lokal (scripts/visual-gate.ts), yang membandingkan screenshot di berbagai perangkat dan sudut kamera.
- 6
Tahap Persetujuan Pemilik
Pemilik meninjau pada tahap yang sudah ditentukan: spec, daftar yang memerlukan persetujuan (termasuk Desain yang Ditolak di lantai ini), screenshot ponsel, tablet, dan desktop untuk perubahan visual, lalu merge.
- 7
Gate dan Rilis
Pull request kemudian harus lolos Gate, dan merge yang disetujui pemilik itulah yang merilisnya.
Agent yang dipakai
- GitHub Copilot
- Claude Code
- Codex
### Task 5: Bundle gate with per-floor chunk caps
**Files:**
- Modify: `e2e/budgets.ts` (`BYTES_3D_BUDGET.floors`)
- Modify: `e2e/perf/bytes-3d.spec.ts`
- Modify: `scripts/perf-report.ts` (`bytes3d` entry `floors?`, summary line)
- Test: `tests/unit/perf-report.test.ts`
**Interfaces:**
- Consumes: `window.__hq.floorChunks.load(id)` and `?prefetch=off` (Tasks 1 and 4).
- Produces: `BYTES_3D_BUDGET.floors: { L3: 20 * 1024, L4: 16 * 1024, RF: 8 * 1024 }`; perf entry `{ kind: "bytes3d"; tier; js; other; floors?: Partial<Record<"L3" | "L4" | "RF", number>> }`.Pemeriksaan Kualitas
Pemeriksaan otomatis yang wajib lolos sebelum perubahan digabungkan. Setiap pemeriksaan menjelaskan cakupan dan batas yang diterapkan.
| Gate | Yang diperiksa dan batasnya |
|---|---|
| Tipe, Lint, dan Unit TestWajib lolos sebelum merge | TypeScript strict, ESLint, dan suite Vitest, termasuk pengujian konten dan dokumen: Title Case, dua bahasa, tanpa em dash. Nol error tipe, error lint, dan test yang gagal |
| Pemindaian KredensialWajib lolos sebelum merge | Memindai riwayat repositori publik untuk mendeteksi kredensial yang ikut tersimpan dalam commit. Tidak ada kredensial yang terdeteksi |
| Hash CSP untuk Setiap HalamanWajib lolos sebelum merge | Build menghitung hash setiap inline script pada tiap halaman, dan pemindaian hasil export gagal jika sebuah halaman memuat script yang tidak diizinkan kebijakannya sendiri. Tidak ada inline script tanpa hash |
| Run Pull Request SelektifWajib lolos sebelum merge | Membaca path yang berubah dalam pull request, lalu menjalankan spec e2e, tes performa, dan pemeriksaan halaman Lighthouse yang terdampak beserta smoke test. Jika perencana gagal, seluruh pemeriksaan dijalankan. Pull request yang hanya mengubah dokumen atau tes tidak menjalankan job berat |
| Run Main, Deploy, dan RollbackWajib lolos sebelum merge | Push ke main hanya menjalankan apa yang dilewati run pull request yang lolos pada tree yang sama, sehingga main tetap mencakup semuanya sekali per merge. Production di-deploy setelah run yang lolos itu (atau setelah CI lengkap di main), dan run main yang gagal memicu rollback ke deployment production terakhir yang berhasil. Setiap pemeriksaan sekali per merge; tidak ada deploy tanpa run yang lolos pada tree yang sama |
| Shard End-to-EndWajib lolos sebelum merge | Playwright menguji situs hasil export dalam shard yang dibagi menurut waktu worker terukur agar selesai bersamaan. Setiap aksi menunggu kondisi aplikasi yang diperlukan, tanpa jeda waktu tetap. Setiap spec lulus di setiap shard |
| Ukuran Unduhan 3DWajib lolos sebelum merge | Mengukur JavaScript gzip yang diunduh pengalaman 3D sebelum frame pertama, untuk tier lite dan full, serta setiap chunk lantai secara terpisah. Batas hanya naik ke ukuran terukur ditambah sekitar 0,6 KB, dan hanya dengan persetujuan pemilik. Di bawah 466,4 KB gzip pada jalur frame pertama |
| Render dan Memori 3DWajib lolos sebelum merge | Menghitung draw call dan segitiga pada setiap lantai. Perjalanan lift bolak-balik kemudian memeriksa jumlah objek GPU dan pertumbuhan heap JS terhadap batas memori. Di bawah 150 draw call scene dan 30 ribu segitiga; nol pertumbuhan objek GPU dan pertumbuhan heap di bawah 2 MB |
| Kecepatan Situs KlasikWajib lolos sebelum merge | Lighthouse CI memuat halaman klasik yang terdampak beserta beranda, dan menolak hasil yang melampaui batas waktu tampil, pergeseran layout, waktu blocking, atau ukuran script. LCP 2 detik, CLS 0,01, TBT 200 ms, dan JS 240 KB pada halaman klasik |
| Visual Gate Penjaga TampilanHanya laporan | Membandingkan screenshot perubahan dengan versi dasarnya di 3 perangkat dan 8 sudut kamera. Gate ini butuh GPU sungguhan yang tidak dimiliki runner hosted, jadi dijalankan secara lokal sebelum perubahan visual digabungkan. Profil strict: paling banyak 0,1% piksel berbeda |
| Run Lengkap Malam HariHanya laporan | Setiap malam seluruh suite berjalan di 8 shard e2e dan 4 shard performa, termasuk pemeriksaan menyeluruh budget yang terlalu lama untuk pull request. Jika ada kegagalan, issue dibuka dan baru ditutup setelah run malam berikutnya lolos. Semuanya, setiap malam |
Dasbor
Snapshot repositori berisi jumlah commit, pull request yang sudah digabungkan, pengujian, spec, dan rencana. Batas performa ada di bagian Gate.
315
Pull request di-merge
329
Commit sejak 9 Okt 2026
506
File unit test
725
Test end-to-end
30
Dokumen spec
126
Rencana tertulis
5
Lantai di menara 3D
Per jam
Pemeriksaan uptime situs aktif
Otak Rover
Cara Asisten Rover menemukan sumber, menyusun jawaban, dan memeriksanya, dari pertanyaan hingga balasan yang dikirim.
Cara menjawab
- 1
Penjaga
Setiap pertanyaan melewati pemeriksaan Turnstile (atau cookie dengan tanda tangan digital yang berlaku 30 menit), rate limit 8 per menit dan 40 per hari per pengunjung, serta pembersihan data pribadi. Giliran sebelumnya disertai tanda tangan digital; giliran dengan tanda tangan tidak valid dibuang.
- 2
Penentuan Cakupan
Aturan, bukan model, menentukan apa yang dijawab Rover. Topik pribadi, opini tentang orang lain, dan permintaan asisten umum ditolak; pertanyaan gaya hidup hanya dijawab dari perspektif tertulis Kurniadi, dan pertanyaan tentang situs ini selalu memakai catatan pembangunan situs.
- 3
Retrieval
BM25 dengan bobot judul dan intent, digabung dengan embedding multibahasa bge-m3 (satu panggilan per pertanyaan, BM25 saja bila gagal), memilih 6 chunk teratas, paling banyak 6.000 karakter, dari knowledge pack. Pack disimpan di Workers KV, diperiksa hash-nya, dengan fallback kecil di dalam bundle.
- 4
Rantai Model
Gemma 4 di Workers AI menjawab lebih dulu, lewat AI Gateway. Jika terjadi error, timeout, atau jawaban kosong, tier berikutnya mengambil alih: Mistral Small 3.1, lalu Qwen 3.8 27B dan gpt-oss-120b di Groq. Setiap tier mendapat konteks, aturan, dan pemeriksaan yang sama.
- 5
Pemeriksaan Output
Setiap jawaban diperiksa sebelum sampai ke pengunjung: tanpa rahasia atau bocoran prompt, angka sesuai konteks yang diambil, tautan hanya ke halaman yang diambil, dan opini hanya jika ada sumber tertulis.
- 6
Suara Rover
Rover berbicara sebagai pemandu ("saya menemukan") dan selalu menyebut Kurniadi sebagai orang ketiga. Jawaban faktual langsung dibuka dengan isinya; sentuhan kepribadian hanya untuk sapaan atau penolakan.
- 7
Memori dan Pertanyaan Lanjutan
Lima giliran terakhir ikut dikirim bersama setiap pertanyaan, ditandatangani dengan HMAC agar tidak bisa dipalsukan. Jawaban dikirim secara streaming, dan pertanyaan lanjutannya dipilih di browser dari tag jawaban, bukan oleh model.
- 8
Evaluasi Malam Hari
Setiap malam smoke test berisi 21 pertanyaan dijalankan di Gemma 4, sementara sebagian golden set, pertanyaan pilihan, dan red team dijalankan bergiliran di model Groq yang tidak dipakai production; set fidelity menguji model cadangan pertama. Pertanyaan yang tidak sampai ke model dihitung tidak dijalankan, bukan jawaban salah, dan jika red team gagal, issue dibuka.
Desain yang Ditolak
Ide yang pernah dicoba atau diusulkan lalu dibatalkan, masing-masing dengan alasannya.
Pratinjau Sertifikat dalam Iframe
Menampilkan halaman sertifikat dan paper dari penerbitnya di dalam situs, lewat iframe.
Halaman penerbit tidak mengizinkan pemuatan dalam iframe (X-Frame-Options dan frame-ancestors), sedangkan situs hanya mengizinkan iframe dari situsnya sendiri. Sebagai gantinya, situs memakai kartu pratinjau dan penampil bawaan.
Rute Publik untuk Worker Kantor
Memberi Worker hq-office rute publik workers.dev sendiri.
Alamat workers.dev memuat subdomain akun, yang tidak boleh ada di repositori publik, jadi setiap rute dibuat sebagai Pages Function yang menjangkau Worker lewat service binding.
Blocklist Keamanan
Daftar nama yang diblokir saat build, untuk memindai konten, hasil build, dan jawaban Ask.
Daftar itu justru harus menyimpan nama-nama yang hendak dirahasiakan. Pemilik menghapusnya, dan kini review memastikan nama klien tidak masuk ke konten.
Pull request #288
Gate Memori Dibagi Tiga
Membagi tes memori tier full menjadi tiga bagian CI paralel untuk mempersingkat waktu run main.
Ditunda: waktu run main ditentukan shard e2e yang tidak seimbang, bukan tes memori, dan pembagian itu menambah 11 menit worker; pembagian shard menurut waktu worker dipakai sebagai gantinya.
Pack Perspektif Kedua Berbahasa Inggris
Menjaga pack Ask tetap kecil dengan memindahkan perspektif tertulis Kurniadi ke pack kedua yang dimuat saat dibutuhkan, atau menyimpannya hanya dalam bahasa Inggris.
Pages Functions menggabungkan semua JSON yang diimpor ke satu script Worker, sehingga pack kedua tidak menghemat ukuran. Menyimpan versi bahasa Inggris saja akan mengganggu retrieval bahasa Indonesia karena BM25 mencocokkan kata dalam pertanyaan, serta mengganggu pemeriksaan sumber tertulis.
Oxlint dan Knip
Memindahkan sebagian besar aturan lint ke oxlint dan menambah knip untuk mencari file, dependensi, dan export yang tidak terpakai.
Dilewati atas keputusan pemilik; setup ESLint yang ada tetap dipakai.
Tampilan Ponsel Menyusuri Lorong B1
Tiba di B1 di ponsel dengan kamera menghadap lurus ke sepanjang lorong.
Dalam mode potret, semua papan nama stasiun terpotong di tepi dan tampilan didominasi lantai. Kamera ponsel lalu diarahkan ke seberang lorong agar dua papan nama terlihat utuh.
Pemasangan 3D Secara Lazy
Memasang scene 3D sebagai komponen React lazy di balik Suspense.
Komponen lazy tetap mengalami suspend sekali meski chunk-nya sudah dimuat, lalu React menunda percobaan render ulang, sehingga frame pertama muncul sekitar 250 ms lebih lambat.
Wrapper Postprocessing
Membangun efek glow dengan wrapper @react-three/postprocessing.
Wrapper itu ikut membawa library ambient occlusion yang tidak pernah dipakai, sekitar 8 KB gzip, jadi rangkaian efek kini memakai postprocessing secara langsung.
Pemeriksaan Idle Tiap Tampilan
Turun ke 30 fps hanya pada bagian tampilan lantai yang tenang saat Rover diam.
Fitur itu menambah 2,0 KB gzip ke sesi 3D dan melewati kedua batas; satu frame rate idle per lantai sudah cukup.
Intro Kotak Kosong
Intro yang dibuka dengan kotak-kotak polos sebelum beralih ke Rover.
Pemilik menilai tampilannya buruk; kini Rover bangun lebih dulu, lalu orbit pembuka mengelilingi Lobi.
Tur Lantai Terpandu
Tur terpandu yang mengantar Rover melewati stasiun di setiap lantai.
Dihapus atas permintaan pemilik: satu kalimat kunjungan pertama per lantai dan point-and-go menggantikannya.
CV Web Hasil Generate
Membuat CV dari data situs sebagai export web dalam dua bahasa.
Pemilik memilih PDF miliknya sendiri, ditampilkan apa adanya di penampil dalam situs.