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 (24)

This is nice!! image
Patrick's avatar Patrick
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!
View quoted note →
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.
Yes very cool. Can you tell me more about purple stack? I’ve been using Claude with vs code and just referencing different Nostr repos/projects but would love to try something more integrated
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.
I’ll check it out for sure. My project is next js and using NDK but I have something else I wanted to build in the near future. Thanks!