HeadlinesBriefing favicon HeadlinesBriefing.com

Capsule: Aplikasi Web Satu File SQLite

Hacker News •
×

Hey HN, saya selalu memiliki masalah bahwa membuat halaman HTML itu sederhana, tapi menyimpan data memerlukan hosting di suatu tempat dan berbaginya tidak mudah. Selama beberapa bulan terakhir, saya membangun aplikasi bernama Capsule (ini juga nama ekstensi filenya) yang ditulis dalam Rust dengan Tauri 2.0 yang memungkinkan memaketkan aplikasi HTML dan datanya ke dalam satu file SQLite. File HTML dan aset terkait apa pun langsung disematkan di database.

Data pengguna bisa disimpan sebagai key/value store localStorage atau melalui API koleksi terinspirasi MongoDB sebagai dokumen, tersimpan di tabel dalam file. Anda juga bisa menyimpan aset lain, seperti file PDF atau gambar, langsung di database untuk menjaga dokumen berbeda tetap bersama. Semua data bisa diekspor dengan mudah ke CSV atau JSON jika diperlukan.

Privasi dan keamanan adalah prioritas besar, jadi dokumen tidak bisa melakukan apa pun secara default. Mereka tidak memiliki akses langsung ke sistem file dan memerlukan izin untuk mengakses internet. Model izin masih sesuatu yang saya kerjakan untuk diperbaiki.

Dokumen Capsule juga bisa menggunakan model AI lokal atau remote untuk fitur AI spesifik dokumen. Satu kelemahan pendekatan ini adalah bahwa beberapa orang yang mengerjakannya akan menciptakan salinan yang berbeda. Agar memungkinkan penggabungan salinan berbeda dari file yang sama, setiap entri data memiliki UUID dan timestamp unik.

Saya berencana untuk membuka spesifikasi format file untuk versi 1.0 aplikasi agar aplikasi lain bisa membaca atau menulis file Capsule. Anda bisa mencobanya di pratinjau web di https://withcapsule.app/preview dengan template siap pakai atau menggunakan penyedia AI pilihan Anda untuk membuat aplikasi kustom yang dioptimalkan untuk Capsule. Saya masih bekerja pada format file tapi ada migrasi untuk setiap versi baru, jadi data seharusnya tidak pernah hilang saat menggunakan versi aplikasi yang lebih baru di masa depan.