#indexeddb — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #indexeddb, aggregated by home.social.
-
[Перевод] LLM собрала IndexedDB с нуля: 1208 тестов, SQLite и несколько неприятных сюрпризов
Можно ли одним промптом собрать полноценный браузерный API и получить результат, близкий к зрелой open source-реализации? В эксперименте Claude Code поручили реализовать IndexedDB поверх SQLite, а качество проверили с помощью Web Platform Tests. Итог — рабочая кодовая база, 1208 пройденных тестов, спорные 95% в отчёте агента и заметные ограничения в производительности и пограничных сценариях. Читать про эксперимент
https://habr.com/ru/companies/otus/articles/1046662/
#indexeddb #LLM #Claude_Code #Ralph_loop #Web_Platform_Tests #вайбкодинг #генерация_кода #браузерные_api #автоматизация_тестирования
-
Семь браузерных инструментов без сервера: WASM, WebGPU, шифрование на клиенте
Запись в Notion - и текст на чужом сервере. Задачи в облачном планировщике - данные в чужой аналитике. Волна локальных LLM показала широкой аудитории, что on-device - это реально. Модель работает, данные не покидают машину. RAG в indexeddb - кто так не делал? Тот же сдвиг происходит с обычными инструментами. Всё заметнее, что ежемесячная подписка - это аренда софта, которым не владеешь и который нельзя отключить от сети. Я доделал свои 7 pet-проектов. Все работают целиком в браузере, без сервера, без регистрации, без отправки данных куда-либо. Только локальное хранилище, шифрование на стороне клиента и нативные браузерные API. Что же это за проекты
https://habr.com/ru/articles/1047200/
#local_first #webgpu #Web_MIDI_API #aesgcm #wasm #indexeddb #pbkdf2 #idef0 #controlnet #privacy
-
You might know different client-side data storage methods in #JavaScript: #cookies, #localStorage, #sessionStorage, and perhaps even #IndexedDB. All share the same limitation: they won't let you store data across domains.
But if you can write and use a browser extension, these come with another data storage bucket. Browser extensions come with a manifest.json file that lets you specify all the domains you want to work with. #Chrome.storage will let you store and read data across domains.
-
Oh, this is bad. Luckily, it was disclosed responsibly and is already fixed in latest #Firefox… and more importantly, #Tor browser. #indexeddb
https://fingerprint.com/blog/firefox-tor-indexeddb-privacy-vulnerability/
-
Oh, this is bad. Luckily, it was disclosed responsibly and is already fixed in latest #Firefox… and more importantly, #Tor browser. #indexeddb
https://fingerprint.com/blog/firefox-tor-indexeddb-privacy-vulnerability/
-
Je continue à faire évoluer Imagilire Libre : l’application passe à IndexedDB avec Dexie pour un stockage local plus solide et plus fiable.
J’ai aussi ajouté l’export/import des paramètres et du dictionnaire syllabique personnalisé.
🔒 Les données restent stockées localement sur l’appareil. Aucune n’est transmise aux serveurs Imagilire.https://imagilire.fr/imagilire-libre
#Imagilire #ImagilireLibre #AccessibilitéNumérique #IndexedDB #Dexie #ViePrivée
-
Ein "IndexedDB"-Zine. Weil ich die letzten Tage etwas neues gelernt habe.
#indexeddb #zine #fedizine -
Công cụ quản lý LocalStorage, SessionStorage, Cookies và IndexedDB mới cho Chrome!
Tính năng:
- Sửa đổi JSON dễ dàng
- Quản lý IndexedDB toàn diện
- Chuyển đổi giữa các tài khoản người dùng nhanh chóng
- Đồng bộ hóa trên nhiều thiết bị
#EasyLocalStorageManager #LocalStorage #SessionStorage #Cookies #IndexedDB #ChromeExtension #SvelteJS #ManifestV3 #Freemium #CloudSync
#CôngCụQuảnLý #TrìnhDuyệt #PhátTriểnWeb #TínhNăngMới #ĐồngBộHóa #TàiKhoản #NgườiDùng #ThiếtBị #Chrome #Extension #Svelte #Mani -
Hi everyone, anyone knows reliable resources on building offline-first web apps with database offline synchronization? I need to do that for my job but terribly stuck.
#webdev #javascript #cache #offlinefirst #webapps #sqlserver #indexeddb #angular6
-
Hi everyone, anyone knows reliable resources on building offline-first web apps with database offline synchronization? I need to do that for my job but terribly stuck.
#webdev #javascript #cache #offlinefirst #webapps #sqlserver #indexeddb #angular6
-
IVVV Stack: kiến trúc front‑end chỉ dùng IndexedDB, Vanilla JS, HTML & CSS. Được minh hoạ bằng một ứng dụng ghi chú đơn giản, cho thấy dù khó khăn với dev hiện đại, việc dùng vanilla vẫn khả thi nếu kết hợp AI để nhanh chóng tạo prototype. #IVVV #Frontend #VanillaJS #IndexedDB #Tech #CôngNghệ #LậpTrình #WebDev
-
Learning about IndexedDB today, hoping it can help with search performance in my bookmark manager app. High hopes!
https://youtube.com/playlist?list=PLyuRouwmQCjmNyAysdqjNz5fIS5cYU4vi&si=9TyczkRhpg3bWtRn
-
Learning about IndexedDB today, hoping it can help with search performance in my bookmark manager app. High hopes!
https://youtube.com/playlist?list=PLyuRouwmQCjmNyAysdqjNz5fIS5cYU4vi&si=9TyczkRhpg3bWtRn
-
Offline-First Landscape – 2025 | Hacker News
Link
Offline-First 電子郵件應用開發歷程與挑戰:Marco 的實務探索與技術選擇分析
https://marcoapp.io/blog/offline-first-landscape-2025
📌 Summary:
本文詳述開發一款基於 IMAP、跨平臺(網頁、Mac、Windows、Android、iOS)且強調離線優先 (Offline-First) 的電子郵件應用 Marco 時,團隊在離線資料同步技術選擇上的實務經驗與深刻挑戰。Marco 需處理龐大資料量(數百 MB,數十萬至數百萬筆資料),導致市面上多數現有離線優先解決方案難以符合其需求。最初團隊採用 WatermelonDB,試圖以資料庫無關形式實作離線同步,但遭遇 IndexedDB 閱讀效能差以及 Memory Cache 緩存限制等瓶頸,導致體驗不佳。隨後嘗試多種新興技術(Triplit、InstantDB、PowerSync等),雖各有亮點,卻在記憶體使用、前後端支援及穩定性等面向均遇限制。主要問題根源在於網頁端 IndexedDB 作為資料底層存儲的架構限制,使得重量級關聯性或圖資料庫在大資料量下性能崩潰。最後,團隊找到 Replicache + Orama 組合,提供輕量 KV 存取加強版索引與全文檢索支持,獲得穩定又高速的同步能力。文章亦討論未來離線優先技術發展趨勢,包含新興檔案系統API(OPFS)、Zero 專案,以及本質上嘗試共享資料庫取代傳統 REST API 的可能。
🎯 Key Points:
★ 技術挑戰與起點
→ Marco為跨平臺電子郵件應用,需即時離線讀寫同步大量郵件資料。初始閉環想法是資料庫無關同步架構,推動 WatermelonDB 作為資料同步核心。
→ WatermelonDB 依賴 IndexedDB,加上 LokiJS 內存端緩存,以解決 IndexedDB 的存取效能問題,但記憶體消耗龐大且同步邏輯不完善,維護不夠積極。
★ 新一波離線優先技術探索
→ Triplit 與 InstantDB :採用 triples(<entity id, field, value>)表達法利於同步,但 Triplit 記憶體耗損大且伺服器端易崩潰,InstantDB 功能尚欠完整且查詢延遲長,後端缺乏 webhook 支援,導致體驗降低。
→ PowerSync:雖成熟且企業級,卻在自架設相當複雜(需 Postgres、MongoDB HA、非正規化資料表),前端存在 ORM 效能與初始化延遲問題。
★ 根本瓶頸與解決方案
→ 網頁端只能依賴 IndexedDB 作為底層 KV 儲存,所有關聯式與圖形數據庫解決方案皆為上層封裝,性能於大資料量時崩潰,生態仍待成熟。
→ Replicache 採用輕量 KV 存取,層疊索引功能可搭配 Orama 預解決搜尋排序問題。Replicache 在今年一月釋出完全免費且開源版本,穩定性與速度提升明顯。
→ 未來看好 Origin Private File System (OPFS) 作為新型檔案系統 API,及 Zero 專案,其以即時記憶體維運與基於查詢的智慧同步為優勢,值得期待。
★ 實務心得與未來展望
→ 離線優先技術正處於快速演化期,針對大規模資料和複雜同步需求仍有諸多痛點。
→ 跨平臺、跨原生與網頁環境資料層統一設計難度高,架構選擇需權衡性能、開發者體驗與可維護性。
→ 『共享資料庫』取代傳統 API 乃新潮趨勢,2025 年或將成為離線/本地優先架構的重要轉捩點。
🔖 Keywords:
#Offline-First #離線優先 #IndexedDB #Replicache #資料同步 -
Offline-First Landscape - Marco ��� All your emails, one place
Link
Offline-First Landscape - Marco
https://marco.tech/blog/offline-first-landscape
📌 Summary:
本文介紹了 Marco 團隊在構建電子郵件管理應用時,針對「離線優先」(offline-first)架構所面臨的技術挑戰與解決過程。Marco 必須支援基於 IMAP 且跨多平臺(包括網頁與多種裝置),並且能在沒有網路時完整操作郵件,包括閱讀、刪除、回覆與分類。考量數據龐大(百兆位元組級別與百萬級資料列)、以及網頁端 IndexedDB 記憶體與效能限制,團隊曾嘗試多款主流及新興的離線優先解決方案,如 WatermelonDB、Triplit、InstantDB 及 PowerSync,但均因效能瓶頸、開發者體驗(DX)或架構複雜性不足以滿足需求而放棄。最後,團隊選擇了輕量但高效的 KV 儲存方案 Replicache 搭配 Orama 做為索引與全文搜尋工具,取得理想的性能與彈性。整體過程反映出現有離線優先技術在面對大規模複雜資料時仍存在本質限制,且未來相關技術發展仍需克服瀏覽器平臺存儲型態(IndexedDB 為 KV 儲存)而生的挑戰。文章亦看好 2025 年「共用資料庫」取代傳統 HTTP/REST API 成為主流的趨勢,顯示離線優先及即時同步技術具有重要的未來應用價值。
🎯 Key Points:
→ 【需求背景與挑戰】
★ Marco 需支援 IMAP 協議且跨平臺(Web、Mac、Windows、Android、iOS)。
★ 離線操作是首要需求,必須允許無網路時完整管理郵件,並且在連網後自動同步。
★ 大量資料 (>100MB、千萬行級別) 加大離線同步難度,尤其網頁端使用 IndexedDB 性能不足。
→ 【嘗試過的離線優先方案】
① WatermelonDB:FOSS 且資料庫無關,利用 LokiJS 將資料庫全存在記憶體中繞過 IndexedDB 性能問題,導致大資料量時記憶體負擔沉重且同步策略容易有 mutation 衝突問題。維護性下降,部分功能需自行開發。
② Triplit:全棧資料庫,資料用三元組(triples)格式表示,同步機制簡便且開發體驗優秀,但伺服器端資源消耗巨大且客戶端資料結構膨脹,導致不適合大資料量。
③ InstantDB:類似 Triplit,功能不全且效能遠低於 Watermelon,後端缺乏 webhook 支持,查詢響應時間過長且用戶體驗降低。
④ PowerSync:技術成熟,可整合 Postgres 及 MongoDB,部署複雜成本高,前端 SQLite WASM 有明顯效能瓶頸,啟動時延遲長且查詢緩慢。
→ 【根本問題與解決方向】
★ 離線優先解決方案受限於瀏覽器端 IndexedDB 資料庫只能作為 KV 儲存,所有關係型或圖資料庫等層疊構建均為「黑科技」型 hack,難以承受百兆以上的大型資料集同步與操作。
★ 新一代方案嘗試改用 triples/graph 格式以利同步,但同樣因瀏覽器底層限制在規模擴大時性能下降。
★ Marco 最終採用 Replicache(高度輕量且反應快速的KV庫)與 Orama(強大的索引與全文搜尋)組合,同時獲得穩定的離線同步與靈活查詢能力。
★ Replicache 於 2025 年初開源且免費釋出新版本 Zero,預期將成為業界領先的離線優先產品。
🔖 Keywords:
#離線優先_offline-first #電子郵件管理_email_management #IndexedDB #Replicache #資料同步_data_sync -
An #E2EE messaging app unaffected by #ChatControl
* App: https://chat.positive-intentions.com/
* Code: https://github.com/positive-intentions/chat
* Reddit: https://www.reddit.com/r/positive_intentionsHow it works: https://positive-intentions.com/docs/projects/chat
TLDR: I'm working on a #P2P messaging #webapp. Webapps are generally not considered secure because of the nature of serving statics over the internet. This is correct, but not a limitation of this project. (#selfhosting options: https://positive-intentions.com/blog/docker-ios-android-desktop).
As a webapp, I can provide the app with zero-installation and no-registration. The app is only using (local-only) browser storage (specifically #indexedDB). So in a P2P interaction, the traditional concept of "the cloud" is just the physical devices connected over #WebRTC. This allows for things like P2P authentication: https://positive-intentions.com/blog/security-privacy-authentication.
Future:
I'm aiming to create the most secure messaging app out there... (more than #Signal, #Simplex, #threema, #session, #deltachat, #bitchat, etc). I know I have a long way to go to get there. The UI is fairly ugly for the average user, but I think the mechanics are working as expected. I think #JavaScript is underrated in what you can do with it. I'm actively investigating improving the #encryption approach further to align to how the Signal protocol works (currently using a #DiffieHellman key-exchange).Support:
In the age of #ChatControl, I would like to keep this project #opensource, but open-source funding is not working for me. I don't want your donations (but don't let that stop you) because it isn't sustainable for a long-term project. I have so far only experienced grant-funding rejections. I have no idea what I'm doing in trying to get funding for this project, so any support/advice is appreciated. In recognition of the project in its current state not being able to get funding... (sorry) I will have to go #closedsource (which I'd like to avoid because it undermines several #cybersecurity claims I'd like to make). I don't accept collaboration on the project because this would make tough decisions like going closed-source also immoral.#privacy #security #messaging #decentralized #peer2peer #webdev #cryptography #selfhosted #FOSS #tech #infosec #developer #funding #startup
-
After building a paginated list of items using Dexie’s liveQuery feature, I’ve now refactored the project to use static queries instead.
The live updates aren’t worth the hassle and inconsistencies you have to deal with when using liveQueries—although I’d love for a future version of Dexie to make this easier (which it seems there are plans for in v5 🤞).
-
After building a paginated list of items using Dexie’s liveQuery feature, I’ve now refactored the project to use static queries instead.
The live updates aren’t worth the hassle and inconsistencies you have to deal with when using liveQueries—although I’d love for a future version of Dexie to make this easier (which it seems there are plans for in v5 🤞).
-
Un exemple d'utilisation des services workers et d'IndexedDB (la base de données incluse dans les navigateurs) pour créer un système qui permet d'uploader une image même sans réseau et de faire l'upload réel lorsque le réseau est à nouveau disponible.
🔗 https://www.smashingmagazine.com/2025/04/building-offline-friendly-image-upload-system/
-
Ok. Just culled ~20,000 of 25,000 #tumblr posts accumulated via #RSS over a month. I've gotta get to work on my own project applying basic statistics to this stuff. Think "reverse chronological + $all_your_own_filtering_and_sorting_and_bucketing". Not sure if I should do that within the confines of a #thunderbird add-on, or try some other approach. I really, really want to be able to use #sql for this stuff. It's a natural fit. But #sqlite seems to be a no-go for #WebExtensions. There is only #IndexedDB, which, in my limited experience with it, is absolute garbage to work with.
-
Ok. Just culled ~20,000 of 25,000 #tumblr posts accumulated via #RSS over a month. I've gotta get to work on my own project applying basic statistics to this stuff. Think "reverse chronological + $all_your_own_filtering_and_sorting_and_bucketing". Not sure if I should do that within the confines of a #thunderbird add-on, or try some other approach. I really, really want to be able to use #sql for this stuff. It's a natural fit. But #sqlite seems to be a no-go for #WebExtensions. There is only #IndexedDB, which, in my limited experience with it, is absolute garbage to work with.
-
Oh wow, another life-changing 🎉 web extension for the 0.0001% of users who lose sleep over managing #IndexedDB databases! 🤓 Because clearly, what the world desperately needed was a way to browse, edit, and manage their secret stash of browser data like it's the next great frontier. 🚀
https://github.com/hummingme/kahuna #lifechanging #webextension #browserdata #technews #HackerNews #ngated -
Oh wow, another life-changing 🎉 web extension for the 0.0001% of users who lose sleep over managing #IndexedDB databases! 🤓 Because clearly, what the world desperately needed was a way to browse, edit, and manage their secret stash of browser data like it's the next great frontier. 🚀
https://github.com/hummingme/kahuna #lifechanging #webextension #browserdata #technews #HackerNews #ngated -
Kahuna, the IndexedDB-Manager Webextension
https://github.com/hummingme/kahuna
#HackerNews #Kahuna #IndexedDB #Manager #Webextension #WebDevelopment #JavaScript #OpenSource #Hacking
-
Kahuna, the IndexedDB-Manager Webextension
https://github.com/hummingme/kahuna
#HackerNews #Kahuna #IndexedDB #Manager #Webextension #WebDevelopment #JavaScript #OpenSource #Hacking
-
With the changes brought by Svelte 5, I found myself wanting to take advantage of performance improvements and harness the power of runes. But converting my stores to something 'rune-based' proved more challenging than I had hoped since so much of my codebase relied on stores.
Migrating Svelte Stores to Runes
https://www.closingtags.com/svelte-stores-to-runes#typescript #javascript #programming #svelte #sveltekit #indexeddb #localfirst
-
With the changes brought by Svelte 5, I found myself wanting to take advantage of performance improvements and harness the power of runes. But converting my stores to something 'rune-based' proved more challenging than I had hoped since so much of my codebase relied on stores.
Migrating Svelte Stores to Runes
https://www.closingtags.com/svelte-stores-to-runes#typescript #javascript #programming #svelte #sveltekit #indexeddb #localfirst
-
My esteemed followers, you have posted a total of 375,809 statuses to the #fediverse. 22% of you have posted in the last 24h. You are a chatty bunch! ;-)
Check out my new #sideproject: *fedi-followers*. A privacy-friendly fediverse #followers explorer as #localonly #staticwebapp, decentrally hosted on the #ipfs. See who's actually following (and unfollowing) you over time and much more.
https://fedi--followers-data0-one.ipns.dweb.link/
#decentralization #mastodev #esmodules #importmaps #nobuild #indexeddb #preact
-
My esteemed followers, you have posted a total of 375,809 statuses to the #fediverse. 22% of you have posted in the last 24h. You are a chatty bunch! ;-)
Check out my new #sideproject: *fedi-followers*. A privacy-friendly fediverse #followers explorer as #localonly #staticwebapp, decentrally hosted on the #ipfs. See who's actually following (and unfollowing) you over time and much more.
https://fedi--followers-data0-one.ipns.dweb.link/
#decentralization #mastodev #esmodules #importmaps #nobuild #indexeddb #preact
-
I've built a thing.
Sometimes my follower count seemingly fluctuates at random. To understand why, I dug into the #MastodonAPI and created "fedi-followers":
A privacy-friendly #fediverse #followers explorer as local-only static web app, decentrally hosted on the #ipfs. See who's actually following (and unfollowing) you over time and much more.
https://fedi--followers-data0-one.ipns.dweb.link/
#mastodev #javascript #webapp #staticwebapp #nobuild #esmodules #importmaps #indexeddb #preact #htm
-
I've built a thing.
Sometimes my follower count seemingly fluctuates at random. To understand why, I dug into the #MastodonAPI and created "fedi-followers":
A privacy-friendly #fediverse #followers explorer as local-only static web app, decentrally hosted on the #ipfs. See who's actually following (and unfollowing) you over time and much more.
https://fedi--followers-data0-one.ipns.dweb.link/
#mastodev #javascript #webapp #staticwebapp #nobuild #esmodules #importmaps #indexeddb #preact #htm
-
Использование браузерного хранилища для управления состоянием приложения
Современные web-фреймворки для реализации управления состоянием используют библиотеки, такие, например, как Redux для React или Pinia для Vue. У традиционной реализации управления состоянием есть недостатки. Store в таком варианте является частью скрипта страницы, и его данные при её перезагрузке теряются. Кроме того, если нам в приложении нужно организовать управление отображением контента в нескольких окнах браузера, оказывается, что традиционный Store не может этого обеспечить.
https://habr.com/ru/articles/884418/
#indexeddb #dexie #store #реактивность #модульное_тестирование #оффлайнприложения #vitest #testinglibrary #вебразработа
-
localForage — Что делать если localStorage уже не хватает?
localStorage и sessionStorage сильно ограничены в размере - всего 5 МБ, а использование IndexedDB для обхода этого ограничения не всегда является удобным из-за сложного API. localForage решает сразу обе проблемы!
https://habr.com/ru/articles/874980/
#localstorage #localforage #хранилище #sessionstorage #javascript #webapi #indexeddb
-
Would be great if #IndexedDB and #localStorage had a way to specify an expiration date. The browser would automatically remove stale values without needing to visit the website.
Don't know if it has been discussed or suggested.
-
Would be great if #IndexedDB and #localStorage had a way to specify an expiration date. The browser would automatically remove stale values without needing to visit the website.
Don't know if it has been discussed or suggested.
-
Bottom-up Javascript Storage Management
i wanted to see if we can create #asynchronous bottom-up #javascript #BrowserStorage, we have the basics to put together a state management system. State management solutions in apps typically have ways to persist data.
I wanted to explore if there are any benefits to define and manage state in #webcomponents with a bottom-up approach. I wanted to see if it could give a greater flexibility in developing a #UI and not having to worry about persisted storage management.
https://positive-intentions.com/blog/bottom-up-storage
#functional #webcomponents #async #asynchronous #state #indexedDB #storage #persistence #management #javascript #html #webcomponents #UILibrary #web-components #custom-elements #lit-html #lit #opensource
-
"Encryption at Rest" for JavaScript Projects
Following a previous post (https://infosec.exchange/@xoron/113446067764347249), which can be summarized as: I'm tackling state management with an extra twist: integrating encryption at rest!
I created some updates to the WIP pull-request. The behavior is as follows.
- The user is prompted for a password if one isn't provided programmatically.
- This will allow for developers to create a custom password prompts in their application. The default fallback is to use a JavaScript prompt().
- It also seems possible to enable something like "fingerprint/face encryption" for some devices using the webauthn api. (This works, but the functionality is a bit flaky and needs to be fixed before rolling out.)
- Using AES-GCM with 1000000 iterations of PBKDF2 to derive the key from the password.
- The iterations can be increased in exchange for slower performance. It isn't currently configurable, but it might be in the future.
- The salt and AAD need to be deterministic and so to simplify user input, the salt as AAD are derived as the sha256 hash of the password. (Is this a good idea?)The latest version of the code can be seen in the PR: https://github.com/positive-intentions/dim/pull/9
I'm keen to get feedback on the approach and the implementation before i merge it into the main branch.
#JavaScript #Encryption #IndexedDB #WebDevelopment #CryptoAPI #FrontendDev #ReactHooks #StateManagement #WebSecurity #OpenSource #PersonalProjects
-
"Encryption at Rest" for JavaScript Projects
Following a previous post (https://infosec.exchange/@xoron/113446067764347249), which can be summarized as: I'm tackling bottom-up state management with an extra twist: integrating encryption at rest!
I created some updates to the WIP pull-request. The behavior is as follows.
- The user is prompted for a password if one isn't provided programmatically.
- This will allow for developers to create a custom password prompts in their application. The default fallback is to use a JavaScript prompt().
- It also seems possible to enable something like "fingerprint/face encryption" for some devices using the webauthn api. (This works, but the functionality is a bit flaky and needs to be fixed before rolling out.)
- Using AES-GCM with 1000000 iterations of PBKDF2 to derive the key from the password.
- The iterations can be increased in exchange for slower performance. It isn't currently configurable, but it might be in the future.
- The salt and AAD need to be deterministic and so to simplify user input, the salt as AAD are derived as the sha256 hash of the password. (Is this a good idea?)The latest version of the code can be seen in the PR: https://github.com/positive-intentions/dim/pull/9
I'm keen to get feedback on the approach and the implementation before i merge it into the main branch.
#JavaScript #Encryption #IndexedDB #WebDevelopment #CryptoAPI #FrontendDev #ReactHooks #StateManagement #WebSecurity #OpenSource #PersonalProjects
-
"Encryption at Rest" for JavaScript Projects
Following a previous post (https://infosec.exchange/@xoron/113446067764347249), which can be summarized as: I'm tackling state management with an extra twist: integrating encryption at rest!
I created some updates to the WIP pull-request. The behavior is as follows.
- The user is prompted for a password if one isn't provided programmatically.
- This will allow for developers to create a custom password prompts in their application. The default fallback is to use a JavaScript prompt().
- It also seems possible to enable something like "fingerprint/face encryption" for some devices using the webauthn api. (This works, but the functionality is a bit flaky and needs to be fixed before rolling out.)
- Using AES-GCM with 1000000 iterations of PBKDF2 to derive the key from the password.
- The iterations can be increased in exchange for slower performance. It isn't currently configurable, but it might be in the future.
- The salt and AAD need to be deterministic and so to simplify user input, the salt as AAD are derived as the sha256 hash of the password. (Is this a good idea?)The latest version of the code can be seen in the PR: https://github.com/positive-intentions/dim/pull/9
I'm keen to get feedback on the approach and the implementation before i merge it into the main branch.
#JavaScript #Encryption #IndexedDB #WebDevelopment #CryptoAPI #FrontendDev #ReactHooks #StateManagement #WebSecurity #OpenSource #PersonalProjects
-
"Encryption at Rest" for JavaScript Projects
Following a previous post (https://infosec.exchange/@xoron/113446067764347249), which can be summarized as: I'm tackling state management with an extra twist: integrating encryption at rest!
I created some updates to the WIP pull-request. The behavior is as follows.
- The user is prompted for a password if one isn't provided programmatically.
- This will allow for developers to create a custom password prompts in their application. The default fallback is to use a JavaScript prompt().
- It also seems possible to enable something like "fingerprint/face encryption" for some devices using the webauthn api. (This works, but the functionality is a bit flaky and needs to be fixed before rolling out.)
- Using AES-GCM with 1000000 iterations of PBKDF2 to derive the key from the password.
- The iterations can be increased in exchange for slower performance. It isn't currently configurable, but it might be in the future.
- The salt and AAD need to be deterministic and so to simplify user input, the salt as AAD are derived as the sha256 hash of the password. (Is this a good idea?)The latest version of the code can be seen in the PR: https://github.com/positive-intentions/dim/pull/9
I'm keen to get feedback on the approach and the implementation before i merge it into the main branch.
#JavaScript #Encryption #IndexedDB #WebDevelopment #CryptoAPI #FrontendDev #ReactHooks #StateManagement #WebSecurity #OpenSource #PersonalProjects
-
"Encryption at Rest" for JavaScript Projects
Following a previous post (https://infosec.exchange/@xoron/113446067764347249), which can be summarized as: I'm tackling state management with an extra twist: integrating encryption at rest!
I created some updates to the WIP pull-request. The behavior is as follows.
- The user is prompted for a password if one isn't provided programmatically.
- This will allow for developers to create a custom password prompts in their application. The default fallback is to use a JavaScript prompt().
- It also seems possible to enable something like "fingerprint/face encryption" for some devices using the webauthn api. (This works, but the functionality is a bit flaky and needs to be fixed before rolling out.)
- Using AES-GCM with 1000000 iterations of PBKDF2 to derive the key from the password.
- The iterations can be increased in exchange for slower performance. It isn't currently configurable, but it might be in the future.
- The salt and AAD need to be deterministic and so to simplify user input, the salt as AAD are derived as the sha256 hash of the password. (Is this a good idea?)The latest version of the code can be seen in the PR: https://github.com/positive-intentions/dim/pull/9
I'm keen to get feedback on the approach and the implementation before i merge it into the main branch.
#JavaScript #Encryption #IndexedDB #WebDevelopment #CryptoAPI #FrontendDev #ReactHooks #StateManagement #WebSecurity #OpenSource #PersonalProjects
-
"Encryption at Rest" for JavaScript Projects
I'm developing a JavaScript UI framework for personal projects, and I'm tackling state management with an extra twist: integrating encryption at rest!
Inspired by this React Hook: Async State Management (https://positive-intentions.com/blog/async-state-management), I’m extending it to support encrypted persistent data. Here's how:
✨ The Approach:
Using IndexedDB for storage.
Data is encrypted before saving and decrypted when loading using the Browser Cryptography API.
Event listeners will also be encrypted/decrypted to avoid issues like browser extensions snooping on events.
The password (should never be stored) is entered by the user at runtime to decrypt the data. (Currently hardcoded for now!)
The salt will be stored unencrypted in IndexedDB to generate the key.
🔗 Proof of Concept:
You can try it out here: GitHub PR (https://github.com/positive-intentions/dim/pull/8). Clone or run it in Codespaces and let me know what you think!❓ Looking for Feedback:
Have I missed anything? Are there better ways to make this storage secure?Let's make secure web UIs a reality together! 🔒
#JavaScript #Encryption #IndexedDB #WebDevelopment #CryptoAPI #FrontendDev #ReactHooks #StateManagement #WebSecurity #OpenSource #PersonalProjects
-
"Encryption at Rest" for JavaScript Projects
I'm developing a JavaScript UI framework for personal projects, and I'm tackling state management with an extra twist: integrating encryption at rest!
Inspired by this React Hook: Async State Management (https://positive-intentions.com/blog/async-state-management), I’m extending it to support encrypted persistent data. Here's how:
✨ The Approach:
Using IndexedDB for storage.
Data is encrypted before saving and decrypted when loading using the Browser Cryptography API.
Event listeners will also be encrypted/decrypted to avoid issues like browser extensions snooping on events.
The password (should never be stored) is entered by the user at runtime to decrypt the data. (Currently hardcoded for now!)
The salt will be stored unencrypted in IndexedDB to generate the key.
🔗 Proof of Concept:
You can try it out here: GitHub PR (https://github.com/positive-intentions/dim/pull/8). Clone or run it in Codespaces and let me know what you think!❓ Looking for Feedback:
Have I missed anything? Are there better ways to make this storage secure?Let's make secure web UIs a reality together! 🔒
#JavaScript #Encryption #IndexedDB #WebDevelopment #CryptoAPI #FrontendDev #ReactHooks #StateManagement #WebSecurity #OpenSource #PersonalProjects
-
"Encryption at Rest" for JavaScript Projects
I'm developing a JavaScript UI framework for personal projects, and I'm tackling state management with an extra twist: integrating encryption at rest!
Inspired by this React Hook: Async State Management (https://positive-intentions.com/blog/async-state-management), I’m extending it to support encrypted persistent data. Here's how:
✨ The Approach:
Using IndexedDB for storage.
Data is encrypted before saving and decrypted when loading using the Browser Cryptography API.
Event listeners will also be encrypted/decrypted to avoid issues like browser extensions snooping on events.
The password (should never be stored) is entered by the user at runtime to decrypt the data. (Currently hardcoded for now!)
The salt will be stored unencrypted in IndexedDB to generate the key.
🔗 Proof of Concept:
You can try it out here: GitHub PR (https://github.com/positive-intentions/dim/pull/8). Clone or run it in Codespaces and let me know what you think!❓ Looking for Feedback:
Have I missed anything? Are there better ways to make this storage secure?Let's make secure web UIs a reality together! 🔒
#JavaScript #Encryption #IndexedDB #WebDevelopment #CryptoAPI #FrontendDev #ReactHooks #StateManagement #WebSecurity #OpenSource #PersonalProjects
-
"Encryption at Rest" for JavaScript Projects
I'm developing a JavaScript UI framework for personal projects, and I'm tackling state management with an extra twist: integrating encryption at rest!
Inspired by this React Hook: Async State Management (https://positive-intentions.com/blog/async-state-management), I’m extending it to support encrypted persistent data. Here's how:
✨ The Approach:
Using IndexedDB for storage.
Data is encrypted before saving and decrypted when loading using the Browser Cryptography API.
Event listeners will also be encrypted/decrypted to avoid issues like browser extensions snooping on events.
The password (should never be stored) is entered by the user at runtime to decrypt the data. (Currently hardcoded for now!)
The salt will be stored unencrypted in IndexedDB to generate the key.
🔗 Proof of Concept:
You can try it out here: GitHub PR (https://github.com/positive-intentions/dim/pull/8). Clone or run it in Codespaces and let me know what you think!❓ Looking for Feedback:
Have I missed anything? Are there better ways to make this storage secure?Let's make secure web UIs a reality together! 🔒
#JavaScript #Encryption #IndexedDB #WebDevelopment #CryptoAPI #FrontendDev #ReactHooks #StateManagement #WebSecurity #OpenSource #PersonalProjects
-
"Encryption at Rest" for JavaScript Projects
I'm developing a JavaScript UI framework for personal projects, and I'm tackling state management with an extra twist: integrating encryption at rest!
Inspired by this React Hook: Async State Management (https://positive-intentions.com/blog/async-state-management), I’m extending it to support encrypted persistent data. Here's how:
✨ The Approach:
Using IndexedDB for storage.
Data is encrypted before saving and decrypted when loading using the Browser Cryptography API.
Event listeners will also be encrypted/decrypted to avoid issues like browser extensions snooping on events.
The password (should never be stored) is entered by the user at runtime to decrypt the data. (Currently hardcoded for now!)
The salt will be stored unencrypted in IndexedDB to generate the key.
🔗 Proof of Concept:
You can try it out here: GitHub PR (https://github.com/positive-intentions/dim/pull/8). Clone or run it in Codespaces and let me know what you think!❓ Looking for Feedback:
Have I missed anything? Are there better ways to make this storage secure?Let's make secure web UIs a reality together! 🔒
#JavaScript #Encryption #IndexedDB #WebDevelopment #CryptoAPI #FrontendDev #ReactHooks #StateManagement #WebSecurity #OpenSource #PersonalProjects
-
🔨 #Database․build: Browser-based #PostgreSQL Development Environment
💻 Runs completely in-browser using #WASM technology powered by #PGlite, with data persistence via #IndexedDB
🤖 Features #AI assistance for database operations, including smart CSV imports and automated report generation
📊 Built-in tools for creating charts and database diagrams with drag-and-drop functionality
⚡ Developed using #Nextjs framework with #S3 deployment capabilities in development
🔄 #Opensource project (Apache 2.0) by the #Supabase communityLearn more: https://github.com/supabase-community/postgres-new
-
🔨 #Database․build: Browser-based #PostgreSQL Development Environment
💻 Runs completely in-browser using #WASM technology powered by #PGlite, with data persistence via #IndexedDB
🤖 Features #AI assistance for database operations, including smart CSV imports and automated report generation
📊 Built-in tools for creating charts and database diagrams with drag-and-drop functionality
⚡ Developed using #Nextjs framework with #S3 deployment capabilities in development
🔄 #Opensource project (Apache 2.0) by the #Supabase communityLearn more: https://github.com/supabase-community/postgres-new