ui
Catatan teknis seputar web development, DevOps, dan integrasi AI.
10 artikel
- 21.18writing
Rencana yang Bisa Dieksekusi Menolak Kompromi
Rencana 634 baris yang benar-benar bisa dijalankan: migrasi berpasangan, kontrak dulu, test terdaftar di commit yang sama.
TL;DR: Ternyata dokumen rencana 634 baris itu bukan formalitas, tapi panduan ketat berisi tugas, berkas, dan aturan wajib. Aturannya mekanis: skema database cuma boleh lewat migrasi naik-turun, API ditulis dulu sebelum kode, dan test wajib ikut terdaftar. Nilainya justru di penegasan yang ditolak, jadi aku mau pakai pola ini ke alur kerja berikutnya.
#documentation#requirements#workflow - 21.06writing
Brief Lisan Jadi Dokumen Beku: Kata Klien Sebelum Kata Tim
Brief lisan klien dibekukan dulu: kutipan verbatim dipisahkan dari catatan tim, konflik dicatat bukan diputuskan.
TL;DR: Brief lisan klien jangan langsung jadi tiket kerja, bahaya kalau salah tafsir. Tim bekuin omongannya apa adanya di dokumen intake status input, dipisah kutipan verbatim sama catatan tim yang mapetin poin ke dokumen lama. Yang bentrok atau belum jelas ditahan dulu, cuma jalur aman yang masuk backlog sambil nunggu konfirmasi tertulis.
#requirements#documentation#workflow - 19.22frontend
Nilai Tebakan Bukan Data: Tandai Placeholder di Mockup
Angka tebakan tanpa penanda di mockup bisa bertahan jadi ekspektasi resmi. Tandai asal-usul setiap nilai agar deliverable tidak berbohong.
TL;DR: Mockup yang isinya angka tebakan tanpa penanda itu bahaya, bisa dianggap data beneran pas udah jadi acuan developer. Solusinya gampang, kasih label mana nilai asli dari sumber dan mana cuma placeholder yang nunggu jawaban. Intinya nilai tebakan bukan data, mending ditandain dari awal daripada nanti ngulik ulang.
#requirements#ux#mockup - 22.46testing
Titik Buta Glob Git di Build Gate Token
Pola bintang dua di git ternyata melewatkan file komponen yang langsung di src; empat perintah repo tempaan membongkar titik buta build gate token.
TL;DR: Gue bikin gate buat ngeblok hex kayak #fff123 di Next.js, kirain pola rekursif udah nangkep semua file. Pas dites pakai repo tempaan, file yang langsung di src/ ternyata lolos dari git ls-files. Akhirnya di-fix pakai gabungan pola biar file direct sama nested ketangkep semua, plus nambah dua test regresi.
#git#glob#build-gate - 12.20frontend
Label yang Bisa Bohong: Saat Vocab Status Hidup di Dua Tempat
Satu lib jadi rumah label enam status; nilai tak dikenal tampil jujur sebagai teks mentah dengan gaya netral, bukan label salah.
TL;DR: Gue liat status di halaman publik cuma jadi teks polos gara-gara kamusnya masih versi lama 4 status padahal backend udah 6. Akhirnya kamus dipusatin di lib layanan-flow biar jadi satu sumber kebenaran dan dijaga TypeScript biar nggak ketinggalan. Kalau ada status asing tinggal fallback netral jadi tetap jujur nggak ngarang label.
#react#typescript#ui - 11.16frontend
Mirror Peta Transisi Status di Frontend
Peta transisi status di frontend bikin opsi mustahil mati sebelum diklik. Backend tetap satu-satunya penjaga; kodenya cuma union type dan satu map.
TL;DR: Awalnya flowStageOf isinya ternary berlapis dan tombol admin masih nawarin status yang udah gak ada sampai backend nolak pakai 409. Akhirnya dibikin union type buat enam status plus map NEXT_STATUSES biar UI cuma nyalain opsi yang boleh, sisanya biar backend yang mutusin. Ternary diganti switch, label dipisah, aria-disabled ternyata cuma semantik jadi validasi tetap dobel di handler sama backend.
#frontend#typescript#state-machine - 20.41devops
WiFi Lemot Otomatis Jam Kerja: Squid Delay Pools di Docker
Pengalaman membatasi bandwidth per klien terjadwal WIB pakai Squid delay_pools di Docker: satuan byte, acl time, TZ, pool kedua.
#squid#docker#devops - 18.18frontend
Komposer Chat Desktop Ramping dengan Varian sm: Tailwind
Menyusutkan tinggi field dan tombol komposer chat desktop dengan empat kelas responsif Tailwind, tanpa komponen terpisah dan tanpa JavaScript.
TL;DR: Okay, the user wants a 3-sentence summary in informal-professional Indonesian, exactly 3 sentences, max 60 words total. No markdown, bullets, or repeating the title. Just the summary.
#tailwind#css#ux - 03.06frontend
Saklar Mode Chat Saya Pindah ke Puncak Sidebar
Chip pemilih mode di dasar sidebar tidak kelihatan sebelum menggulung. Dipindah ke puncak, atribut type dan aria-pressed tetap terpasang.
TL;DR: Saklar mode pencarian dan mode tentang-saya tadinya tersembunyi di dasar sidebar, jadi pengguna baru menyadarinya setelah menggulung riwayat obrolan. Commit ini memindahkannya ke puncak sidebar dengan logika sederhana: kontrol yang menentukan mode harus terlihat sebelum keputusan diambil. Form input kini menyusut jadi tanggung jawabnya saja, sementara atribut aksesibilitas seperti type dan aria-pressed tetap dipertahankan.
#react#accessibility#tailwind