I'm finally ready to share a project I've been working on the last few weeks, https://nostrcal.com

Nostrcal is my shot at building a calendar management system for nostr that I'd want to use. It leverages gift wrapped nostr calendar events to be one of the first calendars on nostr that stores your events privately for only you, and your assigned participants, to see.

I've also created a calendar management tool similar to Calend.ly that allows users to book time on your nostr calendar. The tool allows you to create Event Slots that define how you'd like to accept meetings and display availability. This gets stored as a 31926 list and converted into a naddr link that you can then share with people you'd like to book time with you.

Private events are stored to your kind 10050 relays. To help test I've built my own relay that supports storing your wrapped nostr events and NIP-52 based events at relay.nostrcal.com. It's currently being offered as a whitelist relay for 1000 sats per 30 days. You can use any existing DM relay that supports storing wrapped messages though with no problem!

Since private events hide their details from everyone I'm using a new 31927 event kind to create busy slots. These busy slots are public events but only show a start and end time for being busy. These are intended to be published when users create private NIP-52 events so that time management can be handled by the booking system still. If you don't want to publish the 31927 to ensure complete privacy, you can disable that on the event creation.

There's still support for public events as well. You can look over the wide range of nostr public events to find interesting things you'd want to attend. This area is still very basic but I plan to add better event filtering and sorting in the future.

My modified NIP-52 is available now at https://github.com/patrickulrich/nips/blob/master/52.md. I haven't submitted this as a PR yet mainly because I've been improving it as I think through flows. I think I'm getting close to the point I feel good about the NIP revisions and will submit it soon.

I'll also be releasing all the code for the site soon. Most all of the code was written by my friend Claude with me only stepping in when Claude must have had too many drinks and would go haywire. There's still bugs and memories of those haywire moments that I'd like to get cleaned up this weekend but will be posting it soon for anyone interested in looking under the hood.

I've tried to make sure most things were working but I constantly keep finding new bugs that need squashed. If you give it a test and see any issues please share them on this post. I'd love to continue improving the system to make it as user friendly as possible. I have a ton of new feature ideas like ics import and syncing with other calendar services to import your existing calendars into nostr events planned but want to get the base working as well as possible first.

Reply to this note

Please Login to reply.

Discussion

Bunker doesn't work properly. I'll get it to the top of the list.

I've spent the last few weeks working on my nostr calendar project before launching it yesterday. Last night I fed the basis for what I had built into some added prompt files and used the #mkstack folder to let Claude rebuild. I'm very impressed with what it's been able to do in roughly 24 hours!

I've gone ahead and moved https://nostrcal.com to the code from the #mkstacks based context. It's visually much, much more appealing and after a bit of work this morning, it's functionality is just as good as before. I've also gone ahead and uploaded the code to Github in case anyone is interested in what's happening. https://github.com/patrickulrich/nostrcal

nostr:nevent1qvzqqqqqqypzqr6k8l3vlhccpjcsgkrtjkrnx7dqc87ul0psr2qvsf2lx0g47quaqy08wumn8ghj7un9d3shjtnsv968y6trdd6kcunfvd5zucm0d5hszgmhwden5te0wfjkccte9enk7mmyd4hhymnfdenky6t5vdhkjm3wvdhk6tcpydmhxue69uhhyetvv9ujuurpw3exjcmtw4k8y6trdqhxxmmd9a5kucn00qqzq0wsuzylgc8hl6h5d3tcx74t6h7a0rxes2l0cqq0crjmgl0fe5n29t22la

start with caldav!

After the core site's ugliest bugs get squashed I plan to work on a sync tool to bring events from outside nostr in.

MK Stack? Looks like shadcn and nostrify ✌️

It is! I moved everything to it a few days ago and really like it compared to what I had been building myself.

Shadcn is nice, i can recognize it from a mile away. Its react tho 😜

Your modified NIP-52 link is broken

Oof it carried the . to end the sentence into the hyperlink

https://github.com/patrickulrich/nips/blob/master/52.md

This looks awesome. Going to try it out.

Love to hear about your impressions good and bad!

Really like the design, easy to get around in. Poking around and trying things out currently.

I created a event slot and edited it a few times. Noticed that if I edit the template the field for "Maximum Advance (days)" always goes back to 0.

🔥🔥🔥 will take a look!

Please add Amber signing. 😀

Not had the best lick getting bunker support yet. It's a high priority for my own use case though!

Dang . . . My signer is going nuts after I log in. TWhat is with all the Nip44 decrypts?

It's pulling down all your gift wraps and decrypting them to determine if they are calendar events or something else (DM, etc)

If you use lots of nostr private DMs there will be lots for it to run through.

This is a less than an ideal way to handle this, IMO. That is a LOT of stuff getting pulled down and it would not be friendly to those on slow connections (like I am) and on lower performance hardware. I am not sure that I have a good suggestion on how to solve this issue, as I don't know a heck of a lot about how all that stuff works. I would think that one could use a tag of some sort to designate an event "outside" the encrypted data so that you only pull down the messages that are tagged with the calendar data tag.

Yeah I went back and forth on how to handle private events quite a few times. I had debated doing another relay list kind similar to DMs list for users to define calendar relays but held off because it would still be using the same gift wrap standard so it wouldn't guarantee DMs / calendar gift wraps cross populate even if desired relays were defined. I'll definitely be keeping my ears out for any suggestions to get past that. I certainly agree it's not the most ideal setup for light-powered devices.

Dude! So far the UI is GREAT!

I created an event. I think it is public. Gotta see how to share it.

Editing the even works!

Comments seem to work but what is this three dot menu supposed to do? Clicking it does not seem to do anything.

I don't think that the event details needs to have the whole profile for the organizer, and also, it is not correctly keeping long text strings within the box.

That should be for edit/delete comments. Will be addressed soon!

Thank you! Yeah that's a public event there that will appear for anyone searching for events under /events. If you create a private event and don't see it just give the page a refresh and it should pop up after that. I'm still working to find the bug that's sometimes forcing a page refresh to start bringing in private events.

nostr:npub18ams6ewn5aj2n3wt2qawzglx9mr4nzksxhvrdc4gzrecw7n5tvjqctp424

This is what I was talking about.

oh okay, i thought you meant something different. yes im aware of this and have been playing with it off and on for a few weeks. nostr:npub1patrlck0muvqevgytp4etpen0xsvrlw0hscp4qxgy40n852lqwwsz79h9a recently migrated this app to #mkstack and the UI is fantastic now.

im really interested in the Calendy / Cal.com features for book and scheduling meetings with people. being able to own that data is a huge win.

I have to finish that too! I have a Cal.com plugin working for public events but need to get everything for private events in so we can get that out in the wild. I think that'll bring us a whole new range of calendar users into the ecosystem.

I figured it would be on your radar. You are all over. LOL!

You're not wrong! I do it because I love to help people and grow this community. We're doing great things here!

Yes. I wholeheartedly agree with that, with a few notable, let's say . . . primitive . . . exceptions. 🤣🤣

One thing that I can't stand, along with many other calendar apps . . . If I choose monthly view, please, please, please never switch out of that view unless I am adding or editing an event. Pretty please? I hate having to switch views back to what I prefer. That is . . . so unnecessarily annoying.

Great feedback! I'll get a preference added to the user so that it can stay in place while in the session.

Oh, dang! You handle relays perfectly. That is impressive. Very impressive.

Seems to work just fine.

I just tried to create a private event and nothing shows up on the calender. Hmmmmm...

Nuts. It just showed up. Odd, but OK.

Mine still isn't

Interesting.

It took about 5 minutes to show up. Not optimal.

Did you try an F5 refresh? I have a bug where private feeds aren't always pulling until theres a page refresh then it fires off. It's one of the main things I want to focus on tomorrow morning when I get to really sit down at it.

Yes and no. It still took a while to populate.

That happened to me too.

I would also appreciate a 24 hour mode. I lowkey detest "am and pm." 🤓

This is coming in the next update push. You should be able to start finding this in the General > Calendar Display settings soon.

Excellent.

I created an event and my wife and I tried but were not able to book a time slot. We tried with a sats cost and without. Does this part work yet?

Sats cost isn't implemented in any form yet so it shouldn't be a problem either way. Do time slots populate or do you never see any times available?

Time slots do populate. I got one of my coworkers to create an account and then she could take a time slot. So maybe my wife was not signed in.

I see that if someone creates a key on the site, I see they get a prompt to download their key. I don't see a way currently to get your key if you miss that prompt, correct?

I missed this somehow so sorry for the delay in getting back. Right now I don't have any way to export it past the initial time but I'll look to see if that's something I could add to the settings page.

Do you see something like this on your booking link or are the times never showing up? Also what sign in method are you using?

I get past that point. It's in the scheduling page where I need to enter a name, email and comment. The Book Event button was greyed out.

When I just checked this morning it's now clickable.

Initially I had set it to 21 sats, so if payments don't work it makes sense. I then changed it to 0 sat and it was still greyed out. Maybe it was just a delay in the relays updating the event to have no fee?

Ahh, got a few work buddies to try and book without having a nostr account, so they probably just need to be logged in to click submit for a time slot. When I did it this morning, I was logged into my account and I was able to book a time.

I think I have a fix coming in the next update push for this. If a user tries to book but isn't signed in the button will open the 'Login' modal to let them either Sign Up/Login and complete the booking. It should def help reduce that confusion point. Sat bookings still to come.

allow search by city/state/country and this will replace my meetup, satlantis and by extension cal.com

New update pushed to let you search via location tag, be able to load more events beyond initial load and mapping enhancements. Let me know what you think!