<?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: Ny Harena RAVELOMANANTSOA</title>
    <description>The latest articles on DEV Community by Ny Harena RAVELOMANANTSOA (@nyharena25).</description>
    <link>https://dev.to/nyharena25</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%2F4197383%2F471cc420-36c3-46ac-8804-72e57ef568e0.jpg</url>
      <title>DEV Community: Ny Harena RAVELOMANANTSOA</title>
      <link>https://dev.to/nyharena25</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nyharena25"/>
    <language>en</language>
    <item>
      <title>Introducing 0xTsoa: A Reproducible, Zero-Database Registry for Linux Desktops and Dotfiles</title>
      <dc:creator>Ny Harena RAVELOMANANTSOA</dc:creator>
      <pubDate>Wed, 21 Oct 2026 08:20:58 +0000</pubDate>
      <link>https://dev.to/nyharena25/introducing-0xtsoa-a-reproducible-zero-database-registry-for-linux-desktops-and-dotfiles-20b8</link>
      <guid>https://dev.to/nyharena25/introducing-0xtsoa-a-reproducible-zero-database-registry-for-linux-desktops-and-dotfiles-20b8</guid>
      <description>&lt;p&gt;Linux desktop customization (often called "ricing") has a discoverability and reproducibility problem.&lt;/p&gt;

&lt;p&gt;Great setups for Hyprland, Niri, Sway, i3, bspwm, AwesomeWM, KDE, and GNOME are scattered across Reddit threads,archived Gists, and unindexed GitHub repositories. When you finally find a setup you like, you often run into three issues:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Broken or floating references&lt;/strong&gt;: The repository has moved on, screenshots no longer match the code, or the install instructions assume packages you do not have.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unverified shell scripts&lt;/strong&gt;: Many dotfile repositories ask you to pipe a remote &lt;code&gt;install.sh&lt;/code&gt; directly into &lt;code&gt;bash&lt;/code&gt; without a pinned commit or checksum.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Missing component search&lt;/strong&gt;: Sometimes you do not want a full dotfile replacement. You only want a Waybar layout, a Quickshell or eww widget, a Rofi launcher theme, a SDDM login greeter, or a GTK theme.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To solve this, I built &lt;strong&gt;0xTsoa&lt;/strong&gt; (ZeroTsoa): an open-source, zero-database community registry for reproducible Linux desktop environments, dotfiles, and window manager setups across Wayland and X11.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Registry&lt;/strong&gt;: &lt;a href="https://0xtsoa.vercel.app" rel="noopener noreferrer"&gt;https://0xtsoa.vercel.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/nyharena25/0xTsoa" rel="noopener noreferrer"&gt;https://github.com/nyharena25/0xTsoa&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&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%2Fxq2emb93etz208ustafy.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%2Fxq2emb93etz208ustafy.png" alt="0xTsoa Landing Page" width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What is 0xTsoa?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;0xTsoa&lt;/strong&gt; indexes both complete dotfile setups and individual Linux desktop building blocks across &lt;strong&gt;17 categories&lt;/strong&gt; (currently &lt;strong&gt;173+ indexed configurations&lt;/strong&gt;):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Window Managers and Full Setups&lt;/strong&gt;: &lt;code&gt;dotfiles&lt;/code&gt;, &lt;code&gt;wm&lt;/code&gt; (Hyprland, Niri, Sway, River, i3, bspwm, dwm, AwesomeWM, Qtile, Hypr, XMonad, Labwc, Wayfire, Herbstluftwm, LeftWM, Openbox, GNOME, KDE Plasma, XFCE, Cinnamon)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shells, Bars, and Panels&lt;/strong&gt;: &lt;code&gt;bar&lt;/code&gt;, &lt;code&gt;widgets&lt;/code&gt;, &lt;code&gt;dock&lt;/code&gt;, &lt;code&gt;launcher&lt;/code&gt;, &lt;code&gt;notifications&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visual Themes and Assets&lt;/strong&gt;: &lt;code&gt;gtk-theme&lt;/code&gt;, &lt;code&gt;colorscheme&lt;/code&gt;, &lt;code&gt;icons&lt;/code&gt;, &lt;code&gt;cursors&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;System Screens and Utilities&lt;/strong&gt;: &lt;code&gt;login&lt;/code&gt;, &lt;code&gt;lockscreen&lt;/code&gt;, &lt;code&gt;boot&lt;/code&gt;, &lt;code&gt;extension&lt;/code&gt;, &lt;code&gt;tool&lt;/code&gt;, &lt;code&gt;resource&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every entry in the registry is a human-readable, strictly typed JSON file stored inside the repository at &lt;code&gt;configs/&amp;lt;author&amp;gt;/&amp;lt;slug&amp;gt;.json&lt;/code&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%2Fpexton8b4qwq4rtlupfl.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%2Fpexton8b4qwq4rtlupfl.png" alt="0xTsoa Catalogue and Faceted Filters" width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Zero-Database?
&lt;/h2&gt;

&lt;p&gt;Running a community registry usually requires a PostgreSQL instance, an authentication layer, an API server, and ongoing hosting costs. If the maintainer stops paying for the database, the community index disappears.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;0xTsoa runs with zero backend servers and zero databases.&lt;/strong&gt; Everything is powered by Git, static JSON specifications, Astro build pipelines, and GitHub Actions:&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%2Fraw.githubusercontent.com%2Fnyharena25%2F0xTsoa%2Fmain%2F.github%2Fassets%2Farchitecture-flow.svg" 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%2Fraw.githubusercontent.com%2Fnyharena25%2F0xTsoa%2Fmain%2F.github%2Fassets%2Farchitecture-flow.svg" alt="0xTsoa Architecture Flow" width="3002" height="298"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Git as the Source of Truth
&lt;/h3&gt;

&lt;p&gt;Every configuration lives in &lt;code&gt;configs/&amp;lt;author&amp;gt;/&amp;lt;slug&amp;gt;.json&lt;/code&gt; and is validated against a strict Zod and JSON Schema specification (&lt;code&gt;schema/config.schema.json&lt;/code&gt;). Anyone can fork, audit, or query the entire registry offline, or fetch the compiled static JSON index at &lt;code&gt;https://0xtsoa.vercel.app/index.json&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Automated Issue-to-PR Submissions
&lt;/h3&gt;

&lt;p&gt;Contributors do not even need to touch Git to submit a project. Filling out the &lt;strong&gt;New Project Submission&lt;/strong&gt; GitHub Issue Form triggers an automated workflow (&lt;code&gt;issue-to-pr.yml&lt;/code&gt;) that parses the form, computes any missing script checksums, validates the schema, and opens a ready-to-merge Pull Request.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. GitHub Issues as the Voting Engine
&lt;/h3&gt;

&lt;p&gt;Instead of a custom database table for upvotes, every indexed setup is paired with a dedicated GitHub Issue labeled &lt;code&gt;vote&lt;/code&gt;. Community members react with positive reactions on the issue, and a prebuild script (&lt;code&gt;fetch-votes.ts&lt;/code&gt;) compiles those counts into static build metadata to rank the &lt;strong&gt;Top 5 Spotlight&lt;/strong&gt; on the homepage.&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%2Fwhq85nstx88djofmiulv.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%2Fwhq85nstx88djofmiulv.png" alt="0xTsoa Spotlight Showcase" width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Nightly Upstream Synchronization
&lt;/h3&gt;

&lt;p&gt;Dotfile repositories evolve constantly. Every night, a scheduled GitHub Actions workflow (&lt;code&gt;sync-upstream.yml&lt;/code&gt;) checks all indexed upstream repositories via &lt;code&gt;git ls-remote&lt;/code&gt;, advances pinned commit hashes to the newest default-branch commit, detects the latest release tag, and refreshes star counts automatically.&lt;/p&gt;




&lt;h2&gt;
  
  
  Security and Reproducibility by Default
&lt;/h2&gt;

&lt;p&gt;Customizing your desktop should not mean trusting blind remote scripts. The 0xTsoa validator enforces three strict rules on every submission:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Immutable Source References&lt;/strong&gt;: Floating branch names like &lt;code&gt;main&lt;/code&gt;, &lt;code&gt;master&lt;/code&gt;, or &lt;code&gt;HEAD&lt;/code&gt; are rejected. Every config must pin &lt;code&gt;source.ref&lt;/code&gt; to a specific Git commit hash or release tag.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mandatory SHA-256 Checksums&lt;/strong&gt;: If a setup references an external installer script (&lt;code&gt;install.script&lt;/code&gt;), it must provide a verified 64-character SHA-256 digest (with a 1 MiB file size ceiling).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structured Install Steps and Whitelisted Assets&lt;/strong&gt;: Every project breaks its installation down into auditable &lt;code&gt;deps&lt;/code&gt;, &lt;code&gt;dotfiles&lt;/code&gt;, and &lt;code&gt;reload&lt;/code&gt; commands, and all screenshots must come from allowlisted hosts pinned to immutable commits where supported.&lt;/li&gt;
&lt;/ol&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%2Fs13sqohikji10hykywme.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%2Fs13sqohikji10hykywme.png" alt="0xTsoa Architecture Specification Page" width="800" height="410"&gt;&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%2Flczzp9voqlhmsp6srfue.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%2Flczzp9voqlhmsp6srfue.png" alt="0xTsoa Verifiable Deployment Protocol" width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Tech Stack and "Paper &amp;amp; Ink" Design
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Framework&lt;/strong&gt;: Astro (Static Site Generation + Content Collections)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Language &amp;amp; Validation&lt;/strong&gt;: TypeScript + Zod + JSON Schema (Draft-07)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Styling&lt;/strong&gt;: Tailwind CSS v4 with a custom &lt;strong&gt;Neo-Brutalist "Paper &amp;amp; Ink"&lt;/strong&gt; design system (&lt;code&gt;#1E202B&lt;/code&gt; ink, &lt;code&gt;#F4F1EA&lt;/code&gt; warm paper, &lt;code&gt;#86DBCE&lt;/code&gt; cyan accent) designed for WCAG AAA contrast in both light and dark modes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Typography&lt;/strong&gt;: Space Grotesk, Geist Variable, JetBrains Mono Variable, and custom BD Brick display glyphs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search&lt;/strong&gt;: Instant client-side multi-facet filtering paired with &lt;strong&gt;Pagefind&lt;/strong&gt; for offline full-text search&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Markdown Pipeline&lt;/strong&gt;: Marked + &lt;code&gt;sanitize-html&lt;/code&gt; with automatic rewriting of relative upstream repository paths and volatile GitHub attachment URLs&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Submit Your Setup or Contribute
&lt;/h2&gt;

&lt;p&gt;If you maintain Linux dotfiles, a Waybar or Quickshell config, a custom theme, or a ricing utility, we would love to index your work in the registry:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Explore the Live Registry&lt;/strong&gt;: &lt;a href="https://0xtsoa.vercel.app" rel="noopener noreferrer"&gt;https://0xtsoa.vercel.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Browse the Catalogue&lt;/strong&gt;: &lt;a href="https://0xtsoa.vercel.app/catalogue" rel="noopener noreferrer"&gt;https://0xtsoa.vercel.app/catalogue&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Submit a Project (No Git Required)&lt;/strong&gt;: &lt;a href="https://github.com/nyharena25/0xTsoa/issues/new?template=new-config.yml" rel="noopener noreferrer"&gt;Open the New Project Issue Form&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Star or Fork on GitHub&lt;/strong&gt;: &lt;a href="https://github.com/nyharena25/0xTsoa" rel="noopener noreferrer"&gt;https://github.com/nyharena25/0xTsoa&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What window manager, compositor, or desktop environment are you running right now? Drop your setup or questions in the comments below!``&lt;/p&gt;

</description>
      <category>linux</category>
      <category>opensource</category>
      <category>astro</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
