<?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: quetzalcoatl</title>
    <description>The latest articles on DEV Community by quetzalcoatl (@dark_quetzalcoatl).</description>
    <link>https://dev.to/dark_quetzalcoatl</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4217638%2Fb5648683-b0c8-477e-9923-a34811d0dd69.webp</url>
      <title>DEV Community: quetzalcoatl</title>
      <link>https://dev.to/dark_quetzalcoatl</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dark_quetzalcoatl"/>
    <language>en</language>
    <item>
      <title>I build, local-first open-source apps — here's everything I shipped</title>
      <dc:creator>quetzalcoatl</dc:creator>
      <pubDate>Fri, 30 Oct 2026 16:28:13 +0000</pubDate>
      <link>https://dev.to/dark_quetzalcoatl/i-build-local-first-open-source-apps-heres-everything-i-shipped-1fnj</link>
      <guid>https://dev.to/dark_quetzalcoatl/i-build-local-first-open-source-apps-heres-everything-i-shipped-1fnj</guid>
      <description>&lt;p&gt;I have a simple rule when I build something: no account, no server if I can avoid it, and your data stays on your device.&lt;/p&gt;

&lt;p&gt;I'm a developer, and over the last months I've shipped a set of open-source web apps around that idea. They're tools I wanted to exist. Here's the whole list, grouped by what they're for.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy and communication
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Nephtys&lt;/strong&gt; — an end-to-end encrypted messenger that runs in the browser. Text, media, documents and voice notes, plus WebRTC calls. Two modes: a managed account, or private mode over a blind relay, with one-click Tor.&lt;br&gt;
→ &lt;a href="https://github.com/JemaOS/Nephtys" rel="noopener noreferrer"&gt;https://github.com/JemaOS/Nephtys&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9zpt7k8l48wkctzpagyf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9zpt7k8l48wkctzpagyf.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anima&lt;/strong&gt; — serverless video calls. Create a room or join with a code; audio and video go peer-to-peer, with no account and no central media server.&lt;br&gt;
→ &lt;a href="https://github.com/JemaOS/anima" rel="noopener noreferrer"&gt;https://github.com/JemaOS/anima&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4u48fao8e9tdfp2h66z1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4u48fao8e9tdfp2h66z1.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JemaDrop&lt;/strong&gt; — send files between your phone and your PC by scanning a QR code. They stay on your local network, and it ships with a Docker setup.&lt;br&gt;
→ &lt;a href="https://github.com/JemaOS/jemadrop" rel="noopener noreferrer"&gt;https://github.com/JemaOS/jemadrop&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F86cfebh68sbwqyf42vqd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F86cfebh68sbwqyf42vqd.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Writing and documents
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;JemaNote&lt;/strong&gt; — local-first Markdown notes with live preview and a command palette. No account, works offline as a PWA.&lt;br&gt;
→ &lt;a href="https://github.com/JemaOS/jemanote" rel="noopener noreferrer"&gt;https://github.com/JemaOS/jemanote&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz3o1sq57bzdfne5p7qrw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz3o1sq57bzdfne5p7qrw.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JemaPDF&lt;/strong&gt; — merge, split, compress, resize and extract pages, entirely in the browser. Most "free PDF" sites upload your files; this one doesn't.&lt;br&gt;
→ &lt;a href="https://github.com/JemaOS/JemaPDF" rel="noopener noreferrer"&gt;https://github.com/JemaOS/JemaPDF&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6xp12dkls4yhkwcd3avj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6xp12dkls4yhkwcd3avj.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;QuickText&lt;/strong&gt; — a tiny, distraction-free text editor, available as a PWA and a Chrome extension.&lt;br&gt;
→ &lt;a href="https://github.com/JemaOS/quicktext" rel="noopener noreferrer"&gt;https://github.com/JemaOS/quicktext&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnkvtcnyer7f8n8lajyjg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnkvtcnyer7f8n8lajyjg.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Audio and video
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;OsiVibe&lt;/strong&gt; — a video editor that runs in a browser tab: multi-track timeline, cuts, transitions, effects, titles and export presets.&lt;br&gt;
→ &lt;a href="https://github.com/JemaOS/osivibe" rel="noopener noreferrer"&gt;https://github.com/JemaOS/osivibe&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2aqksq6rlnrkwomgf3se.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2aqksq6rlnrkwomgf3se.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SetSound&lt;/strong&gt; — cut, join, convert and record audio locally in the browser. Nothing is uploaded.&lt;br&gt;
→ &lt;a href="https://github.com/JemaOS/setsound" rel="noopener noreferrer"&gt;https://github.com/JemaOS/setsound&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdtnfh549l2nf59kyp0rp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdtnfh549l2nf59kyp0rp.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Developer tools
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;JemaTrace&lt;/strong&gt; — paste a traceroute and see it on a 3D globe, with every hop geolocated and the real submarine-cable layout.&lt;br&gt;
→ &lt;a href="https://github.com/JemaOS/jematrace" rel="noopener noreferrer"&gt;https://github.com/JemaOS/jematrace&lt;/a&gt; · demo: &lt;a href="https://jematrace.vercel.app" rel="noopener noreferrer"&gt;https://jematrace.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fctyqk3wepl293j15w022.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fctyqk3wepl293j15w022.png" alt=" " width="799" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  For fun
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;JemaChess&lt;/strong&gt; — chess that works offline, with 4 AI levels, pass-and-play and peer-to-peer online games. No account, no server.&lt;br&gt;
→ &lt;a href="https://github.com/JemaOS/jemachess" rel="noopener noreferrer"&gt;https://github.com/JemaOS/jemachess&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5sqanp7g8jcsqj1xs4ao.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5sqanp7g8jcsqj1xs4ao.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What they have in common
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Open source (MIT or AGPL)&lt;/li&gt;
&lt;li&gt;No account required for the core features&lt;/li&gt;
&lt;li&gt;Installable as a PWA, works offline&lt;/li&gt;
&lt;li&gt;Local-first: the processing happens in your browser&lt;/li&gt;
&lt;li&gt;No tracking, no ads&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;I'm now focusing on the two that got the most feedback: Nephtys (the threat model) and JemaTrace (cable routing accuracy). If one of these tools is close to something you need, tell me what's missing — I prioritise based on real use, not on feature lists.&lt;/p&gt;

&lt;p&gt;And if one of them is genuinely useful to you, a star helps me know it's worth maintaining.&lt;/p&gt;

&lt;p&gt;Thanks for reading.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
