HeadlinesBriefing favicon HeadlinesBriefing.com

Capsule: Веб-приложения в одном файле SQLite

Hacker News •
×

Hey HN, у меня всегда была проблема: создание HTML-страниц простое, но сохранение данных требовало хостинга где-то, и делиться ими было неудобно. За последние несколько месяцев я создаю приложение под названием Capsule (это также имя расширения файла), написанное на Rust с Tauri 2.0, которое позволяет упаковать HTML-приложение и его данные в один файл SQLite. HTML-файл и любые связанные ресурсы напрямую встраиваются в базу данных. Данные пользователя можно сохранять либо как хранилище ключ/значение localStorage, либо через API коллекций, вдохновлённое MongoDB, в виде документов, сохраняемых в таблице в файле. Вы также можете сохранять другие ресурсы, такие как PDF-файлы или изображения, прямо в базе данных, чтобы держать разные документы вместе. Все данные можно легко экспортировать в CSV или JSON при необходимости. Приватность и безопасность были большим приоритетом, поэтому документы ничего не могут делать «из коробки». У них нет прямого доступа к файловой системе, и для доступа в интернет требуется разрешение. Модель разрешений — это то, над чем я всё ещё работаю, чтобы улучшить. Документы Capsule также могут использовать локальные или удалённые модели ИИ для функций ИИ, специфичных для документа. Один из недостатков такого подхода — несколько человек, работающих над ним, создадут разные копии. Чтобы сделать возможным слияние разных копий одного и того же файла, у каждой записи данных есть уникальный UUID и временная метка. Я планирую открыть спецификацию формата файла для версии 1.0 приложения, чтобы другие приложения могли читать или писать файлы Capsule. Вы можете попробовать это в веб-превью на https://withcapsule.app/preview с готовыми шаблонами или использовать любой провайдер ИИ по вашему выбору, чтобы создать собственное, оптимизированное для Capsule приложение. Я всё ещё работаю над форматом файла, но есть миграции для каждой новой версии, поэтому данные никогда не должны теряться при использовании более новых версий приложения в будущем.