1<!doctype html> 2<html lang="en"> 3 <head> 4 <meta charset="utf-8" /> 5 <link rel="icon" href="/favicon.ico" /> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 <meta name="theme-color" content="#0e0f14" /> 8 <link rel="stylesheet" href="/assets/style.css?v=4a1942c" /> 9
9<script 10 defer 11 src="https://analytics.arkhost.cloud/script.js" 12 data-website-id="76780114-a720-4844-8d89-15046770cc3d" 13 ></script>
13 14 <link href="./_app/immutable/entry/start.DeFw0Ezb.js" rel="modulepreload"> 15 <link href="./_app/immutable/chunks/B5R7Rgo7.js" rel="modulepreload"> 16 <link href="./_app/immutable/chunks/BTr0kOH8.js" rel="modulepreload"> 17 <link href="./_app/immutable/chunks/BvIOOxOp.js" rel="modulepreload"> 18 <link href="./_app/immutable/entry/app.CKef_tJW.js" rel="modulepreload"> 19 <link href="./_app/immutable/chunks/CWj6FrbW.js" rel="modulepreload"> 20 <link href="./_app/immutable/chunks/D7PWZZqY.js" rel="modulepreload"> 21 <link href="./_app/immutable/nodes/0.Qt7qQdZK.js" rel="modulepreload"> 22 <link href="./_app/immutable/chunks/BMN7V18f.js" rel="modulepreload"> 23 <link href="./_app/immutable/nodes/7.DjVRN92Z.js" rel="modulepreload"> 24 <link href="./_app/immutable/chunks/BnSJ679h.js" rel="modulepreload"> 25 <link href="./_app/immutable/chunks/D-lzizOX.js" rel="modulepreload"> 26 <link href="./_app/immutable/chunks/yU8jEVIs.js" rel="modulepreload"> 27 <!--anrgv2--><meta name="author" content="Yuri Karamian"/> <meta name="description" content="I tried dozens of note-taking apps. Each got something right, but none combined clean writing with local Markdown. So I built the one I wanted."/> <link rel="canonical" href="https://helixnotes.com/why-i-built-helixnotes"/> <meta property="og:type" content="article"/> <meta property="og:site_name" content="HelixNotes"/> <meta property="og:title" content="Why I Built HelixNotes"/> <meta property="og:description" content="Each note app got something right, but none combined clean writing with local Markdown. So I built the one I wanted."/> <meta property="og:url" content="https://helixnotes.com/why-i-built-helixnotes"/> <meta property="og:image" content="https://cdn.helixnotes.com/assets/screenshots/screenshot-1.png"/> <meta property="og:image:width" content="1200"/> <meta property="og:image:height" content="630"/> <meta property="article:published_time" content="2026-02-01"/> <meta property="article:author" content="Yuri Karamian"/> <meta name="twitter:card" content="summary_large_image"/> <meta name="twitter:title" content="Why I Built HelixNotes"/> <meta name="twitter:description" content="Each note app got something right, but none combined clean writing with local Markdown. So I built the one I wanted."/> <meta name="twitter:image" content="https://cdn.helixnotes.com/assets/screenshots/screenshot-1.png"/> <!---->
27<script type="application/ld+json">{ 28 "@context": "https://schema.org", 29 "@type": "Article", 30 "headline": "Why I Built HelixNotes", 31 "description": "I tried dozens of note-taking apps. Each got something right, but none combined clean writing with local Markdown. So I built the one I wanted.", 32 "image": "https://cdn.helixnotes.com/assets/screenshots/screenshot-1.png", 33 "datePublished": "2026-02-01", 34 "author": { 35 "@type": "Person", 36 "name": "Yuri Karamian" 37 }, 38 "publisher": { 39 "@type": "Organization", 40 "name": "ArkHost", 41 "url": "https://arkhost.com" 42 }, 43 "mainEntityOfPage": { 44 "@type": "WebPage", 45 "@id": "https://helixnotes.com/why-i-built-helixnotes" 46 } 47 }</script>
47<!----><!----><title>Why I Built HelixNotes | HelixNotes</title> 48 <link href="./_app/immutable/assets/0.DEUfUeYC.css" rel="stylesheet"> 49 </head> 50 <body data-sveltekit-preload-data="hover"> 51 <div style="display: contents"><!--[--><!--[0--><!--[--><nav class="nav"><div class="nav-inner"><a href="/" class="nav-logo"><img src="/favicon.ico" alt="HelixNotes" class="nav-icon" width="28" height="28"/> <span>HelixNotes</span></a> <button class="nav-hamburger svelte-12qhfyh" aria-label="Menu" aria-expanded="false"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="18" x2="21" y2="18"></line></svg></button> <div class="nav-links"><a href="/#features">Features</a> <a href="/contributors">Contributors</a> <a href="/docs">Docs</a> <a href="/faq">FAQ</a> <a href="/why-i-built-helixnotes">Why HelixNotes?</a> <a href="/#download" class="nav-cta">Download</a></div></div></nav> <!--[--><article class="blog-article"><div class="article-meta"><span class="tag">Behind the Build</span> <h1>Why I Built HelixNotes</h1> <p class="subtitle">I tried dozens of note-taking apps over the years. Each got something 52 right, but none combined clean writing with local Markdown. So I built 53 the one I wanted.</p> <div class="date"><span>Yuri Karamian</span> · Founder of ArkHost · February 2026</div></div> <h2>The Problem</h2> <p>I take a lot of notes. Technical documentation, project planning, random 54 ideas at 2am - all of it goes into whatever note-taking app I'm using at 55 the time. And over the years, I've used most of them.</p> <p>Evernote worked for me for years. Over time it became heavier, and its 56 pricing and product direction kept changing. I stopped feeling comfortable 57 making it the only home for information I wanted to keep.</p> <p>In between, I tried a lot of others - Joplin, Standard Notes, Simplenote, 58 Notion, Anytype, Notejoy, NimbusNotes, you name it. Each one got 59 something right but missed something else. Too slow, too bloated, weird 60 sync issues, locked-in formats, or just not pleasant to use day-to-day.</p> <p>Then I found <strong>UpNote</strong>. Clean UI, fast, just works. 61 Honestly, I loved it. But there was one problem: your data lives in 62 Google Firebase. Your notes, on someone else's cloud, tied to a 63 proprietary format. For a privacy-focused person running Linux, that's a 64 dealbreaker.</p> <h2>The Obsidian Detour</h2> <p>So I tried Obsidian. Local files, Markdown, ownership of your data - the 65 philosophy made sense to me. But I spent more time adjusting the app than 66 writing in it, and eventually I stopped reaching for it.</p> <p>Obsidian is powerful if you spend time configuring plugins, learning 67 hotkeys, and tweaking CSS. But I don't want a hobby. I want to open an 68 app, write something down, and close it. The default experience without 69 plugins felt incomplete, and with plugins it felt like maintaining a side 70 project.</p> <h2>What I Actually Wanted</h2> <p>It turned out to be pretty simple:</p> <ul><li>UpNote's clean, intuitive UI</li> <li>Obsidian's philosophy - local <code>.md</code> files, no cloud, no 71 lock-in</li> <li>A lightweight desktop app that is not built on Electron</li> <li>Open source, so you can verify what it does with your data</li></ul> <p>That app didn't exist. So I built it.</p> <h2>The Stack</h2> <p>I went with <strong>Rust + Tauri 2.0</strong> for the backend instead of 72 Electron. It produces a small native desktop app and, in my day-to-day 73 use, keeps the memory footprint low enough to leave HelixNotes open all 74 day without thinking about it.</p> <p>The frontend is <strong>SvelteKit + TailwindCSS</strong>, with <strong>TipTap v3</strong> as the editor. TipTap gives you a rich WYSIWYG 75 markdown experience - formatting toolbar, slash commands, and a source 76 mode toggle for when you want to see the raw markdown.</p> <p>Search is powered by <strong>Tantivy</strong>, a Rust-native full-text 77 search engine. The index stays on your machine and keeps searches quick, 78 even as a vault grows.</p> <p>Your notes are plain <code>.md</code> files on your filesystem. Notebooks 79 are folders. Metadata lives in frontmatter. That's it. No proprietary 80 database, no SQLite blob, no format you can't read with <code>cat</code>.</p> <h2>Sync Without Lock-in</h2> <p>There's no HelixNotes cloud and no account. That's by design: I don't 81 want to be the company holding your notes.</p> <p>Because your notes are just files in a folder, you can sync them with 82 whatever you already use - Nextcloud, Syncthing, Dropbox, rsync, Git, or 83 nothing at all. The app watches the filesystem for external
83changes and 84 picks them up automatically.</p> <p>If you'd rather the app handle it, there's optional WebDAV sync to your 85 own server now too. Either way, I'm not going to tell you where to put 86 your files. That's your decision.</p> <h2>Open Source, AGPL-3.0</h2> <p>HelixNotes is licensed under <strong>AGPL-3.0</strong> and hosted on <a href="https://gitlab.com/ArkHost/HelixNotes" target="_blank" rel="noopener">GitLab</a>.</p> <p>AGPL means anyone can use, modify, and distribute the code. But if 87 someone modifies it and runs it as a service, they have to share their 88 changes. It protects the project from proprietary forks while keeping 89 everything open.</p> <h2>Who It's For</h2> <p>HelixNotes is for people who want a comfortable rich editor while keeping 90 their notes as ordinary files. It favors useful defaults over plugin 91 hunting, and personal control over a hosted account.</p> <p>It is not trying to replace a team wiki or a real-time collaboration 92 workspace. There is no HelixNotes cloud, and I do not want the project to 93 become the company holding everyone's notes.</p> <p>Available for <strong>Linux</strong> via AppImage, <a href="/#apt-repo">Debian APT</a>, <a href="/#dnf-repo">Fedora DNF</a>, 94 and AUR; plus <strong>Windows</strong>, <strong>macOS</strong>, <strong>Android</strong>, and <a href="https://apps.apple.com/us/app/helixnotes/id6788490726" target="_blank" rel="noopener">iPhone and iPad via the App Store</a>. 95 Free, open source, no account.</p> <div class="separator">· · ·</div> <p>I built HelixNotes because I needed it. Turns out other people did too. 96 If you've been looking for the same thing, give it a try.</p> <div class="cta-box"><h3>I built the notes app I wanted to use.</h3> <p>Try HelixNotes, or inspect the source first.</p> <div class="buttons"><a href="/#download" class="primary">Download</a> <a href="https://gitlab.com/ArkHost/HelixNotes" class="secondary" target="_blank" rel="noopener">Source Code</a></div></div></article><!--]--><!----> <footer class="footer"><div class="footer-inner"><div class="footer-left"><img src="/favicon.ico" alt="HelixNotes" class="footer-icon" width="20" height="20"/> <span>HelixNotes</span> <span class="footer-sep">|</span> <a href="https://gitlab.com/ArkHost/HelixNotes" target="_blank" rel="noopener" title="GitLab" class="footer-social"><svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path d="M22.65 14.39 12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94L2.27 9.7l2.44-7.5c.12-.36.63-.36.75 0L7.9 9.7h8.2l2.44-7.5c.12-.36.63-.36.75 0l2.44 7.5 1.22 3.75a.84.84 0 0 1-.3.94Z"></path></svg></a> <a href="https://discord.gg/V7HYtShrB7" target="_blank" rel="noopener" title="Discord" class="footer-social"><svg width="20" height="16" viewBox="0 0 71 55" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M60.1 4.9A58.5 58.5 0 0 0 45.5.5a44 44 0 0 0-1.9 3.9 54.2 54.2 0 0 0-16.2 0A42 42 0 0 0 25.5.5 58.4 58.4 0 0 0 10.9 5 60 60 0 0 0 .4 46.8a59 59 0 0 0 17.9 9 44 44 0 0 0 3.8-6.2 38.2 38.2 0 0 1-6-2.9l1.5-1.2a42 42 0 0 0 36 0l1.5 1.2a38.5 38.5 0 0 1-6.1 2.9 43 43 0 0 0 3.9 6.2 58.7 58.7 0 0 0 17.9-9A59.5 59.5 0 0 0 60.1 5ZM23.7 38.4c-3.6 0-6.6-3.3-6.6-7.4s2.9-7.4 6.6-7.4 6.7 3.3 6.6 7.4c0 4-2.9 7.4-6.6 7.4Zm23.6 0c-3.6 0-6.6-3.3-6.6-7.4s2.9-7.4 6.6-7.4 6.7 3.3 6.6 7.4c0 4-2.9 7.4-6.6 7.4Z" fill="currentColor"></path></svg></a> <a href="https://mastodon.social/@HelixNotes" target="_blank" rel="me noopener" title="Mastodon" class="footer-social"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z" fill="currentColor"></path></svg></a> <a href="https://www.reddit.com/r/HelixNotes/" target="_blank" rel="noopener" title="Reddit" class="footer-social"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0zm5.01 4.744c.688 0 1.25.561 1.25 1.249a1.25 1.25 0 0 1-2.498.056l-2.597-.547-.8 3.747c1.824.07 3.48.632 4.674 1.488.308-.309.73-.491 1.207-.491.968 0 1.754.786 1.754 1.754 0 .716-.435 1.333-1.01 1.614a3.111 3.111 0 0 1 .042.52c0 2.694-3.13 4.87-7.004 4.87-3.874 0-7.004-2.176-7.004-4.87 0-.183.015-.366.043-.534A1.748 1.748 0 0 1 4.028 12c0-.968.786-1.754 1.754-1.754.463 0 .898.196 1.207.49 1.207-.883 2.878-1.43 4.744-1.487l.885-4.182a.342.342 0 0 1 .14-.197.35.35 0 0 1 .238-.042l2.906.617a1.214 1.214 0 0 1 1.108-.701zM9.25 12C8.561 12 8 12.562 8 13.25c0 .687.561 1.248 1.25 1.248.687 0 1.248-.561 1.248-1.249 0-.688-.561-1.249-1.249-1.249zm5.5 0c-.687 0-1.248.561-1.248 1.25 0 .687.561 1.248 1.249 1.248.688 0 1.249-.561 1.249-1.249 0-.687-.562-1.249-1.25-1.249zm-5.466 3.99a.327.327 0 0 0-.231.094.33.33 0 0 0 0 .463c.842.842 2.484.913 2.961.913.477 0 2.105-.056 2.961-.913a.361.361 0 0 0 .029-.463.33.33 0 0 0-.464 0c-.547.533-1.684.73-2.512.73-.828 0-1.979-.196-2.512-.73a.326.326 0 0 0-.232-.095z" fill="currentColor"></path></svg></a></div> <div class="footer-right"><a href="/faq">FAQ</a> <a href="/contributors">Contributors</a> <a href="/why-i-built-helixnotes">Why HelixNotes?</a> <a href="/docs">Docs</a> <a href="/privacy">Privacy</a> <span class="footer-sep">|</span> <a href="https://gitlab.com/ArkHost/HelixNotes" target="_blank" rel="noopener">Source</a> <a href="https://gitlab.com/ArkHost/HelixNotes/-/releases" target="_blank" rel="noopener">Releases</a> <a href="https://gitlab.com/ArkHost/HelixNotes/-/blob/main/LICENSE" target="_blank" rel="noopener">License</a> <span class="footer-sep">·</span> <span>Built by Yuri Karamian - Powered by <a href="https://arkhost.com" target="_blank" rel="noopener">ArkHost</a></span></div></div></footer> <!--[-1--><!--]--><!--]--><!--]--> <!--[-1--><!--]--><!--]--> 97 98
98<script> 99 { 100 __sveltekit_1rz0pg = { 101 base: new URL(".", location).pathname.slice(0, -1) 102 }; 103 104 const element = document.currentScript.parentElement; 105 106 Promise.all([ 107 import("./_app/immutable/entry/start.DeFw0Ezb.js"), 108 import("./_app/immutable/entry/app.CKef_tJW.js") 109 ]).then(([kit, app]) => { 110 kit.start(app, element, { 111 node_ids: [0, 7], 112 data: [null,null], 113 form: null, 114 error: null 115 }); 116 }); 117 } 118 </script>
118 119 </div> 120 </body> 121</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.