NostrCal for Android is on Zapstore! I just published the first version of nostrcal for android to Zapstore. This version doesn't yet include private events but does let you see your public calendar events on the calendar + search for public events you may want to RSVP to. It's nothing special yet but hope to continue to build from here! Thank you @franzap for making this possible with #purplestack. There's no way I could have built this myself without your tooling!

Replies (23)

I've been working on integrating outbox into the web version already but right now the android version just uses a set group of relays. This version is pre-alpha though and will definitely be something I work towards getting fixed with time.
Outbox belongs in the purplebase library, which #purplestack uses. I'll eventually get to that. It could be done in the app, but in that case, it will become a huge mess - the LLM will certainly get lost.
The main site's repo is and the android version is https://github.com/patrickulrich/nostrcal-android. It's still the same NIP-52 events, even for private events, they're just being wrapped via NIP-59 gift wraps. The project originated as a calendar booking service, like Calendly, and by necessity morphed into a wider calendar project. Since it's original method was around booking I handle the gift wraps very similar to NIP-17 DM messages. I've also used kind 31926 and 31927 to address availability. 31926 let's you set your availability template for calendar booking while 31927 is to allow you to publish a "busy" time. This is primarily intended to serve as ways of blocking time against gift wrapped 31923s but can be used just to indicate busy blocks.
It's a very opinionated stack, built on a nostr library I designed (purplebase) and models, which exposes nostr NIPs as domain models. I am using it to build Zapstore and other apps and improving it as I go along.
I actually started work on integrating my custom 31926 and 31927 already but then shied away when I was having issues getting 59 events to decrypt. I need to dig back in again!
On my todo is to create a PR to 52 for these. 926 is to create availability lists to show when you want to accept booking requests and 927 is just a public busy time that I create when users create gift wrapped 393 so that the booking can still see the user as busy without knowing why. I will definitely send a PR when I have them working well. I slid away from the android side for a few days and started putting some focus on another project but will definitely get it over.
↑