you will still have fun with doing that in Go but at least it's easier
i can just give one tip tho - the concurrency code in fiatjaf's eventstore badger implementation is fucked, i am quite certain nobody has seriously tested it, because it has resource leaks that leave threads running chewing huge amounts of memory and after just 24 hours and users with outbox model clients it burns the cpu to the ground, and you have to restart it, which is unacceptable
i've fuly rewritten the entire nostr message codec to use more efficient memory usage, enabling teh use of buffer freelists, and avoiding garbage producing strings (they are immutable so their memory must be GC'd) and benchmarked and optimized a bunch of things, added support for the fast bitcoin-core signature library
it's gonna be a zinger when i finish it, but i have to focus on my paid gig building a nostr aggregator, and wrangling fucking bluesky protocol, which is evil and wrong and retarded