<?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: Lavneet Sharma</title>
    <description>The latest articles on DEV Community by Lavneet Sharma (@elavneet).</description>
    <link>https://dev.to/elavneet</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%2F2562558%2F4a22ea15-9129-41ea-9a6d-61a24d99ad19.jpeg</url>
      <title>DEV Community: Lavneet Sharma</title>
      <link>https://dev.to/elavneet</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/elavneet"/>
    <language>en</language>
    <item>
      <title>I built a markdown notes app where every note is a plain file, and search runs on the device</title>
      <dc:creator>Lavneet Sharma</dc:creator>
      <pubDate>Thu, 05 Nov 2026 14:59:14 +0000</pubDate>
      <link>https://dev.to/elavneet/i-built-a-markdown-notes-app-where-every-note-is-a-plain-file-and-search-runs-on-the-device-4dna</link>
      <guid>https://dev.to/elavneet/i-built-a-markdown-notes-app-where-every-note-is-a-plain-file-and-search-runs-on-the-device-4dna</guid>
      <description>&lt;p&gt;I wanted Bear's editor on every device I use, with notes that stay mine as plain files. So I built VB Notes: a free, open-source (MIT) markdown notes app for iPhone, Android, Mac, Windows and Linux.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1tqev55aiffa9mxtf4kx.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1tqev55aiffa9mxtf4kx.webp" alt="VB Notes on the desktop: nested tags in the sidebar, the notes list, and a note with checklists and a Mermaid diagram" width="799" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Every note is a file
&lt;/h2&gt;

&lt;p&gt;You pick a folder (iCloud Drive, a Syncthing folder, or just one on the device) and every note is a &lt;code&gt;.md&lt;/code&gt; file in it. There's no database of the app's own to export from and no account. Obsidian, Vim, &lt;code&gt;grep&lt;/code&gt;, &lt;code&gt;git&lt;/code&gt; or a script can work on the same notes, and anything that writes a markdown file into the folder shows up as a note.&lt;/p&gt;

&lt;p&gt;Tags live in the text, nested like &lt;code&gt;#work/clients&lt;/code&gt;, so they survive any app. The editor formats as you type, the way Bear does: headings, checklists, tables, code coloured by language, Mermaid diagrams, pictures and voice notes, all saved as ordinary markdown.&lt;/p&gt;

&lt;h2&gt;
  
  
  Search by meaning, on the device
&lt;/h2&gt;

&lt;p&gt;Search understands what you mean, not only the words you typed. "What does my flatmate owe" finds a note called "Rent split with Arjun", though they share no words.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1a9o1u1d7fu004twi200.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1a9o1u1d7fu004twi200.webp" alt="VB Notes on iPhone: searching &amp;quot;what does my flatmate owe&amp;quot; finds the note &amp;quot;Rent split with Arjun&amp;quot;, marked &amp;quot;by meaning&amp;quot;" width="720" height="1561"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The model runs on the phone or the computer, so neither your notes nor your searches leave it. That was the part I most wanted to get right.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it's built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The phone app&lt;/strong&gt; is Expo and React Native. The editor is Tiptap 3 running in a WebView (through 10tap), with my own extensions for tag pills, &lt;code&gt;[[wiki links]]&lt;/code&gt;, code blocks and media. A WebView takes a moment to start, so while it does, the app draws the note natively, matched to the editor pixel for pixel, and the note doesn't jump when the editor takes over.&lt;/p&gt;

&lt;p&gt;The notes list, tags and keyword search come from a SQLite index with FTS5, rebuilt from the files whenever it's missing. The files stay the source of truth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The desktop app&lt;/strong&gt; is Tauri 2, not Electron. Rust scans the folder, watches it for changes and keeps the same SQLite index; the page runs the same editor extensions as the phone. The installers are 14 MB on Mac, 5 MB on Windows and 7 MB for the Linux &lt;code&gt;.deb&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Search by meaning:&lt;/strong&gt; notes are split into chunks with the title on each, and embedded with LFM2.5-Embedding-350M. On the phone it runs through react-native-executorch and the vectors are stored as int8 in SQLite; on the desktop the same model runs as a GGUF file through llama.cpp, on Metal on Apple Silicon. Meaning matches are merged with keyword matches using reciprocal rank fusion, so an exact word still wins when you type one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdg3bc31ysj7fmunxob9t.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdg3bc31ysj7fmunxob9t.webp" alt="The desktop quick finder: typing &amp;quot;fitness&amp;quot; offers to create a note and finds &amp;quot;Half marathon plan&amp;quot; by meaning" width="800" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the desktop, ⌘O / Ctrl+O opens a quick finder: the first row always creates a note with what you typed, and the rest are matches by words and by meaning.&lt;/p&gt;

&lt;p&gt;There's also an optional AI chat that uses your own API key (OpenRouter, OpenAI, Anthropic, Gemini, Ollama and others), off until you turn it on.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it doesn't do yet
&lt;/h2&gt;

&lt;p&gt;No iPad version, no web app, and no sharing or real-time collaboration. Sync is whatever syncs your folder: iCloud Drive works today, Google Drive isn't built yet. It's young and made by one person, so there are rough edges.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;iPhone: &lt;a href="https://apps.apple.com/app/vb-notes/id6829176804" rel="noopener noreferrer"&gt;App Store&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Android: &lt;a href="https://play.google.com/store/apps/details?id=com.lavneet.vbnotes" rel="noopener noreferrer"&gt;Google Play&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Mac, Windows, Linux: &lt;a href="https://vbnotes.com" rel="noopener noreferrer"&gt;vbnotes.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Code: &lt;a href="https://github.com/elavneet/vbnotes.com" rel="noopener noreferrer"&gt;github.com/elavneet/vbnotes.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'd like to hear what's missing for you, or what would make you move your notes over.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>opensource</category>
      <category>tauri</category>
      <category>reactnative</category>
    </item>
    <item>
      <title>Why Hushread Groups the News Into Stories</title>
      <dc:creator>Lavneet Sharma</dc:creator>
      <pubDate>Sat, 24 Oct 2026 09:31:26 +0000</pubDate>
      <link>https://dev.to/elavneet/why-hushread-groups-the-news-into-stories-2d8a</link>
      <guid>https://dev.to/elavneet/why-hushread-groups-the-news-into-stories-2d8a</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://hushread.com/blog/why-hushread-groups-the-news-into-stories" rel="noopener noreferrer"&gt;Hushread blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Open any RSS reader on a big news day and you get the same thing: the same event, over and over, once per outlet you follow. Thirty subscriptions, thirty headlines about the same ferry, the same court ruling, the same product launch. The reader did exactly what it promised, collect everything, and left the understanding to you.&lt;/p&gt;

&lt;p&gt;Hushread starts from a different question. You already chose your sources. What would it take for the app to &lt;em&gt;make sense&lt;/em&gt; of what they publish, without ever deciding for you what you should see?&lt;/p&gt;

&lt;h2&gt;
  
  
  One event, one story
&lt;/h2&gt;

&lt;p&gt;As articles arrive, Hushread compares each one against the stories that are currently forming. When an article is about the same event as an existing story, it joins that story. When it isn't, it starts a new one. No topics are guessed in advance and no editor is involved; the grouping comes from the articles themselves.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgxygmcb1wby9sy15o5ff.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgxygmcb1wby9sy15o5ff.webp" alt="A Hushread story page headed French Students Resume School Protests Despite Government Pledge to Act, marked 68 sources over 5 days, chapter 5 of 5, with a link to the earlier chapter" width="800" height="366"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;One story on Hushread's public stories page, built from 68 outlets' coverage, 9 October 2026. Source: &lt;a href="https://hushread.com/stories/french-students-resume-school-protests-despite-government-pledge-to-act-51712" rel="noopener noreferrer"&gt;hushread.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The result on your feed: one card per event. Tap &lt;strong&gt;See whole story&lt;/strong&gt; and you get every outlet's take laid out as a timeline, day by day, with a short summary of how the story developed so far. Long-running stories chain into chapters, so a saga that runs for weeks always lets you scroll back to how it started.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F23jbygbe43d2j5um2oiz.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F23jbygbe43d2j5um2oiz.webp" alt="The timeline page for the same Hushread story, showing 68 sources, 350 articles over 5 days, and a list of 5 chapters dated 5 to 8 October 2026, followed by 16 key moments" width="800" height="538"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The story's timeline, with its five chapters in order, 9 October 2026. Source: &lt;a href="https://hushread.com/stories/french-students-resume-school-protests-despite-government-pledge-to-act-51712/timeline" rel="noopener noreferrer"&gt;hushread.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  No repeats
&lt;/h2&gt;

&lt;p&gt;Duplicates are the quiet tax of following many sources. The same wire story on four sites. A publisher that posts to three of its own feeds. A rewrite an hour later with a fresh headline. Hushread collapses all of that under the freshest version, so the same news never hits you five times in a row. You read the news, not the echo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Knowing when a story is surging
&lt;/h2&gt;

&lt;p&gt;Because articles are grouped, Hushread can measure something a plain feed can't: how many &lt;em&gt;distinct publishers&lt;/em&gt; are covering an event, hour by hour. A story with two outlets at 9am and forty by noon is surging. A story that was everywhere yesterday and silent today has died down.&lt;/p&gt;

&lt;p&gt;That signal powers &lt;strong&gt;Trending&lt;/strong&gt;: what is genuinely being covered across your sources right now, with a Local tab for news about your country and a tab for every section. It is ranking by attention of publishers, not by what keeps you scrolling.&lt;/p&gt;

&lt;h2&gt;
  
  
  Still your sources, still no algorithm
&lt;/h2&gt;

&lt;p&gt;None of this changes the rule Hushread was built on. Nothing is injected into your feed and nothing you follow is hidden. Every source flows in raw. The only thing Hushread adds is structure: which articles belong together, which ones are copies, and which stories are moving. Understanding, not curation.&lt;/p&gt;

&lt;p&gt;Hushread is free with up to five sources on iOS, Android and the web. &lt;a href="https://hushread.com/#download" rel="noopener noreferrer"&gt;Get the app&lt;/a&gt; and pick yours.&lt;/p&gt;

</description>
      <category>rss</category>
      <category>news</category>
      <category>productivity</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
