9 poin oleh medidevlab 2026-04-15 | 16 komentar | Bagikan ke WhatsApp

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

  1. Deteksi pemilihan teks global (penanganan izin Accessibility API)
  2. Keamanan API key (awalnya saya hardcode di klien, lalu sadar belakangan dan merombaknya total)
  3. 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

 
t7vonn 2026-04-17

Halo, saya ingin menyampaikan beberapa pendapat!

  • Sepertinya cukup banyak pengguna Mac yang memakai alat seperti alfred / raycast, dan shortcut bawaan aplikasi-aplikasi itu adalah opt + space. Mungkin akan lebih baik jika shortcut bawaan menggunakan kombinasi lain.
  • Sepertinya belum ditandatangani/disahkan
(1) codesign  
$ codesign -dv --verbose=4 MiniAi.app  
Executable=/Users/.../Downloads/MiniAi.app/Contents/MacOS/MiniAi  
Identifier=com.miniai.app  
Format=app bundle with Mach-O thin (arm64)  
CodeDirectory v=20400 size=8551 flags=0x2(adhoc) hashes=257+7 location=embedded  
VersionPlatform=1  
VersionMin=917504  
VersionSDK=1704960  
Hash type=sha256 size=32  
CandidateCDHash sha256=c60ed7e37e533d09cf5365d97bf6428c8d42f2dd  
CandidateCDHashFull sha256=c60ed7e37e533d09cf5365d97bf6428c8d42f2dd94cdca992cd3f61e8e6554a3  
Hash choices=sha256  
CMSDigest=c60ed7e37e533d09cf5365d97bf6428c8d42f2dd94cdca992cd3f61e8e6554a3  
CMSDigestType=2  
Executable Segment base=0  
Executable Segment limit=1556480  
Executable Segment flags=0x1  
Page size=16384  
CDHash=c60ed7e37e533d09cf5365d97bf6428c8d42f2dd  
Signature=adhoc  
Info.plist entries=24  
TeamIdentifier=not set  
Sealed Resources version=2 rules=13 files=7  
Internal requirements count=0 size=12  
  
(2) gatekeeper  
$ spctl -a -vvv -t execute MiniAi.app  
MiniAi.app: rejected  
  
(3) Notary staple  
$ xcrun stapler validate MiniAi.dmg  
Processing: /Users/.../Downloads/MiniAi.dmg  
MiniAi.dmg does not have a ticket stapled to it.  
  
$ xcrun stapler validate MiniAi.app  
Processing: /Users/.../Downloads/MiniAi.app  
MiniAi.app does not have a ticket stapled to it.  
  • Daripada mendistribusikan file dmg, akan lebih bagus jika bisa diinstal lewat App Store / homebrew.
 
medidevlab 2026-04-18

Wah, terima kasih banyak sudah meninjaunya sedetail ini 🙏

  1. 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!

  2. 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!

  3. 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 codesign secara 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 😄

 
kurthong 2026-04-16

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?

 
medidevlab 2026-04-16

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~~ :)

 
kurthong 2026-04-16

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

 
medidevlab 2026-04-16

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 😁

 
ly0738 2026-04-15

Model AI apa ya??

 
jhk0530 2026-04-15

Disebutkan bahwa aplikasi ini menggunakan API Claude.

 
ly0738 2026-04-15

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.

 
medidevlab 2026-04-15

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 :)

 
ly0738 2026-04-15

Ah, saya sudah menyampaikannya kepada jhk0530.

 
ly0738 2026-04-15

Di mana ya tertulis kalau menggunakan API Claude?
Saya sudah lihat isi artikelnya dan membuka situs webnya, tapi tidak menemukannya.

 
medidevlab 2026-04-15

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 :)

 
ly0738 2026-04-15

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!

 
medidevlab 2026-04-15

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 😄

 
ly0738 2026-04-23

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.