notedeck has an embedded nostr relay (nostrdb), which means every ui function will always work regardless of network connection. I call this the local relay model. It’s literally impossible for it to “go down” or “not load”.

Once we add an outbox (soon), all actions you have done since you were offline will be automatically synced to relays.

I think this is better because you never have to wait to start using it, you can use it on planes, and you can build powerful offline-first apps like nostr mail clients which I am planning to add as a notedeck app. nostr:note1g79vls52ee45rhrnjr6gye9fz8tkhrmgzthpdxafuqa3vp59gunsxxgggp

Reply to this note

Please Login to reply.

Discussion

Holy shit, that’s crazy indeed! How do you even come up with all this 😄, insane!

Surely looking forward to that, and thx for explaining 👊🏻

I think that one is not possible with Damus/iOS?

damus ios runs on nostrdb internally but is not completely switched over to using it for every ui query. It will work the same way as notedeck eventually. I built it in C for this reason.

🫡 thanks for the answer

Nice! Genius over here 👆🏽

I can’t wait. The future sounds amazing 🤩

That sounds almost like Citrine, but integrated into Notedeck. Very cool. A local relay makes a huge difference in the user experience.

Kind of, but without the overhead of a socket and serialization. You can do 1000s of queries per frame at 144 frames in nostrdb because queries just return pointers to flatbuffer-like notes. Zero copy or serialization.

Wow, that's amazing. That's crazy performance!

Nice. In this hyper-connected world, I still prefer the "offline first" approach.

Definitely. Weird that so many apps these days require network connectivity. Sometimes i like to hack on code while on airplanes or camping. Seems the only things that work these days are my terminal email client and vim.

Maybe i should build a github notedeck app, would be amazing if i could have something like github but offline (code review, commenting, issues)

Why offline? Please give GitHub "death by killer app"

because i want to be able to keep working regardless of my internet connection. I do a lot of code review on planes. I have to email myself patches from github to do this though which is crazy.

Ah, so it sounds like you still mean dual-use, where it works online if you give it a connection? Would be great 👍

it syncs everything when you’re back online. This is much harder to do in a traditional app but it’s trivial on nostr.

If you let someone else have the glory, you'll still be the creator of the npub/nsec format, which will be remembered as one of those "so this is what it took a really smart human to first notice it was a good idea at the time" like other great inventions in history. You can pretty much work on whatever you feel like for the rest of your life with no regard to your legacy.

However, if your version of github is the one that eats github, you will also go down in history for that. Something to think about.

i feel like i have barely started building what I want to build on nostr. iOS was a weekend project to implement a twitter clone. nostr is so much bigger than that. notedeck is a platform that I plan on using to showcase all the other stuff. I wanted to build something with a solid foundation that works everywhere before I started. A native nostr browser. nostr can replace obsidian, mail, github, calendars. We’re just getting started.

Indeed, nostr can do everything.

But github is the domino that lands on the app store domino, and app stores are the domino that lands on the operating system domino, and that's the one that knocks down the hardware manufacturing domino and gets us a RISC-V iPad.

The first time an app is installed on a device from a nostr app store that builds from source code, it's game over for the "old guard."

The LMDB you built on is this, right? https://github.com/LMDB

yes its powered by lmdb!

This is the Way

I foresee this not being very automatic for the foreseeable future so I'd want to make sure manual jiggery is also streamlined

Good implementation. I think this should/will be the norm going forward. Local relays (be-it offline or online).

I've heard you mention Notedeck apps a few times. You have anything written down about what you're planning there? Are you thinking of an app framework or plugins of some sort?

Still figuring that out, I’m currently carving out the columns app into its own crate. Eventually it would be cool to have some kind of wasm thing, but that’s a bit far off atm

👌 keep me in the loop. Been thinking a lot about some higher level patterns in rust lately that I’d like to build.

I’m planning on exposing some kind of api to each app. This is effectively the “browser environment”. Will include nostrdb apis, secure signing and low/high level relay connectivity tools. You shouldn’t need to be an expert in network code to make your nostr app work. Biggest decision is what is actually used to render things… might just pass some egui-like immediate mode rendering api.

Apps may just need to be compiled crate plugins until the wasm stuff is a thing.

That is awesome. Exactly how I think it should work. I will have to take a look at this more soon.

WONDERFUL