<?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: 西北盲流子</title>
    <description>The latest articles on DEV Community by 西北盲流子 (@xbmlz).</description>
    <link>https://dev.to/xbmlz</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%2F898646%2F8e9bbb20-463c-4713-9097-de2fd29f8cac.jpeg</url>
      <title>DEV Community: 西北盲流子</title>
      <link>https://dev.to/xbmlz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/xbmlz"/>
    <language>en</language>
    <item>
      <title>I put my notes in a private Git repo instead of a cloud notebook</title>
      <dc:creator>西北盲流子</dc:creator>
      <pubDate>Thu, 17 Sep 2026 05:48:16 +0000</pubDate>
      <link>https://dev.to/xbmlz/i-put-my-notes-in-a-private-git-repo-instead-of-a-cloud-notebook-io1</link>
      <guid>https://dev.to/xbmlz/i-put-my-notes-in-a-private-git-repo-instead-of-a-cloud-notebook-io1</guid>
      <description>&lt;p&gt;I like Notion for writing. I do not like where the files go.&lt;/p&gt;

&lt;p&gt;Obsidian is closer to what I want — real files on disk — but multi-device sync is still a product you bolt on. Git already solved history, private hosting, and “this copy is the source of truth.” What I was missing was a desktop shell that treats a Git repo as the workspace, instead of wrapping another proprietary store.&lt;/p&gt;

&lt;p&gt;So I built &lt;a href="https://github.com/unote-dev/unote" rel="noopener noreferrer"&gt;UNote&lt;/a&gt;. &lt;strong&gt;0.2.0&lt;/strong&gt; is out.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Git-first desktop notes. Your files stay in &lt;strong&gt;your&lt;/strong&gt; private Git repository. The app edits, navigates, and syncs. It does not own the data.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/unote-dev" rel="noopener noreferrer"&gt;
        unote-dev
      &lt;/a&gt; / &lt;a href="https://github.com/unote-dev/unote" rel="noopener noreferrer"&gt;
        unote
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Git-first lightweight desktop notes app with Markdown, Canvas &amp;amp; Mind Map
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/unote-dev/unote/src-tauri/icons/icon.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Funote-dev%2Funote%2FHEAD%2Fsrc-tauri%2Ficons%2Ficon.png" width="96" alt="UNote logo"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;UNote&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;
  Git-first desktop notes. Your files stay in &lt;strong&gt;your&lt;/strong&gt; private Git repository
&lt;/p&gt;

&lt;p&gt;
  English ·
  &lt;a href="https://github.com/unote-dev/unote/./README.zh-CN.md" rel="noopener noreferrer"&gt;简体中文&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://github.com/unote-dev/unote/actions/workflows/ci.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/unote-dev/unote/actions/workflows/ci.yml/badge.svg" alt="CI"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/unote-dev/unote/actions/workflows/release.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/unote-dev/unote/actions/workflows/release.yml/badge.svg" alt="Release"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/unote-dev/unote/releases/latest" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/f6b41f87680c792c0058cdcf80dd75bcd42341983d4723ef774f5555bef7269e/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f756e6f74652d6465762f756e6f7465" alt="Latest release"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/unote-dev/unote/releases/latest" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/648dd98a5c6e79d9cfe9e31a9bb983b47613ebf39d4679f1adb6ce8589cecfef/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d57696e646f77732532307836342d3030373844363f6c6f676f3d77696e646f7773266c6f676f436f6c6f723d7768697465" alt="Windows x64"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/7013272bd27ece47364536a221edb554cd69683b68a46fc0ee96881174c4214c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667"&gt;&lt;img src="https://camo.githubusercontent.com/7013272bd27ece47364536a221edb554cd69683b68a46fc0ee96881174c4214c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667" alt="MIT"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/unote-dev/unote/docs/screenshots/hero.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Funote-dev%2Funote%2FHEAD%2Fdocs%2Fscreenshots%2Fhero.png" alt="UNote in light and dark mode"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Markdown&lt;/strong&gt; — rich editing on top of real &lt;code&gt;.md&lt;/code&gt; files (&lt;a href="https://www.mdxeditor.dev/" rel="nofollow noopener noreferrer"&gt;MDXEditor&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Canvas&lt;/strong&gt; — freeform drawing (&lt;a href="https://excalidraw.com/" rel="nofollow noopener noreferrer"&gt;Excalidraw&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mind maps&lt;/strong&gt; — node-based outlines (&lt;a href="https://docs.mind-elixir.com/" rel="nofollow noopener noreferrer"&gt;Mind Elixir&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Diagrams&lt;/strong&gt; — Draw.io via &lt;a href="https://www.diagrams.net/" rel="nofollow noopener noreferrer"&gt;diagrams.net&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Folders&lt;/strong&gt; — nested directories, no extra metadata layer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trash&lt;/strong&gt; — deleted notes move to &lt;code&gt;.trash&lt;/code&gt; in the repo&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Git sync&lt;/strong&gt; — edit locally first, then commit and push&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Share&lt;/strong&gt; — read-only Cloudflare Quick Tunnel snapshot; the key stays in the URL fragment (&lt;code&gt;#…&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;i18n&lt;/strong&gt; — Chinese and English UI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Assets&lt;/strong&gt; — images live in &lt;code&gt;.assets/&lt;/code&gt; and can be referenced from notes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Themes&lt;/strong&gt; — light, dark, or follow the system&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Updates&lt;/strong&gt; — in-app check against the latest GitHub Release&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Install&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;Download the Windows NSIS installer from &lt;a href="https://github.com/unote-dev/unote/releases/latest" rel="noopener noreferrer"&gt;Releases&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;macOS and Linux builds are not available yet.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Git providers&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;&lt;div class="table-wrapper-paragraph"&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;table&gt;

&lt;thead&gt;

&lt;tr&gt;

&lt;th&gt;Provider&lt;/th&gt;

&lt;/tr&gt;

&lt;/thead&gt;

&lt;/table&gt;&lt;/div&gt;…&lt;p&gt;&lt;/p&gt;&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/unote-dev/unote" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;ul&gt;
&lt;li&gt;Installer: &lt;a href="https://github.com/unote-dev/unote/releases/latest" rel="noopener noreferrer"&gt;GitHub Releases&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Source: MIT&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Honest limits up front:&lt;/strong&gt; Windows x64 only. Sign-in is &lt;strong&gt;Gitee&lt;/strong&gt; today (a Git host a lot like GitHub). GitHub / GitLab login and macOS / Linux builds are on the roadmap — not in this release.&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%2Fqmgi6bwf409dq15vna4x.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%2Fqmgi6bwf409dq15vna4x.png" alt="UNote light and dark" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The workspace is the repo
&lt;/h2&gt;

&lt;p&gt;Open the folder. That &lt;em&gt;is&lt;/em&gt; the notebook.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Kind&lt;/th&gt;
&lt;th&gt;On disk&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Notes&lt;/td&gt;
&lt;td&gt;&lt;code&gt;.md&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Canvas&lt;/td&gt;
&lt;td&gt;Excalidraw&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mind maps&lt;/td&gt;
&lt;td&gt;Mind Elixir&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Diagrams&lt;/td&gt;
&lt;td&gt;Draw.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Folders&lt;/td&gt;
&lt;td&gt;normal directories&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;There is no extra ledger file. v0.2.0 dropped the old &lt;code&gt;notebooks.json&lt;/code&gt; layer. Nested folders are just nested folders. Images live in &lt;code&gt;.assets/&lt;/code&gt;. Deleted notes go to &lt;code&gt;.trash&lt;/code&gt; in the same repo, so Git still sees the move.&lt;/p&gt;

&lt;p&gt;If UNote disappeared tomorrow, you would still have a Git repository full of ordinary files.&lt;/p&gt;

&lt;h2&gt;
  
  
  Local first, then Git
&lt;/h2&gt;

&lt;p&gt;Edits hit the filesystem first. When the network is up, UNote commits and pushes. When it is not, you keep writing.&lt;/p&gt;

&lt;p&gt;Credentials go into the OS keyring. Notes go into your private repo. The&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>rust</category>
      <category>git</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
