<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jure </title>
    <description>The latest articles on DEV Community by Jure  (@hoornet).</description>
    <link>https://dev.to/hoornet</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F181776%2F1a3cd1b3-3a5e-4987-a901-e3b736660756.jpeg</url>
      <title>DEV Community: Jure </title>
      <link>https://dev.to/hoornet</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hoornet"/>
    <language>en</language>
    <item>
      <title>I built the cross-platform Nostr desktop client I always wanted</title>
      <dc:creator>Jure </dc:creator>
      <pubDate>Wed, 22 Jul 2026 17:46:48 +0000</pubDate>
      <link>https://dev.to/hoornet/i-built-the-cross-platform-nostr-desktop-client-i-always-wanted-1fkk</link>
      <guid>https://dev.to/hoornet/i-built-the-cross-platform-nostr-desktop-client-i-always-wanted-1fkk</guid>
      <description>&lt;h2&gt;
  
  
  Why I spent a year building Vega — a Tauri-based Nostr client with an embedded relay, Lightning zaps, and first-class long-form writing.
&lt;/h2&gt;

&lt;p&gt;Most Nostr clients live in the browser or on your phone. That's fine for scrolling, but I kept hitting the same walls: I wanted a fast native app on my desktop, I wanted my notes to survive even if every relay I used disappeared, and I wanted to &lt;em&gt;write&lt;/em&gt; — actual long-form articles, not just 280-character hot takes.&lt;/p&gt;

&lt;p&gt;So I built &lt;a href="https://veganostr.com" rel="noopener noreferrer"&gt;Vega&lt;/a&gt;, a free and open-source (MIT) desktop Nostr client for Mac, Windows, and Linux. It's now at version 0.14, with 70+ features and 20 NIPs implemented. This post is about why it exists and the technical decisions that shaped it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wait, what's Nostr?
&lt;/h2&gt;

&lt;p&gt;Quick primer if you haven't crossed paths with it yet: &lt;a href="https://nostr.com" rel="noopener noreferrer"&gt;Nostr&lt;/a&gt; is a simple, open protocol for censorship-resistant social networking. Your identity is a keypair, not an account on someone's server. Your posts ("notes") are signed events published to relays — dumb, interchangeable servers anyone can run. No company owns the network, and clients are interchangeable too: log into any of them with the same key, and your identity, follows, and posts come with you.&lt;/p&gt;

&lt;p&gt;That last part matters for what follows. When there's no platform lock-in, clients compete purely on quality. I thought the desktop deserved a serious contender.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why a desktop app in 2026?
&lt;/h2&gt;

&lt;p&gt;Fair question. The honest answer: because it's where I live. I write, I code, I listen to podcasts — all on a desktop with a real keyboard. And desktop apps can do things browser tabs can't:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Run background services.&lt;/strong&gt; Vega embeds an actual Nostr relay (&lt;a href="https://github.com/hoytech/strfry" rel="noopener noreferrer"&gt;strfry&lt;/a&gt;) inside the app. More on this below, because it's my favorite design decision.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Store keys properly.&lt;/strong&gt; Your Nostr private key goes into the OS-native keychain (macOS Keychain, Windows Credential Manager, Secret Service on Linux) — not localStorage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Be fast.&lt;/strong&gt; Feeds load instantly from a local SQLite cache before a single relay connection opens.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The stack: Tauri 2.0, not Electron
&lt;/h2&gt;

&lt;p&gt;Vega is built on &lt;a href="https://tauri.app" rel="noopener noreferrer"&gt;Tauri 2.0&lt;/a&gt; with a React 19 + TypeScript frontend. The Rust backend handles the native side: keychain access, SQLite, the embedded relay process, system tray, auto-updates.&lt;/p&gt;

&lt;p&gt;I picked Tauri over Electron for the classic reasons, and they held up in practice. The installers are 6–11 MB depending on platform — not 150 MB. Memory usage is a fraction of an Electron equivalent because it uses the OS webview instead of bundling Chromium. And having Rust on the backend meant the security-sensitive parts (key storage, signing) live outside JavaScript entirely.&lt;/p&gt;

&lt;p&gt;The frontend talks Nostr through &lt;a href="https://github.com/nostr-dev-kit/ndk" rel="noopener noreferrer"&gt;NDK&lt;/a&gt; (Nostr Dev Kit), with Zustand for state and Tailwind 4 for styling. The split ended up being 91% TypeScript, 6% Rust — Tauri lets you keep the native layer thin.&lt;/p&gt;

&lt;h2&gt;
  
  
  My favorite feature: the embedded relay
&lt;/h2&gt;

&lt;p&gt;Here's the problem with relying purely on public relays: they go down, they prune old events, they disappear. If your notes only exist on other people's servers, your data sovereignty is theoretical.&lt;/p&gt;

&lt;p&gt;Vega's answer is to bundle strfry — a production-grade relay written in C++ — directly into the app. Every note you write is stored in your own local relay first, then broadcast to the network. On startup, Vega syncs your local relay with the network relays.&lt;/p&gt;

&lt;p&gt;The result: your entire history lives on your machine, offline-ready, and you can back it up like any other data. If a public relay vanishes tomorrow, you rebroadcast and move on. This is what "own your data" should actually mean.&lt;/p&gt;

&lt;p&gt;I also run a public relay for the network — &lt;a href="https://relay2.veganostr.com" rel="noopener noreferrer"&gt;relay2.veganostr.com&lt;/a&gt;, written in Go, supporting 19 NIPs including full-text search and NIP-42 auth. Running your own relay teaches you a &lt;em&gt;lot&lt;/em&gt; about the protocol's edge cases. That's probably a post of its own.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lightning everywhere
&lt;/h2&gt;

&lt;p&gt;Nostr has native payments via Bitcoin's Lightning Network — "zaps" — and this is where it stops feeling like a Twitter clone and starts feeling like something new.&lt;/p&gt;

&lt;p&gt;Vega integrates Lightning at several levels:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zaps&lt;/strong&gt; with configurable presets, via Nostr Wallet Connect (NIP-47), with a guided setup wizard for Alby Hub, Mutiny, and Phoenix.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A built-in V4V podcast player&lt;/strong&gt; that streams sats to podcast creators in real time while you listen, with budgets and per-episode caps. Value-for-value podcasting is criminally underrated, and I wanted it as a first-class citizen, not a plugin.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zap history&lt;/strong&gt; so you can actually see where your sats went.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Long-form writing as a first-class citizen
&lt;/h2&gt;

&lt;p&gt;Most clients treat long-form content (NIP-23 articles) as an afterthought. Vega ships a full Markdown article editor with syntax highlighting, multi-draft management, and dedicated article feeds for reading. If Nostr is going to be a home for writers — and I think it can be a serious blogging platform, since your articles are portable, signed, and censorship-resistant — the tooling has to be there.&lt;/p&gt;

&lt;h2&gt;
  
  
  The small things that add up
&lt;/h2&gt;

&lt;p&gt;A grab bag of details I'm proud of: eight themes (including Catppuccin Mocha and Gruvbox, because of course), the Atkinson Hyperlegible font option and WCAG AA contrast for accessibility, advanced search with modifiers like &lt;code&gt;by:author&lt;/code&gt; and &lt;code&gt;since:2026-01-01&lt;/code&gt;, script-based feed filtering (Latin/CJK/Cyrillic/Arabic), NIP-46 remote signer support so your key never has to touch the app at all, and encrypted DMs using NIP-17 gift wrap.&lt;/p&gt;

&lt;p&gt;None of these is a headline feature. Together they're the difference between a demo and a daily driver.&lt;/p&gt;

&lt;h2&gt;
  
  
  About the name
&lt;/h2&gt;

&lt;p&gt;Vega is named after &lt;a href="https://en.wikipedia.org/wiki/Jurij_Vega" rel="noopener noreferrer"&gt;Jurij Vega&lt;/a&gt; (1754–1802), a Slovenian mathematician famous for his logarithm tables — which put powerful calculation into everyone's hands. Making powerful tools accessible to everyone felt like the right patron for a client whose whole point is that no one can take your voice away. (Also, I'm Slovenian and his first name is the same as mine. It was fate.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it, break it, tell me
&lt;/h2&gt;

&lt;p&gt;Vega is MIT-licensed and free. Installers for macOS (Apple Silicon), Windows, and Linux (DEB/RPM/AUR) are on the site, and the code is on GitHub:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌐 Site &amp;amp; downloads: &lt;a href="https://veganostr.com" rel="noopener noreferrer"&gt;veganostr.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💻 Source: &lt;a href="https://github.com/hoornet/vega" rel="noopener noreferrer"&gt;github.com/hoornet/vega&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you try it, I'd love to hear what breaks or what's missing — issues and PRs are very welcome. And if you're already on Nostr, come say hi over there.&lt;/p&gt;

&lt;p&gt;This is the first post about the things I've been building — there's more coming (an AI-readable docs platform, a Home Assistant memory layer, a distraction-free Markdown editor…). Follow along if indie cross-platform apps are your thing.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Thanks for reading! Questions about Tauri, embedding a relay, or Nostr development in general — fire away in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>nostr</category>
      <category>showdev</category>
      <category>tauri</category>
    </item>
    <item>
      <title>In the comming days I'm gonna start posting about projects that I've done. Stuff like Vega,my desktop Nostr client, Nives, my local memory for Home Assistant in the form of an addon (app now), Agentdocs.eu and so on...</title>
      <dc:creator>Jure </dc:creator>
      <pubDate>Tue, 21 Jul 2026 21:01:31 +0000</pubDate>
      <link>https://dev.to/hoornet/in-the-comming-days-im-gonna-start-posting-about-projects-that-ive-done-stuff-like-vegamy-26nl</link>
      <guid>https://dev.to/hoornet/in-the-comming-days-im-gonna-start-posting-about-projects-that-ive-done-stuff-like-vegamy-26nl</guid>
      <description></description>
      <category>buildinpublic</category>
      <category>programming</category>
      <category>showdev</category>
      <category>sideprojects</category>
    </item>
  </channel>
</rss>
