Produk · Asisten AI
AI Todo
Aplikasi todo & pengingat yang bisa dikelola lewat chat dengan AI maupun manual — satu binary Go dengan SQLite, PWA yang bisa di-install, dan aplikasi menu bar macOS; AI hanya mengusulkan aksi, server yang memvalidasi.
- Peran
- Full-stack Developer
- Durasi
- Okt 2026 — Nov 2026
- Konteks
- Proyek pribadi
- Stack
- Go
- SQLite
- Vue 3
- PWA
- Web Push
- Swift
- AppKit
- Docker
Masalah
Aplikasi todo memaksa kita mengisi form; asisten chat lupa apa yang kita ceritakan kemarin dan tidak bisa dipercaya menyentuh data. Saya ingin cukup mengetik "besok jam 9 ingetin telpon bengkel, terus tandai beli galon udah" dan semuanya terjadi — di HP dan di Mac — tanpa memberi AI kebebasan penuh atas database.
Konteks
Alat pribadi yang dibuat supaya murah dijalankan di VPS sendiri: hanya model AI gratis, satu server kecil, dan notifikasi di semua perangkat yang saya pakai. Semua yang bisa dilakukan lewat chat juga harus bisa dilakukan manual, supaya aplikasi tetap berguna saat AI mati atau salah.
Solusi
- Chat sebagai jalan pintas: tambah, ubah, selesaikan, hapus, cari, dan ringkas todo & pengingat dari satu kotak chat. Aksi tampil sebagai kartu dengan tombol Batalkan; hapus dan perubahan massal minta konfirmasi dulu. Perintah garis miring (
/todo,/hari-ini,/undo) jalan tanpa AI sama sekali. - Manual tetap lengkap: daftar todo dengan tab Hari ini / Akan datang / Tanpa tenggat / Selesai, pencarian, daftar, prioritas, catatan, dan pengingat sekali atau berulang dengan tanggal akhir, jumlah, tunda, dan jeda.
- Asisten yang mengingat: profil dan catatan (terinspirasi Hermes Agent) dibawa di setiap pesan dan bisa diperiksa, diubah, dan diekspor. Ingatan dipindai sebelum disimpan dan menolak password, PIN, token, nomor kartu, serta pola prompt injection.
- Notifikasi di mana-mana: Web Push untuk PWA, notifikasi native dengan tombol Selesai / Tunda 10 mnt di Mac, plus ringkasan pagi dan dorongan todo terlambat.
- Mode admin terpisah: katalog model AI (tes, aktifkan, urutan fallback), persona & batas asisten, AI call log, dan system log — tanpa satu pun endpoint yang bisa membaca todo, chat, atau ingatan pengguna lain.
Arsitektur
Detail lapisan
PWA & aplikasi menu bar Mac
PWA Vue 3 untuk HP, tablet, dan PC (Web Push), plus aplikasi menu bar AppKit dengan badge, centang cepat, panel chat (⌥⌘T), dan notifikasi lokal.
Tantangan teknis
- Menjauhkan AI dari database. Model hanya bisa mengusulkan rencana JSON. Server mencocokkan setiap operasi dengan whitelist, memvalidasi bentuknya, menjalankannya lewat fungsi core yang sama dengan form di dalam transaksi, dan mencatat entri undo.
- Model gratis tidak bisa diandalkan. Klien toleran terhadap balasan aneh, berpindah antar provider sesuai urutan, dan mencatat setiap panggilan keluar supaya admin bisa melihat model mana yang gagal dan kenapa.
- Jadwal berulang gampang salah. Penjadwal — bukan AI — menghitung setiap kemunculan berikutnya di zona waktu pengguna dan menyimpan waktu dalam UTC, dengan tes untuk rentang jam, akhir bulan, tanggal akhir, dan jumlah.
- Aplikasi Mac tanpa Mac di CI. Klien HTTP-nya hanya memakai Foundation, jadi diuji di Linux terhadap server Go asli; bagian AppKit dikompilasi dan dirilis oleh workflow GitHub Actions macOS.
- Deploy yang tidak bisa merusak server. Setiap merge ke
mainmem-backup database, membangun ulang container, menjalankan health check, dan rollback otomatis kalau gagal.
Dampak
- provider AI gratis dengan fallback
- 3provider AI gratis dengan fallback
- jenis jadwal pengingat
- 6jenis jadwal pengingat
- binary + satu berkas SQLite
- 1binary + satu berkas SQLite
Pelajaran
Perlakukan model bahasa sebagai pengguna dengan keyboard yang sangat cepat, bukan sebagai bagian dari backend: beri ia form yang sama dengan semua orang, buat aksi berbahaya butuh klik manusia, dan buat semuanya bisa dibatalkan. Satu aturan itu membuat sisa desainnya tetap sederhana.