Halo. Saya mahasiswa kedokteran, dan sejak 2 bulan lalu saya belajar vibe coding secara otodidak sambil membuat sebuah aplikasi menu bar untuk macOS. Hari ini saya merilisnya!
MiniAI - aplikasi ini melakukan apa
Di mana pun Anda memilih teks lalu menekan shortcut yang sudah ditentukan, sebuah jendela kecil akan muncul dari menu bar dan AI akan menjelaskannya. Intinya, proses pindah ke browser, mencari di Google, lalu kembali lagi jadi tidak perlu.
Awalnya saya membuatnya karena malas mencari istilah yang tidak saya kenal saat membaca paper, tetapi setelah jadi ternyata saya memakainya juga dalam banyak situasi lain, seperti saat menulis email berbahasa Inggris atau saat melihat kode.
Tech stack
- UI: NSPanel + SwiftUI (floating window untuk aplikasi menu bar)
- Respons AI: efek mengetik real-time dengan streaming SSE
- Backend: proxy API dengan Supabase Edge Function (agar API key tidak ditanam di klien)
- Rate limiting: pembatasan per pengguna berbasis PostgreSQL
- Deployment: penandatanganan Developer ID + notarization selesai
Bagian yang paling lama saya utak-atik saat pengembangan
- Deteksi pemilihan teks global (penanganan izin Accessibility API)
- Keamanan API key (awalnya saya hardcode di klien, lalu sadar belakangan dan merombaknya total)
- Proses notarization (karena pengalaman pertama, 2 hari habis di sini)
Khusus poin 3, saya rasa siapa pun yang pernah mendistribusikan aplikasi macOS akan paham. Walaupun mengikuti dokumentasi, ada beberapa tahap yang tetap tidak berhasil dalam sekali jalan.
Status saat ini
- Beta dirilis, gratis
- Unduhan tersedia di homepage
Feedback sangat saya tunggu
- Apakah UX shortcut terasa natural
- Apakah ada masalah saat clean install
- Apakah ada bagian arsitektur yang bisa diperbaiki
- Saran dari yang pernah membuat aplikasi serupa
Saya juga sangat terbuka untuk masukan soal perbaikan arsitektur atau berbagi pengalaman jatuh bangun dengan notarization macOS.
Dan satu hal lagi, untuk para developer yang punya pekerjaan utama terpisah dan membuat produk sampingan,
"Perlu saya dalami lagi?" vs "cukup jadi pengalaman, lalu lanjut ke berikutnya" — saya penasaran bagaimana kalian mengambil keputusan seperti itu.
16 komentar
Halo, saya ingin menyampaikan beberapa pendapat!
opt + space. Mungkin akan lebih baik jika shortcut bawaan menggunakan kombinasi lain.Wah, terima kasih banyak sudah meninjaunya sedetail ini 🙏
Shortcut: Betul. Untuk pengguna Alfred/Raycast, isu bentrok dengan ⌥Space
memang yang paling sering kami dengar. Kami sudah menyadari perlunya fitur pengaturan shortcut kustom,
dan akan kami masukkan ke prioritas perbaikan!
Tanda tangan/notarisasi: Ya, saat ini masih dalam status tanda tangan adhoc.
Karena masih di tahap awal pengembangan, biaya notarisasi masih agak membebani, jadi sempat kami tunda 😅
Terima kasih sudah mengeceknya!
Cara distribusi: Kami juga sedang mempertimbangkan distribusi lewat App Store atau Homebrew Cask.
Untuk saat ini kami rilis dulu dalam bentuk DMG agar distribusinya lebih cepat,
tetapi saya rasa arah yang Anda sampaikan memang tepat,,
Saya benar-benar tersentuh melihat Anda sampai mengecek
codesignsecara langsung.Terima kasih banyak karena sudah begitu peduli pada produk ini!
Kalau nanti ada kendala lagi, jangan ragu untuk memberi tahu kami. Dukungan Anda sangat menyemangati 😄
Kalau memang tidak dibuat untuk dijual pada level production atau semacamnya, sepertinya tidak masalah juga kalau Anda membukanya sebagai open source di GitHub agar bisa mendapat feedback, bukan?
Terima kasih atas masukannya yang berharga!
Karena ini adalah bisnis terkait pertama saya, awalnya saya menjalankannya sebagai pengalaman belajar, tetapi sepertinya membagikannya sebagai open source agar banyak orang bisa langsung menggunakannya juga merupakan ide yang bagus 😁
Kalau nanti saya rilis sebagai open source, kalian wajib kasih feedback ya~~ :)
Bukan berarti Anda tidak bisa menjualnya hanya karena itu open source. Cukup banyak juga aplikasi yang berjalan dengan dua jalur seperti itu. Open source pada dasarnya lebih merupakan konsep membangun bersama pengembang lain yang tertarik pada proyek tersebut daripada untuk pengguna umum. Kalau khawatir dicuri, Anda bisa memasang lisensi yang jelas, sih... meskipun di era AI sekarang, ketika proyek clean room ada di mana-mana, rasanya saya juga ragu itu masih banyak artinya. Kalau Anda merilisnya sebagai open source, masa kami cuma akan memberi umpan balik? hehe
Wkwkwk terima kasih atas saran dari senior developer 🙏
Akhir-akhir ini dunia berubah terlalu cepat, jadi rasanya sangat sulit untuk beradaptasi!
Terima kasih atas banyak informasinya, dan saya juga akan sangat berterima kasih jika ke depannya tetap memberi banyak perhatian 😁
Model AI apa ya??
Disebutkan bahwa aplikasi ini menggunakan API Claude.
Itu sebenarnya tertulis jelas di artikel, jadi saya sempat panik dan mencari-cari apakah saya salah bertanya.
Saya membaca ringkasan, artikel asli, situsnya, bahkan memasang programnya dan lama mencari-cari isinya, tetapi tidak menemukannya; ternyata itu tertulis di kebijakan privasi.
Biasanya orang tidak sampai mengobrak-abrik kebijakan privasi hanya untuk memeriksa tech stack.
Ke depannya, saya akan berterima kasih kalau Anda juga memberi tahu di mana itu tertulis.
Terima kasih banyak atas masukan berharganya!
Saya sempat mempertimbangkan untuk menuliskan penjelasan terkait model, tetapi saya tidak menyebutkannya karena merasa orang awam mungkin kurang familiar dengan konsep API.
Karena ada yang penasaran soal itu, saya akan memperbaruinya.
Ngomong-ngomong, apakah Anda sudah sempat mencoba aplikasinya? Saya penasaran bagaimana pendapat Anda :)
Ah, saya sudah menyampaikannya kepada jhk0530.
Di mana ya tertulis kalau menggunakan API Claude?
Saya sudah lihat isi artikelnya dan membuka situs webnya, tapi tidak menemukannya.
Halo! Saya pembuatnya.
Saat ini menggunakan model Claude Sonnet 4!
Ke depannya, saya berencana menambahkan opsi agar Anda bisa langsung memilih BYOK atau model lain juga.
Terima kasih atas perhatiannya :)
Terima kasih atas jawabannya!
Saya dulu sering menggunakan fitur terjemahan pop-up DeepL, jadi sepertinya saya akan mencobanya sebentar dengan ini.
Ke depannya, sepertinya akan bagus juga jika mendukung format https://www.openresponses.org/ sehingga ada cara yang lebih terbuka untuk menggunakan LLM lokal!
Sepertinya Anda berencana menggunakannya terutama untuk fitur terjemahan!
Ke depannya, kami juga berencana menambahkan fitur pemilihan mode agar bisa menyediakan fungsi terjemahan yang sedikit lebih terspesialisasi :)
Terima kasih juga atas sarannya tentang cara menggunakan model lokal selain API eksternal! Kami akan menambahkannya ke rencana implementasi ke depan.
Terima kasih atas masukan berharganya, dan jika ada hal yang kurang nyaman saat digunakan, jangan ragu untuk memberi tahu kami 😄
Saya sudah memakainya selama seminggu, dan karena pengalaman penggunaannya bagus, saya terus menggunakannya. Terima kasih.
Sepertinya akan lebih baik lagi jika masalah cara distribusi shortcut seperti yang disebutkan orang lain bisa diselesaikan! Saya menantikannya.