web-3dimensi adalah situs web publik yang menampilkan contoh konten 3D yang dapat dilihat dan diinteraksikan langsung di dalam browser. Situs ini melayani dua sisi dari satu produk: Pengunjung yang ingin menjelajahi tampilan 3D contoh, dan Pembuat Konten 3D yang menyiapkan serta menampilkan contoh konten 3D tersebut agar tampil benar di halaman web.
Niat produk bersumber langsung dari permintaan pengguna: "Bikinin web 3dimensi contoh" — membuat sebuah web 3D beserta contoh kontennya. Produk ini bukan platform pemodelan 3D, bukan editor aset, dan bukan galeri multi-pengguna; ia adalah satu situs contoh yang memamerkan konten 3D yang dirender di browser, dengan jalur pengelolaan konten yang terverifikasi bagi pembuatnya.
Audiens: pengunjung umum yang penasaran ingin melihat objek 3D terender di browser, dan pembuat konten 3D yang bertanggung jawab memastikan contoh 3D tampil dengan benar.
web-3dimensi adalah aplikasi web dengan UI kustom milik aplikasi sendiri, didukung backend bersama dan basis data persisten.
Aktor manusia (katalog tertutup):
Aktor non-persona: backend aplikasi (proses FastAPI bersama) dan basis data MariaDB sebagai penyimpanan data milik aplikasi.
Perilaku yang diterima saat ini:
Kepemilikan halaman (kontrak halaman final, urutan tetap):
none; aktor Pengunjung.none; aktor Pembuat Konten 3D.login; aktor Pembuat Konten 3D.Infrastruktur yang disediakan: frontend (React), backend (FastAPI bersama), database (MariaDB).
Pengecualian sempit: tidak ada editor pemodelan 3D, tidak ada unggah/konversi format aset 3D, tidak ada galeri multi-pengguna atau fitur sosial, tidak ada peran/izin berjenjang, dan tidak ada halaman yang menampilkan atau menautkan dokumen perencanaan.
Removed from scope
web-3dimensi dikirim sebagai aplikasi web first-party dengan UI kustom. Pengunjung mengakses Beranda secara publik tanpa identitas. Pembuat Konten 3D memperoleh akses ke Kelola Konten 3D hanya setelah memverifikasi identitas melalui Login; Login sendiri dapat dijangkau tanpa sesi aktif karena ia adalah batas masuk, bukan tujuan terlindungi. Identitas dimiliki aplikasi (app-owned identity) dan diperlukan semata-mata untuk menjaga kontinuitas kepemilikan konten 3D oleh Pembuat Konten 3D yang benar — bukan untuk diferensiasi izin atau peran.
Semua pekerjaan saat ini bersifat current. Tidak ada horizon masa depan yang diterima. Backend bersama menangani API aplikasi dan modul domain; MariaDB menyimpan data milik aplikasi; frontend React merender UI dan viewer 3D.
Tidak ada direktif content_source yang diberikan; bagian ini sengaja dihilangkan.
Informasi/state: judul besar "Bentuk 3D, dilihat dari dua sisi"; blok keterangan mono (format, jumlah vertex, renderer); viewer 3D live berisi objek geometris bersegi; label mono "VIEWPORT / 01" dengan titik coral berdenyut; deretan ubin contoh bernomor 01–04 dengan indeks mono, nama, dan status render.
Aksi utama: menjelajahi contoh 3D (CTA coral "Jelajahi contoh"); memilih ubin contoh untuk membuka viewer; menggeser/memutar objek 3D secara manual; mengalihkan tampilan solid ↔ wireframe.
Aksi pendukung: menavigasi ke Login (tautan masuk bagi Pembuat Konten 3D).
Entitas domain: Contoh Konten 3D (nama, format, jumlah vertex, renderer, status tampil, urutan indeks).
Tanggung jawab komponen: panel kiri terang (judul bertumpuk, blok mono, CTA); panel kanan gelap code-inset dengan viewer 3D, bingkai sudut (corner bracket), dan sakelar wireframe; pita ubin contoh horizontal dengan pembatas hairline; label seksi mono berindeks.
State: loading — kerangka viewer dengan label mono "MEMUAT"; empty — pesan mono "Belum ada contoh 3D" dengan arahan ke Pembuat Konten 3D; success — objek terender dan ubin tampil; error — pesan mono "Gagal memuat viewer" dengan tombol "Coba lagi"; recovery — memuat ulang data contoh tanpa meninggalkan halaman.
Informasi/state: panel kiri terang berisi formulir masuk (identitas Pembuat Konten 3D); panel kanan gelap dengan wireframe objek 3D berputar lambat; bingkai sudut viewport.
Aksi utama: memasukkan identitas dan memverifikasi masuk; mengirim formulir.
Aksi pendukung: kembali ke Beranda.
Entitas domain: Identitas Pembuat Konten 3D (kredensial masuk).
Tanggung jawab komponen: formulir dengan label mono uppercase; tombol kirim ink; pesan galat inline; panel wireframe dekoratif.
State: idle; loading — tombol nonaktif dengan label mono "MEMVERIFIKASI"; success — pengalihan ke Kelola Konten 3D; error — pesan galat di atas formulir dengan fokus kembali ke kolom; recovery — pengguna dapat memperbaiki input dan mengirim ulang.
Informasi/state: tabel data mono di kiri (nama, format, status, diperbarui); pratinjau 3D live di kanan; label seksi mono berindeks.
Aksi utama: menyiapkan contoh konten 3D (nama, format, jumlah vertex, renderer, status tampil); menampilkan/menyembunyikan contoh agar tampil di Beranda; menyimpan perubahan; melihat pratinjau 3D hasil perubahan.
Aksi pendukung: keluar dari sesi; kembali ke Beranda.
Entitas domain: Contoh Konten 3D milik Pembuat Konten 3D (nama, format, jumlah vertex, renderer, status tampil, waktu diperbarui).
Tanggung jawab komponen: tabel data dengan baris dapat dipilih; panel pratinjau 3D; formulir/panel detail untuk atribut contoh; kontrol status tampil; tombol simpan; indikator status penyimpanan.
State: loading — tabel kerangka dengan label mono; empty — pesan mono "Belum ada konten 3D" dengan aksi "Buat contoh"; success — baris tersimpan dan pratinjau diperbarui; error — pesan galat per baris dengan tombol "Coba lagi"; recovery — perubahan yang gagal disimpan tetap di formulir agar dapat dikirim ulang.
FR-1 — Menampilkan contoh konten 3D di situs (explicit) As a Pengunjung I should melihat contoh konten 3D yang dirender di Beranda agar saya dapat menjelajahi tampilan 3D tanpa hambatan.
FR-2 — Berinteraksi dengan konten 3D (explicit) As a Pengunjung I should memutar dan mengalihkan tampilan objek 3D agar saya dapat memeriksa bentuknya dari sisi yang saya inginkan.
prefers-reduced-motion, orbit otomatis dan parallax dinonaktifkan, tetapi seret manual dan sakelar tetap berfungsi.FR-3 — Mendaftar atau memverifikasi identitas melalui Login (required_inference) As a Pembuat Konten 3D I should mendaftar atau memverifikasi identitas melalui Login sebelum mengelola konten 3D agar konten yang saya kelola terikat pada identitas saya yang benar.
FR-4 — Menyiapkan contoh konten 3D (required_inference) As a Pembuat Konten 3D I should menyiapkan contoh konten 3D (nama, format, jumlah vertex, renderer, status tampil) agar contoh tersebut siap ditampilkan di situs.
FR-5 — Menampilkan contoh agar tampil di Beranda (required_inference) As a Pembuat Konten 3D I should mengatur status tampil sebuah contoh konten 3D agar contoh tersebut muncul bagi Pengunjung di Beranda.
FR-6 — Menyediakan konten 3D contoh bawaan (required_inference) As a Pengunjung I should menemukan konten 3D contoh yang sudah tersedia saat pertama membuka situs agar Beranda tidak kosong.
Konteks produk: Pengunjung tiba di Beranda tanpa identitas dan tanpa niat mengelola apa pun; tujuannya adalah melihat dan mencoba tampilan 3D contoh yang disajikan situs.
Tujuan utama: melihat dan berinteraksi dengan konten 3D tanpa hambatan.
Tanggung jawab yang diterima: membuka Beranda, memilih ubin contoh, memutar objek, mengalihkan tampilan wireframe.
Input/keputusan: memilih contoh mana yang diperiksa; memutuskan apakah mengaktifkan wireframe.
Interaksi dengan peserta lain: Pengunjung adalah penerima hasil kerja Pembuat Konten 3D; ia melihat contoh yang berstatus tampil. Ia tidak berinteraksi langsung dengan Pembuat Konten 3D.
Keberhasilan yang teramati: objek 3D terender dan dapat diputar serta dialihkan tampilannya; jika gagal, pesan galat dan tombol "Coba lagi" tersedia.
Yang membedakannya: Pengunjung tidak memiliki sesi, tidak mengubah data, dan seluruh nilainya terletak pada pengalaman melihat dan berinteraksi dengan render 3D.
Konteks produk: Pembuat Konten 3D bertanggung jawab memastikan contoh 3D tampil dengan benar di situs. Ia masuk melalui Login dan bekerja di Kelola Konten 3D.
Tujuan utama: menyiapkan dan menampilkan contoh konten 3D sehingga tampil benar bagi Pengunjung.
Tanggung jawab yang diterima: memverifikasi identitas melalui Login; menyiapkan atribut contoh (nama, format, jumlah vertex, renderer, status tampil); mengatur status tampil; memeriksa pratinjau 3D.
Input/keputusan: kredensial masuk; atribut contoh; keputusan menampilkan atau menyembunyikan contoh.
Interaksi dengan peserta lain: hasil kerjanya dikonsumsi Pengunjung di Beranda; ia tidak berkomunikasi langsung dengan Pengunjung.
Keberhasilan yang teramati: contoh tersimpan, pratinjau 3D benar, dan contoh berstatus tampil muncul di Beranda.
Yang membedakannya: Pembuat Konten 3D adalah satu-satunya aktor yang memiliki sesi terverifikasi dan mengubah data persisten; pekerjaannya adalah penyiapan dan publikasi, bukan eksplorasi.
Muse: Adham Dannaway — dual-nature craft: 3D viewer yang terbelah antara desain dan kode.
Headline: "Bentuk 3D, dilihat dari dua sisi".
Mode: light mode sebagai default halaman; panel code-inset gelap sebagai kontras.
Token warna (peran):
#F7F5F0 (warm off-white paper ground)#FFFFFF#141619 (ink)#FF4D2E (coral-orange) — outline objek aktif, CTA, penanda interaktif; digunakan hemat, tidak sebagai isian area besar#6B6F76 untuk label dan metadata sekunder#141619 dengan teks #F7F5F0 dan hairline #2A2D33#E4E0D8Tipografi:
clamp(40px, 8vw, 112px); judul seksi clamp(28px, 4vw, 48px); body 16–18px; label mono 11–12px; kode/data 13–14px. Line-height 1.05 untuk display, 1.6 untuk body.Bahasa bentuk: presisi dan teknis-ringan. Ritme spasi 8-pt. Radius 6–10px pada kartu dan tombol (bukan pill, bukan tajam). Border hairline 1px #E4E0D8 pada permukaan terang dan #2A2D33 pada panel gelap. Bingkai viewer 3D radius 10px dengan border 1px terlihat dan motif corner bracket. Tanpa blob, tanpa soft offset shadow — kedalaman berasal dari viewer dan dari split.
Layout: logika split-screen asimetris di seluruh halaman. Beranda: panel kiri terang (45%) dengan headline besar bertumpuk dan blok mono; panel kanan gelap (55%) dengan viewer 3D live yang bleed keluar tepi kanan. Login: panel kiri terang berisi formulir, panel kanan gelap dengan wireframe berputar. Kelola Konten 3D: dua kolom — tabel data mono di kiri, pratinjau 3D di kanan. Semua kolom menumpuk tunggal pada 375px dengan viewer di atas tabel.
Imagery: konten 3D itu sendiri adalah imagery — objek geometris bersegi low-poly dengan overlay wireframe yang dapat dialihkan. Thumbnail ubin adalah still render primitif 3D sederhana di atas ground off-white. Diagram dan contoh kode tampil sebagai blok mono berlabel kecil, bukan dekorasi. Tanpa stock photography, tanpa ilustrasi demi ilustrasi.
Split hero dua sisi: hasil render dan kode yang menghasilkannya.
Hero Beranda adalah split layar penuh yang tidak simetris. Sisi kiri (45%) adalah ground off-white #F7F5F0 dengan headline Space Grotesk clamp(40px, 8vw, 112px) "Bentuk 3D, dilihat dari dua sisi" tersusun atas empat baris ragged, dengan blok keterangan mono kecil di bawahnya (format, jumlah vertex, renderer) dan CTA coral #FF4D2E "Jelajahi contoh". Sisi kanan (55%) adalah panel code-inset gelap #141619 dengan border terang 1px, memenuhi tinggi viewport, berisi viewer 3D live objek geometris bersegi yang disinari dari kiri atas, dengan versi wireframe tipis di-ghost di atasnya. Label mono di kiri atas panel gelap berbunyi "VIEWPORT / 01" dengan titik coral kecil berdenyut di sampingnya. Panel gelap bleed keluar tepi kanan; baris terakhir headline memanjang 24px di bawah tepi panel. Tanpa headline terpusat, tanpa gradien, tanpa kartu mengambang.
Signature moves yang diimplementasikan:
#F7F5F0 di sudut bingkai viewer dan panel gelap Login.Interaction Model: Animated Motion Tempo: expressive Hero Dimensionality: layered_2d
Landing Hero Motion Brief
font-size: clamp(...)) agar muat; tidak ada elemen lain yang menutupi bagian mana pun dari teks atau kontrol yang dapat dibaca. Imagery dan dekorasi boleh terpotong atau bleed sesuai arah kreatif.prefers-reduced-motion menonaktifkan orbit, parallax, dan reveal, menyisakan viewer statis dengan kontrol seret manual.#FF4D2E tidak digunakan sebagai isian area besar; teks ink #141619 di atas ground #F7F5F0 dan teks #F7F5F0 di atas panel #141619 untuk keterbacaan.frontend, backend, dan database sesuai inventaris scaffold.#141619 bergaya blok kode yang memuat viewer 3D atau wireframe dekoratif.
01/ Bentuk
VIEWPORT / 01
Contoh aktif tampil di Beranda — Kubus Terpangkas · tampil
GLB · 1.248 VERTEX · WebGL
Seret untuk memutar
Arahkan untuk melihat wireframe
Anda sedang menjelajahi Beranda secara publik — contoh 3D dapat diputar dan diperiksa tanpa masuk.

01/ Bentuk
VIEWPORT / 01
Contoh aktif tampil di Beranda — Kubus Terpangkas · tampil
GLB · 1.248 VERTEX · WebGL
Seret untuk memutar
Arahkan untuk melihat wireframe
Anda sedang menjelajahi Beranda secara publik — contoh 3D dapat diputar dan diperiksa tanpa masuk.
No comments yet. Be the first!