Skip to content
SyharipfPublic

About

Aplikasi desktop all-in-one: keuangan, proyek, tugas, jadwal, jurnal, catatan, berkas, unduhan, dan email dalam satu tempat. Data lokal, asisten AI lokal (Ollama). Tauri 2 + React + SQLite, untuk Fedora.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Logo Anchoa

Anchoa

Aplikasi desktop all-in-one untuk urusan harian: tugas, jadwal, keuangan, jurnal, catatan, berkas, unduhan, dan email — dalam satu tempat, dengan asisten AI yang berjalan di laptopmu sendiri.

Rilis terbaru CI Platform: Arch Linux and CachyOS

Landing page · Panduan pengguna · Instalasi · Rilis


Anchoa adalah aplikasi desktop Tauri untuk Arch Linux dan CachyOS yang menggabungkan manajemen tugas, kalender, keuangan, jurnal, catatan, berkas, unduhan, dan email dalam satu antarmuka. Semua data disimpan secara lokal di satu basis data SQLite, sehingga aplikasi tetap berfungsi penuh tanpa koneksi internet maupun akun cloud. Asisten AI-nya berjalan di Ollama di mesin yang sama, sehingga percakapan dan pemrosesan dokumen tidak meninggalkan perangkat. Sinkronisasi antarperangkat tersedia sebagai opsi dan selalu terenkripsi ujung-ke-ujung.

Fitur utama

  • Semua modul saling tertaut. Tugas, agenda, tagihan, habit, jurnal, dan catatan saling terhubung; satu pencarian (Ctrl+K) menemukan semuanya.
  • Asisten AI lokal. Chat berbasis Ollama di laptop; setiap aksi yang diusulkan asisten harus kamu setujui sebelum dijalankan. Model dapat dipilih per tugas.
  • Ako, maskot asisten. Hewan laut animasi di panggung asisten (src/pet/), bereaksi saat mendengarkan, berpikir, dan berbicara.
  • Asisten suara. Ucapan ke teks dengan whisper.cpp, suara keluar dengan Piper (termasuk suara Bahasa Indonesia), lewat PipeWire.
  • Unduhan lengkap. File langsung serta video/audio lewat yt-dlp dan ffmpeg, dengan antrean; ekstensi browser mengirim tautan ke aplikasi.
  • Email Gmail. Satu akun Gmail via App Password; ringkasan dan saran balasan dari asisten berjalan lokal.
  • Kunci PIN dan backup otomatis. PIN di-hash dengan Argon2id dan divalidasi di sisi Rust; backup database harian disimpan otomatis.
  • Sinkronisasi terenkripsi (opsional). Data tersinkron antarperangkat melalui Supabase dengan enkripsi XChaCha20-Poly1305; tanpa sync, tidak ada data yang keluar.
  • Baki sistem (Tray). Tetap berjalan di latar belakang saat jendela ditutup sehingga pengingat notifikasi, sinkronisasi, dan antrean unduhan terus bekerja. Klik menu Keluar di baki sistem untuk keluar sepenuhnya.

Modul

Modul Isi
Dashboard Tugas hari ini, agenda mendatang, ringkasan modul, kontribusi GitHub (opsional)
Jurnal Ide, curhat, catatan singkat, tag, suasana hati; ide bisa dijadikan tugas
Catatan Halaman bertingkat, editor blok Markdown, [[wikilink]] dan tautan balik, sampah, ekspor Markdown
Email Satu akun Gmail: baca, tulis, balas, bintang, arsip, ringkasan dan saran balasan dari asisten
Jadwal Kalender bulanan dan timeline 8 minggu dari tugas, tagihan, dan Google Kalender (sinkron dua arah)
Habit Centang harian, hari aktif, pengingat, streak, riwayat
Health Berat, tidur, langkah, detak jantung istirahat; tren dan riwayat 14 hari
Keuangan Akun, pemasukan, pengeluaran, transfer, tagihan, batas pengeluaran bulanan
Proyek Kanban, sub-tugas, papan agen kode dengan utas aktivitas
Berkas Jelajah folder lokal, pratinjau, salin, pindah, buang ke Tong Sampah
Unduhan File langsung serta video/audio lewat yt-dlp dan ffmpeg, dengan antrean
Library Film, serial, anime, buku, dan manga: status, progres, rating, ulasan
Asisten Chat dan suara, usulan aksi yang harus disetujui, model per tugas
Notifikasi, Profil, Pengaturan Pengingat, statistik, kunci PIN, model AI, suara, backup, baki sistem, integrasi, sinkronisasi

Cara memakai setiap modul ada di panduan pengguna.

Instalasi

Arch Linux / CachyOS (repo pacman)

Repo pacman anchoa (hanya x86_64) berada di https://syharipf.github.io/Anchoa/arch/$arch. Paket dan database repo ditandatangani GPG; kunci publiknya ada di https://syharipf.github.io/Anchoa/arch/anchoa.gpg. Impor kunci, tambahkan repo, lalu pasang:

curl -fsSLO https://syharipf.github.io/Anchoa/arch/anchoa.gpg
sudo pacman-key --add anchoa.gpg
sudo pacman-key --lsign-key "$(gpg --show-keys --with-colons anchoa.gpg | awk -F: '/^fpr/ {print $10; exit}')"
printf '\n[anchoa]\nSigLevel = Required DatabaseRequired\nServer = https://syharipf.github.io/Anchoa/arch/$arch\n' | sudo tee -a /etc/pacman.conf
sudo pacman -Syu anchoa      # atau: paru -Syu anchoa

Pembaruan datang bersama sudo pacman -Syu atau paru seperti biasa. Dependensi runtime (webkit2gtk-4.1, gtk3, libayatana-appindicator) ikut terpasang otomatis. Dependensi opsional:

  • ollama untuk asisten AI lokal.
  • gnome-keyring atau KWallet (Secret Service) untuk menyimpan password email dan token.
  • gst-plugins-good untuk pemutaran media.

Paket AUR anchoa-bin (paru -S anchoa-bin atau yay -S anchoa-bin) tersedia setelah dipublikasikan ke AUR; jalur utama tetap repo pacman di atas.

Di GitHub Releases juga terlampir tarball anchoa-<versi>-x86_64.tar.gz dan paket anchoa-<versi>-1-x86_64.pkg.tar.zst. Pasang paketnya dengan:

sudo pacman -U ./anchoa-<versi>-1-x86_64.pkg.tar.zst

Di mesin yang hanya memakai GPU NVIDIA, jendela bisa kosong karena renderer DMA-BUF WebKitGTK. Anchoa mengatur WEBKIT_DISABLE_DMABUF_RENDERER=1 secara otomatis pada mesin seperti itu; kalau ingin mengubahnya, setel variabel tersebut sendiri sebelum menjalankan anchoa.

Dari kode sumber

Kebutuhan: Rust stable, bun, dan library sistem untuk Tauri di Arch Linux / CachyOS:

sudo pacman -S --needed base-devel webkit2gtk-4.1 libayatana-appindicator librsvg xdotool openssl rust

lalu pasang bun dari https://bun.sh.

Dari akar repo:

bun install        # pasang dependensi JS
bun tauri dev      # jalankan aplikasi dengan hot reload

Perintah lain yang dipakai saat pengembangan:

bun run typecheck                                  # cek TypeScript
bun run test                                       # unit test frontend (bun test, TZ=Asia/Jakarta)
bun tauri build                                    # build rilis; deb di src-tauri/target/release/bundle/deb/
cd src-tauri && cargo clippy --all-targets -- -D warnings   # lint backend
cd src-tauri && cargo test                         # unit test backend

Uji end-to-end di display virtual (memerlukan Xvfb, xdotool, ImageMagick, dan sqlite3):

bun tauri build --debug --no-bundle
scripts/e2e-smoke.sh src-tauri/target/debug/anchoa

Landing page (Astro) ada di landing/:

cd landing
bun install
bun run build          # termasuk astro check
bun run test:e2e       # test Playwright

Memulai

  1. Pasang dan buka Anchoa dari menu aplikasi, atau jalankan anchoa. Saat pertama dibuka, database lokal dibuat dan Dashboard tampil — tanpa perlu membuat akun Anchoa.

  2. (Opsional) Asisten AI. Pasang Ollama, jalankan layanannya, lalu unduh model bawaan:

    sudo pacman -S ollama
    sudo systemctl start ollama
    ollama pull qwen2.5:3b

    Buka Pengaturan → Asisten & AI, klik Tes koneksi, lalu pilih model per tugas. Alamat bawaan: http://127.0.0.1:11434.

  3. (Opsional) Suara. Di Pengaturan → Suara, pasang model Whisper (ggml-base.bin) untuk ucapan ke teks, lalu Piper TTS dan suara Indonesia · News (id_ID-news_tts-medium) untuk membacakan jawaban. Binary dan model diunduh oleh aplikasi; perekaman dan pemutaran memakai PipeWire (pipewire-utils).

  4. (Opsional) Email Gmail. Aktifkan 2-Step Verification, buat App Password di akun Google, lalu isi Alamat Gmail dan App Password di menu Email dan klik Sambungkan. Password 16 huruf disimpan di keyring sistem.

  5. (Opsional) Sinkronisasi. Hubungkan akun Google/GitHub lewat Pengaturan → Sinkron & data untuk menyinkronkan data antarperangkat secara terenkripsi.

Tangkapan layar

Kartu sosial Anchoa Lembar desain Ako
Pratinjau (kartu sosial dari landing page) Lembar desain Ako, maskot asisten (aset resmi)

Tangkapan layar dan ilustrasi lain ada di landing page.

Arsitektur

Anchoa adalah modular monolith: satu proses aplikasi, satu basis data SQLite, tanpa layanan terpisah.

  • Backend: Tauri 2 (Rust) di src-tauri/. Frontend tidak pernah menyentuh database; setiap aksi adalah perintah Rust, dan src/api.ts adalah satu-satunya pemanggil invoke().
  • Frontend: React 19 + TypeScript + Vite + Tailwind di src/.
  • Model data: setiap hal adalah satu baris di tabel items, dengan tabel perpanjangan per modul. ID memakai UUIDv7, waktu disimpan sebagai epoch milidetik UTC, dan penghapusan bersifat soft (deleted_at) — pilihan yang membuat sinkronisasi multi-perangkat tidak butuh migrasi besar.
  • Batas hari ("hari ini", "terlambat") dihitung di Rust, dalam waktu lokal. Uang disimpan sebagai bilangan bulat satuan terkecil, bukan float.
flowchart LR
    subgraph FE ["React + TypeScript (src/)"]
        UI[Modul UI]
        API[api.ts]
    end
    subgraph BE ["Tauri 2 · Rust (src-tauri/)"]
        CMD[Perintah Rust]
        DB[("SQLite — anchoa.db")]
        AST[Asisten lokal<br/>Ollama · whisper.cpp · Piper]
        SYNC[Sync terenkripsi<br/>XChaCha20-Poly1305]
    end
    UI --> API --> CMD
    CMD --> DB
    CMD --> AST
    CMD --> SYNC
Loading

Privasi & data lokal

  • Tetap di laptopmu: seluruh data aplikasi (tugas, keuangan, jurnal, catatan, pengaturan) berada di SQLite lokal pada ~/.local/share/io.github.syharipf.anchoa/anchoa.db, beserta backup di folder backups/ di direktori yang sama.
  • Backup: dibuat otomatis saat aplikasi dibuka (maksimal satu per hari), dengan rotasi 7 berkas terbaru bersama backup manual. Backup hanya menyalin database SQLite — berkas asli, hasil unduhan, dan model suara tidak ikut.
  • Kredensial: PIN di-hash dengan Argon2id dan diverifikasi di sisi Rust; App Password Gmail disimpan di keyring sistem, bukan di database.
  • Yang keluar: email dan unduhan tentu berkomunikasi dengan sumbernya masing-masing (Gmail, situs tujuan). Model dan suara asisten diunduh sekali saat dipasang; setelah itu percakapan dan pemrosesan suara berjalan sepenuhnya lokal.
  • Sinkronisasi bersifat opsional dan terenkripsi ujung-ke-ujung (XChaCha20-Poly1305) sebelum data dikirim ke Supabase.
  • Batasan: database dan backup belum dienkripsi saat disimpan di disk; enkripsi at-rest direncanakan untuk fase berikutnya.

Roadmap

Pengembangan berjalan per fase; setiap fase punya spec di docs/superpowers/specs/ dan rencana implementasi per PR di docs/superpowers/plans/, dengan isu GitHub yang dikelompokkan dalam milestone. Status saat ini: tersedia untuk Arch Linux dan CachyOS (x86_64). Fedora/RPM dan mobile ditunda; fokus pengembangan ada di Arch. Fitur yang tersedia mengikuti kode, bukan rencana.

Kontribusi

Tidak ada CONTRIBUTING.md di repo ini; alur kerjanya sebagai berikut:

  1. Buat cabang feat/<nomor-isu>-<slug> dari main. main adalah branch terlindungi — semua perubahan lewat pull request dengan CI hijau.
  2. Kembangkan dengan TDD, gunakan commit kecil dalam format Conventional Commits.
  3. Sebelum membuka PR, jalankan seluruh pemeriksaan: bun run typecheck, bun run test, cargo clippy --all-targets -- -D warnings, cargo test, dan uji E2E Xvfb (lihat Instalasi). Sertakan bukti (output test, tangkapan layar) dan Closes #N di badan PR.
  4. Setiap PR dianalisis SonarCloud; quality gate gagal pada temuan keamanan atau bug baru.

Lisensi

Tidak ada berkas lisensi yang diterbitkan di repositori ini. Seluruh kode dan aset hak cipta milik penulis (all rights reserved) sampai sebuah lisensi dirilis. Jika kamu ingin memakai kode ini, buka isu untuk berdiskusi terlebih dahulu.

Ucapan terima kasih

Anchoa berdiri di atas proyek-proyek terbuka berikut:

About

Aplikasi desktop all-in-one: keuangan, proyek, tugas, jadwal, jurnal, catatan, berkas, unduhan, dan email dalam satu tempat. Data lokal, asisten AI lokal (Ollama). Tauri 2 + React + SQLite, untuk Fedora.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages