How to build a Nostr client

My ambition is to create a Nostr client that is working cross-platform: Android, iOs, Web and as a desktop client. And of course, to be better than BlueSky and better than Twitter :) This is my journey!

How to build a Nostr client
Do not index
Do not index

This is my journey of building NostrSky

Everything started with this article from @fiatjaf describing BlueSky as a scam. BlueSky is an alternative to Twitter based on AT protocol.
They are good clients for Nostr on the market, but they are specific per platform, and no one works for all platforms. Here is a list of the best Nostr clients I know per platform:
PLATFORM
APPLICATION
DEVELOPER/GITHUB
Android
iOs
Web
Desktop client
More Speech
My ambition is to create a Nostr client that is working cross-platform: Android, iOs, Web, and as a desktop client. And, of course, to be better than BlueSky (and better than Twitter). I will name it NostrSky.
This is my journey!

Starting NostrSky

First, I have to get the domain. Simple job because nostrsky.com is free. I use AWS Route 53 to buy and register the domain because it is the tool I usually use for this kind of activity.
Then I have to choose the technologies. Because my main goal is to create a cross-platform client, the best option is the Ionic framework. I choose to use Angular because I have experience with it, but in Ionic, you can also develop with React and Vue.
And I choose Capacitor instead of Cordova for native plugins because it is modern.

I have to play with some mockups.

Always is a good idea to start with some HTML mockups (mobile wireframes) to figure out how the application will look. These are pure HTML pages without any backend - everything is hard coded. And they are looking quite well - isn’t it?
notion image
notion image
notion image
notion image

Publish the app on the web →

So you can browse it at nostrsky.com. I used Firebase hosting for this.
And I embedded it here for you. You can play with it right here:

Playing with relays

There is a good list of Nostr libraries, tools, and resources:
The first library to play for accessing the relays from JS is nostr-tools. I hope it will be enough to add some dynamic data to my app.
nostr-tools
Github
nostr-tools
Owner
nbd-wtf
Updated
Mar 18, 2024
The other option for me is to try one of the existing Java libraries for working with Nostr.
nostr-java
Github
nostr-java
Owner
tcheeric
Updated
Aug 27, 2023

Next steps

  • show dynamic info instead of hardcoded info
  • a page to manage the relays
  • publish in Google Play Store and Apple App Store
  • generate the desktop client with Electron

Conclusion

I aim to create a cross-platform Nostr client called NostrSky that is better than BlueSky and Twitter. I have chosen to use the Ionic framework with Angular and Capacitor for native plugins. I have created HTML mockups and published the app on the web using Firebase hosting. I plan to add dynamic data, create a page to manage relays, and generate a desktop client with Electron.

Join other 213+ nostricians now!

Are you prepared to embark on the next significant phase of social networking?

Subscribe
Nostr Sky

Written by

Nostr Sky

Nostrsky.com editor