What would be the best tech stack for creating a nostr client that can be built and run consistently on any OS, without an internet connection? Bonus points for andoid/ios. Static html file? Zig? C?

Replies (33)

React Native has been my go to for simple apps in both OSs for years now. It's great for simple things and purely based on JavaScript, which almost everybody can maintain.
greenart7c3's avatar
greenart7c3 2 years ago
Flutter, but its not very good for web. Works nice on android/ios/windows/linux
i like rust + egui + nostrdb. runs on ios, android, linux, macos, windows. its built on wgpu so its hardware accelerated on all platforms. offline first thanks to nostrdb.
lololol yeh that's a big downside to the javascript but there's not any way to do without those deps on any language i know of so it's a pretty harsh and tiny set of options that are left pretty much tothing tbh if there was a Go based one with the vendor folder that would satisfy it if that had a UI
I'm always suspicious of frameworks that try to merge front and back ends, but maybe this is different? I see there's no embedded browser, which means they're interpreting javascript some other way. Strange/interesting.
yes, i have it running on a $150 android phone at 0.5ms render time per frame. Also running on my pixel phone, samsung tablet, macos/linux desktop (notedeck). Linux server (notecrumbs). Haven’t tried ios yet but should work.
notedeck is just damus android. It’s the same codebase. When on a tablet it looks like notedeck, on phones it’s a single panel notedeck.
https://github.com/damus-io/android Still very early prototype. Been working on refining nostrdb and the nostrdb rust bindings so most of the work happens in there. I just want rust networking code to dump into nostrdb and it does all the hard work. Even note content parsing. The egui UI is just going to subscribe to nostrdb filters and talk to the local db. Anytime new notes are written the local subscriptions will get triggered. Thats the next thing im working on since I just finished queries and subscriptions in nostrdb.
That would definitely be an option. I'm thinking of maybe creating a complete disk image with all dependencies already downloaded. Then it would be possible to change the source and re-build. How hard is this with Go?
From the docs: > Wails uses a purpose built library for handling native elements such as Window, Menus, Dialogs, etc, so you can build good-looking, feature rich desktop applications. > It does not embed a browser, so it delivers a small runtime. Instead, it reuses the native rendering engine for the platform. On Windows, this is the new Microsoft Webview2 library, built on Chromium. So it should use the OS webview. A web stack can be a complex payload for an app and have a wider attack surface, however it speeds up the UI development a lot. Of course you alredy know that :)
Stavros's avatar
Stavros 2 years ago
I'll be making one in #C as soon as I get some time (TM). #Zig is a close second, deliberating that.