Latar belakang
Sehari-hari kegiatan saya itu ada di terminal. SSH ke server, ngoprek infrastruktur, sampai belajar hal-hal baru semuanya saya lakukan dari command line. Tapi ada satu kebiasaan yang lama-lama terasa mengganggu: tiap kali mau tahu tugas berikutnya apa, saya harus keluar dulu dari terminal, buka browser, buka Notion atau catatan, baru balik lagi ngetik. Kelihatannya sepele, tapi pindah-pindah konteks seperti ini diam-diam memecah fokus.
Dari situ muncul pikiran sederhana: kenapa daftar tugas harian saya nggak sekalian saya taruh di terminal saja, di tempat yang sama dengan saya kerja? Daripada bolak-balik ke Notion, mending semuanya ada di satu layar. Akhirnya saya coba bikin sendiri, dan jadilah project kecil ini: sebuah Daily To-Do Dashboard berbasis TUI.
Apa itu TUI
TUI itu singkatan dari Terminal User Interface. Bedanya dengan CLI biasa, kalau CLI umumnya sekali jalan langsung keluar output teks yang statis, TUI adalah aplikasi interaktif yang “hidup” di dalam terminal. Ada layout, navigasi pakai keyboard, warna, dan tampilan yang bisa berubah secara real-time, tapi semuanya tetap berjalan di emulator terminal tanpa perlu GUI.
Kemungkinan besar kalian sudah sering pakai TUI tanpa sadar. Beberapa contoh yang biasa saya pakai sehari-hari: htop atau btop buat monitoring sistem, lazygit buat ngurus git, k9s buat Kubernetes, dan ncdu buat lihat pemakaian disk. Buat orang yang memang tinggal di terminal, TUI ini enak banget. Tangan nggak perlu lepas dari keyboard, aplikasinya ringan, dan yang paling penting tetap jalan walau cuma diakses lewat SSH ke server yang nggak punya tampilan desktop.
Gemini CLI: alasan dan instalasi singkat
Untuk membangun project ini saya pakai bantuan AI coding agent langsung dari terminal. Sebenarnya pilihan pertama saya adalah Claude Code, tapi Claude Code tidak tersedia di paket gratis. Untuk memakainya minimal harus langganan Pro atau pakai kredit API. Akun API baru memang dapat sedikit kredit gratis untuk coba-coba, tapi nggak cukup buat dipakai terus-menerus. Karena waktu itu saya cuma mau eksperimen dulu, saya cari opsi yang bisa gratis di awal, dan Gemini CLI jadi jawabannya.
Gemini CLI adalah AI agent open-source dari Google yang jalan langsung di terminal dan punya free tier yang cukup untuk kebutuhan ngoprek harian. Cara installnya gampang. Prasyaratnya cuma Node.js (disarankan versi LTS, minimal Node 18). Setelah itu tinggal jalankan:
npm install -g @google/gemini-cli
Lalu untuk memulainya cukup ketik:
gemini
Kalau kalian cuma ingin mencoba tanpa install permanen, bisa langsung pakai npx:
npx @google/gemini-cli
Saat pertama kali dijalankan, kalian akan diminta autentikasi. Paling gampang login pakai akun Google untuk free tier, atau pakai API key kalau memang butuh.
Satu catatan penting yang perlu diketahui. Per 18 Juni 2026, Google menghentikan layanan Gemini CLI untuk pengguna free tier, Google AI Pro, dan Ultra, lalu mengarahkan penggunanya ke tool baru bernama Antigravity CLI. Jadi kalau kalian membaca tulisan ini setelah tanggal tersebut dan memakai akun gratis, perintah gemini kemungkinan sudah tidak melayani request lagi. Saya sendiri membangun project ini selagi free tier-nya masih aktif. Buat yang baru mulai sekarang, silakan cek Antigravity CLI sebagai penerusnya, atau pertimbangkan opsi lain seperti Claude Code kalau sudah siap berlangganan.
Struktur folder dan generate README
Project ini ditulis pakai Go, dengan ekosistem Charm sebagai fondasinya. Bubble Tea dipakai sebagai kerangka TUI-nya, Lipgloss untuk styling seperti warna, border, dan layout, lalu Bubbles untuk komponen siap pakai seperti text input, progress bar, dan help. Untuk penyimpanan datanya saya pakai SQLite lewat go-sqlite3, jadi task tetap tersimpan walau aplikasinya ditutup. Database-nya disimpan di ~/.todo-dashboard/tasks.db.
Struktur foldernya dibuat modular mengikuti pola Model-View-Update (MVU), pola khas Bubble Tea yang terinspirasi dari Elm:
.
├── main.go # entry point: siapkan path DB, lalu jalankan program
├── internal/
│ ├── db/db.go # layer SQLite: add, get, toggle, delete task
│ ├── models/task.go # struct Task dan tipe Priority
│ └── tui/model.go # logika Bubble Tea: Model, Update, View, keymap, style
├── go.mod
├── go.sum
└── .gitignore
Inti dari pola MVU ini begini. Semua state aplikasi, mulai dari daftar task, posisi kursor, sampai mode input, disimpan di dalam Model. Setiap kejadian, entah itu tombol ditekan atau timer detik yang berdetak untuk update jam, masuk ke fungsi Update yang bertugas mengubah state. Lalu View merender tampilan dari state terbaru tadi. Alurnya jadi rapi dan gampang ditebak. Logika seperti navigasi kursor (j/k), menandai selesai (space), menambah task baru (n), dan menghapus (x) semuanya ada di model.go.
Nah, untuk README.md saya minta tolong Gemini CLI yang menyusun. Hasilnya cepat dan rapi sebagai titik awal. Sudah ada bagian fitur, tech stack, cara install, tabel keybinding, sampai struktur project. Tapi saya mau jujur, README hasil generate tetap perlu dibersihkan manual. Punya saya misalnya masih menyisakan placeholder seperti URL clone yang masih bertuliskan yourusername dan gambar preview placeholder yang belum saya ganti dengan screenshot asli. Jadi menurut saya AI agent ini bagus banget untuk draft awal dan biar ngebut, tapi review manusia tetap wajib supaya dokumentasinya benar-benar cocok dengan repo. Buat kalian yang mau coba langsung, repo aslinya bisa dijalankan seperti ini:
git clone https://github.com/rafiharli/todo-tui-dashboard.git
cd todo-tui-dashboard
go mod tidy
go run main.go
Menambah Task (tekan n)

Menambah deadline (opsional)

Input tanggal tidak sesuai format

Hal kecil yang mempermudah
Buat saya, project ini memang kecil dan sederhana, tapi justru di situ nilainya. Dia menyelesaikan satu gangguan kecil yang sering saya alami, yaitu nggak perlu lagi pindah-pindah ke notes atau app lain cuma untuk lihat tugas berikutnya. Sekarang daftar tugas harian ada di tempat yang sama dengan saya kerja, yaitu di terminal, dan itu saja sudah cukup bikin alur kerja saya terasa lebih ringan. Kebetulan sambil bikin ini saya juga belajar dasar-dasar Go, cara kerja TUI dengan Bubble Tea, dan bagaimana memanfaatkan AI agent di terminal tanpa menyerahkan semuanya bulat-bulat ke AI.
Hal-hal kecil seperti ini menurut saya sering diremehkan, padahal kalau diakumulasi setiap hari dampaknya nyata. Nggak harus bikin aplikasi besar atau fitur yang rumit. Kadang yang kita butuhkan cuma satu tool sederhana yang menghapus satu langkah ekstra dari rutinitas. Kalau kalian juga sering di terminal dan punya kebiasaan kecil yang berulang-ulang dan agak mengganggu, coba pikirkan apakah bisa dipermudah dengan tool kecil buatan sendiri. Nggak harus sempurna, yang penting bisa menghemat sedikit waktu dan tenaga kalian. Buat saya, hal kecil yang mempermudah seperti ini justru yang paling kepakai sehari-hari.
Beginner Tips:
- Gunakan plan mode, agent, dan skill sebelum mengimplementasikan project. Ini berlaku pada platform AI manapun (claude code/gemini cli/codex cli).


Leave a Reply