Repo-rter, aplikasi desktop lokal pertama yang dibangun dengan Next.js dan Tauri v2, awalnya menggunakan localStorage WebView untuk menyimpan log lalu lintas GitHub. Desain ini berhasil melewati batas 14 hari yang menjengkelkan dari GitHub, tetapi segera menimbulkan hambatan arsitektur kritis di produksi. Pada rilis v0.4.1, tim melakukan refactor total lapisan data, meninggalkan JavaScript localStorage demi penyimpanan berkas asli berbasis Rust yang dijalankan Tauri.
Masalah utama localStorage adalah tiga hal: pertama, penyimpanan WebView terikat pada cache OS. Di macOS dan Windows, daemon penghapus cache sistem dapat menghapus folder WebView secara otomatis saat disk hampir penuh, atau utilitas pembersih seperti CCleaner dan CleanMyMac menghapusnya tanpa peringatan. Kedua, batas keras 5 MB pada localStorage. Pengguna yang melacak 20+ repositori selama setahun dengan cepat mencapai batas kuota, memicu QuotaExceededError. Ketiga, cadangan JSON yang mudah menguap. Tanpa pembaca/penulis berkas asli, memulihkan data di perangkat berbeda menjadi merepotkan.
Solusi yang dipilih adalah perintah asli Rust di Tauri yang menulis statistik langsung ke direktori data aplikasi sistem—area yang aman dari penghapusan cache OS. Dua perintah, save_traffic_data dan load_traffic_data, membuat dan membaca berkas JSON dengan nama aman (misalnya, traffic_views_owner__repo.json). Rust juga membuat direktori jika belum ada, sehingga setiap operasi I/O bersifat idempotent dan dapat diandalkan.
Lapisan caching asinkron di frontend menggunakan isTauri() untuk mendeteksi lingkungan. Di Tauri, mergeTrafficData memanggil perintah Rust secara langsung; di browser, ia jatuh kembali ke localStorage. Pola ini mempertahankan kompatibilitas dengan alur kerja pengembangan web sambil memberikan performa dan keandalan di desktop. Logika penggabungan tetap O(1) menggunakan Map, sehingga tidak ada regresi kecepatan meskipun data bertambah.
Untuk mengatasi batas 5.000 permintaan per jam pada Personal Access Token (PAT) GitHub, tim mengadopsi antrian rotatif berbasis jendela geser. Dengan BATCH_SIZE 10, sinkronisasi hanya memproses sebagian repositori sekaligus, menyimpan indeks offset di localStorage. Daftar repositori diurutkan berdasarkan stargazers_count, sehingga distribusi beban tetap stabil. Pengguna dengan 50+ repositori akhirnya mendapatkan cadangan lengkap tanpa pernah memicu batas permintaan, dan proses ini berjalan di latar belakang secara transparan.
Pembersihan data juga dibuat tanpa dependensi. Alih-alih mengimpor chrono, tim memanfaatkan fakta bahwa string ISO-8601 (YYYY-MM-DDTHH:MM:SSZ) dapat dibandingkan secara leksikografis. Rust mempertahankan berkas hanya dengan membandingkan timestamp dengan ambang batas yang diberikan dari JavaScript, sehingga biner tetap kecil dan kompilasi cepat.
Terakhir, versioning dinamis menghilangkan angka versi yang ditulis tangan di UI. Dengan mengaktifkan resolveJsonModule di tsconfig.json, paket mengambil versi langsung dari package.json, sehingga metadata aplikasi selalu sinkron dengan rilis.
Bagi pengembang Indonesia, perubahan ini sangat relevan. Banyak profesional lokal yang melacak beberapa repositori GitHub untuk proyek akademik atau komersial, dan sering kali terhambat oleh batas lalu lintas 14 hari GitHub. Penyimpanan asli Tauri menjanjikan cadangan yang tidak akan hilang karena pembersihan cache sistem atau utilitas pembersih yang umum digunakan di Windows dan macOS. Selain itu, pola sinkronisasi rotatif dapat diskalakan ke puluhan repositori tanpa henti, sebuah skenario umum di startup teknologi dan komunitas open-source di negara ini.
"Kami ingin pengguna merasa aman bahwa data mereka tidak hilang saat sistem membersihkan cache,” kata seorang pengembang Repo-rter. “Dengan menyimpan berkas di direktori data aplikasi, kami menghilangkan ketidakpastian ini dan memberikan kepastian kepada pengguna kami.”
Ke depan, pola ini dapat menginspirasi aplikasi desktop lokal lainnya di ekosistem Indonesia untuk mengadopsi Rust-backed storage. Seiring dengan semakin banyaknya pengembang yang mengutamakan privasi dan kemampuan offline, solusi seperti Repo-rter v0.4.1 dapat menjadi standar baru untuk alat pengembangan yang dapat diandalkan di pasar yang semakin sadar akan keamanan.
Bagi pembaca Indonesia yang ingin menjelajahi Tauri atau membangun aplikasi desktop lokal, v0.4.1 ini merupakan titik awal yang kuat. Kode sumbernya tersedia di dev.to, dan komunitas lokal di Discord atau GitHub dapat berkolaborasi untuk mengadaptasi logika penyimpanan untuk basis kode mereka sendiri. Ini adalah langkah menuju masa depan di mana data tetap milik Anda, di mana pun Anda berada.