<?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: Khoa.Vo</title>
    <description>The latest articles on DEV Community by Khoa.Vo (@khoavo).</description>
    <link>https://dev.to/khoavo</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%2F2829184%2F6b9340bb-b1f3-4daa-ae39-0199eeaf49cf.png</url>
      <title>DEV Community: Khoa.Vo</title>
      <link>https://dev.to/khoavo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/khoavo"/>
    <language>en</language>
    <item>
      <title>Engineering KV Files PRO: 3D CAD Viewports, Adobe PSD Parsers &amp; Offline Ed25519 Licensing in Rust</title>
      <dc:creator>Khoa.Vo</dc:creator>
      <pubDate>Wed, 23 Sep 2026 12:34:57 +0000</pubDate>
      <link>https://dev.to/khoavo/engineering-kv-files-pro-3d-cad-viewports-adobe-psd-parsers-offline-ed25519-licensing-in-rust-2pfl</link>
      <guid>https://dev.to/khoavo/engineering-kv-files-pro-3d-cad-viewports-adobe-psd-parsers-offline-ed25519-licensing-in-rust-2pfl</guid>
      <description>&lt;h1&gt;
  
  
  Engineering KV Files PRO: 3D CAD Viewports, Adobe PSD Parsers &amp;amp; Offline Ed25519 Licensing in Rust
&lt;/h1&gt;

&lt;p&gt;Following the release of the open-source &lt;strong&gt;KV Files&lt;/strong&gt; web file manager, teams working in architecture, industrial engineering, and creative agencies reached out with advanced enterprise needs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Viewing massive &lt;strong&gt;3D CAD and BIM engineering models&lt;/strong&gt; (DWG, DXF, IFC, STEP, STL) directly inside the browser without installing expensive CAD desktop software.&lt;/li&gt;
&lt;li&gt;Inspecting multi-layer &lt;strong&gt;Adobe Photoshop (PSD) and Illustrator (AI)&lt;/strong&gt; design files without launching Adobe Creative Cloud.&lt;/li&gt;
&lt;li&gt;Ensuring compliance in high-security air-gapped enterprise networks through &lt;strong&gt;100% offline asymmetric cryptographic licensing&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To address these requirements, I engineered &lt;strong&gt;&lt;a href="https://vndangkhoa.github.io/kv-file/#pro" rel="noopener noreferrer"&gt;KV Files PRO&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;kv-file-pro&lt;/code&gt;).&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ Key Commercial Capabilities
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Universal 3D CAD &amp;amp; BIM Viewport
&lt;/h3&gt;

&lt;p&gt;Engineers and architects can preview complex 3D assemblies and construction drawings directly inside their browser tab:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Formats Supported:&lt;/strong&gt; DWG, DXF, IFC (BIM), STEP, IGES, STL, and OBJ.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hardware-Accelerated WebGL/WebGPU Rendering:&lt;/strong&gt; Smooth orbital rotation, exploded views, section cuts, and measurement calipers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Software Footprint:&lt;/strong&gt; Team members on tablets or budget laptops can inspect millimeter-accurate blueprints without needing specialized desktop workstations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Adobe Creative Suite Layer Parser
&lt;/h3&gt;

&lt;p&gt;Creative studios can preview raw design assets before delivery:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Parses multi-layer &lt;strong&gt;Adobe Photoshop (&lt;code&gt;.psd&lt;/code&gt;)&lt;/strong&gt; files on the fly.&lt;/li&gt;
&lt;li&gt;Allows toggling individual layer visibility, inspecting layer blending modes, and exporting individual raster assets directly from the file browser.&lt;/li&gt;
&lt;li&gt;Previews &lt;strong&gt;Illustrator (&lt;code&gt;.ai&lt;/code&gt;)&lt;/strong&gt; and &lt;strong&gt;InDesign (&lt;code&gt;.indd&lt;/code&gt;)&lt;/strong&gt; spreads with embedded color profile fidelity.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Typography &amp;amp; Font Inspector Studio
&lt;/h3&gt;

&lt;p&gt;Designers can drag and drop OTF, TTF, and WOFF2 font files into a specialized inspector to test custom glyphs, kerning tables, variable font weight sliders, and ligature ligatures in real time.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. 100% Offline Ed25519 Cryptographic Licensing
&lt;/h3&gt;

&lt;p&gt;Enterprise environments often mandate strict air-gapped isolation from the public internet. KV Files PRO utilizes asymmetric &lt;strong&gt;Ed25519 cryptographic signatures&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;License keys are validated mathematically against embedded public keys directly inside the Rust binary.&lt;/li&gt;
&lt;li&gt;Requires zero internet connectivity, zero outbound telemetry, and zero third-party licensing servers.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📦 Deployment
&lt;/h2&gt;

&lt;p&gt;KV Files PRO is packaged as an optimized commercial Docker container:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; kv-file-pro &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; 8080:8080 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; /enterprise/storage:/data &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; ./kv-pro-data:/config &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;LICENSE_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"your-ed25519-license-key"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  vndangkhoa/kv-file-pro:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔗 Learn More
&lt;/h2&gt;

&lt;p&gt;Explore full documentation, interactive live demos, and licensing details:&lt;/p&gt;

&lt;p&gt;🌐 &lt;strong&gt;KV Files PRO Portal:&lt;/strong&gt; &lt;a href="https://vndangkhoa.github.io/kv-file/#pro" rel="noopener noreferrer"&gt;https://vndangkhoa.github.io/kv-file/#pro&lt;/a&gt;&lt;br&gt;&lt;br&gt;
⭐ &lt;strong&gt;GitHub Organization:&lt;/strong&gt; &lt;a href="https://github.com/vndangkhoa" rel="noopener noreferrer"&gt;https://github.com/vndangkhoa&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rust</category>
      <category>webdev</category>
      <category>docker</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Building a Mobile-First Social Media Video Downloader with Go and yt-dlp</title>
      <dc:creator>Khoa.Vo</dc:creator>
      <pubDate>Wed, 23 Sep 2026 12:34:24 +0000</pubDate>
      <link>https://dev.to/khoavo/building-a-mobile-first-social-media-video-downloader-with-go-and-yt-dlp-53oe</link>
      <guid>https://dev.to/khoavo/building-a-mobile-first-social-media-video-downloader-with-go-and-yt-dlp-53oe</guid>
      <description>&lt;h1&gt;
  
  
  Building a Mobile-First Social Media Video Downloader with Go and yt-dlp
&lt;/h1&gt;

&lt;p&gt;Downloading videos from platforms like TikTok, YouTube, Instagram Reels, and Twitter/X on a mobile device is notoriously painful. Most public downloader websites are loaded with deceptive popups, malware redirect ads, and arbitrary file size limits.&lt;/p&gt;

&lt;p&gt;I wanted a clean, self-hosted web tool that I could pin to my phone's home screen as a Progressive Web App (PWA) to grab videos cleanly in one tap.&lt;/p&gt;

&lt;p&gt;That led to &lt;strong&gt;&lt;a href="https://github.com/vndangkhoa/kv-download" rel="noopener noreferrer"&gt;KV-Download&lt;/a&gt;&lt;/strong&gt;: a mobile-friendly media downloader powered by &lt;strong&gt;Go 1.24+&lt;/strong&gt; and &lt;strong&gt;yt-dlp&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎬 Key Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;📱 &lt;strong&gt;Mobile-First UX:&lt;/strong&gt; Designed from the ground up for phone viewports with clean touch targets, swipe actions, and one-tap clipboard pasting.&lt;/li&gt;
&lt;li&gt;⚡ &lt;strong&gt;High-Concurrency Go Engine:&lt;/strong&gt; Uses Go routines to handle parallel downloads, format resolution, and stream chunking with minimal memory overhead.&lt;/li&gt;
&lt;li&gt;🌐 &lt;strong&gt;Multi-Platform Support:&lt;/strong&gt; Downloads from hundreds of video platforms supported by &lt;code&gt;yt-dlp&lt;/code&gt; (TikTok, YouTube Shorts, Reddit, Instagram, X/Twitter, Vimeo).&lt;/li&gt;
&lt;li&gt;🚫 &lt;strong&gt;100% Ad-Free &amp;amp; Private:&lt;/strong&gt; Zero tracking scripts, zero popups, and no cookies stored on third-party servers.&lt;/li&gt;
&lt;li&gt;📦 &lt;strong&gt;Single Docker Container:&lt;/strong&gt; Ships with all required dependencies (&lt;code&gt;go&lt;/code&gt; binary, &lt;code&gt;ffmpeg&lt;/code&gt;, and &lt;code&gt;yt-dlp&lt;/code&gt;) pre-installed.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 Quick Start with Docker
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; kv-download &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; 8080:8080 &lt;span class="se"&gt;\&lt;/span&gt;
  vndangkhoa/kv-download:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;code&gt;http://&amp;lt;your-server-ip&amp;gt;:8080&lt;/code&gt; on your phone, tap "Add to Home Screen", and enjoy seamless video downloads on the go!&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 Check it Out on GitHub
&lt;/h2&gt;

&lt;p&gt;KV-Download is open-source under the MIT license:&lt;/p&gt;

&lt;p&gt;⭐ &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/vndangkhoa/kv-download" rel="noopener noreferrer"&gt;https://github.com/vndangkhoa/kv-download&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🐳 &lt;strong&gt;Docker Hub:&lt;/strong&gt; &lt;code&gt;vndangkhoa/kv-download&lt;/code&gt;&lt;/p&gt;

</description>
      <category>go</category>
      <category>selfhosted</category>
      <category>webdev</category>
      <category>docker</category>
    </item>
    <item>
      <title>Managing Synology NAS with AI: Building KV-Synology with a 42-Tool MCP Server</title>
      <dc:creator>Khoa.Vo</dc:creator>
      <pubDate>Wed, 23 Sep 2026 12:33:51 +0000</pubDate>
      <link>https://dev.to/khoavo/managing-synology-nas-with-ai-building-kv-synology-with-a-42-tool-mcp-server-1gi4</link>
      <guid>https://dev.to/khoavo/managing-synology-nas-with-ai-building-kv-synology-with-a-42-tool-mcp-server-1gi4</guid>
      <description>&lt;h1&gt;
  
  
  Managing Synology NAS with AI: Building KV-Synology with a 42-Tool MCP Server
&lt;/h1&gt;

&lt;p&gt;Synology DiskStation Manager (DSM) is arguably the gold standard of NAS operating systems. However, its native web desktop interface can feel heavy and latency-prone, especially over remote networks or on lower-power NAS hardware.&lt;/p&gt;

&lt;p&gt;Furthermore, with the rise of &lt;strong&gt;AI agents&lt;/strong&gt; like Claude, Gemini, and ChatGPT, managing complex NAS operations (storage pool health, container states, firewall rules, and automated backups) should be conversational and automated.&lt;/p&gt;

&lt;p&gt;To bridge this gap, I created &lt;strong&gt;&lt;a href="https://github.com/vndangkhoa/kv-synology" rel="noopener noreferrer"&gt;KV-Synology&lt;/a&gt;&lt;/strong&gt;: a modern, zero-telemetry management dashboard built with &lt;strong&gt;Next.js 15 &amp;amp; React 19&lt;/strong&gt;, combined with a native &lt;strong&gt;Model Context Protocol (MCP) AI Server&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎛️ What is KV-Synology?
&lt;/h2&gt;

&lt;p&gt;KV-Synology acts as an ultra-fast management layer over your Synology DSM:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Instant Response Times:&lt;/strong&gt; Built on Next.js 15.5, React 19, and Tailwind CSS v4, loading dashboard telemetry and volume metrics in milliseconds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Telemetry &amp;amp; Tracking:&lt;/strong&gt; No third-party analytics or phone-home requests; everything connects directly to your local DSM API endpoints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Container &amp;amp; Task Insights:&lt;/strong&gt; Real-time visibility into Docker / Container Manager stacks, CPU/RAM utilization, and temperature sensor readouts.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🤖 The AI Model Context Protocol (MCP) Server
&lt;/h2&gt;

&lt;p&gt;The most revolutionary part of KV-Synology is its native &lt;strong&gt;Model Context Protocol (MCP)&lt;/strong&gt; server equipped with &lt;strong&gt;42 dedicated management tools&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;By connecting KV-Synology to an AI client (Claude Desktop, Antigravity, Cursor, or Open-WebUI), your AI agent can safely execute structured tasks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User: "Check the health of my storage pools, report any failing SMART disks, and list any Docker containers using more than 2GB of RAM."

AI Agent:
  ➔ Calls `dsm_storage_pool_status`
  ➔ Calls `dsm_smart_disk_health`
  ➔ Calls `docker_container_stats`
  ➔ Synthesizes immediate actionable diagnostics!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Available MCP tool categories include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;System &amp;amp; Hardware Telemetry:&lt;/strong&gt; CPU load, RAM allocation, thermal sensors, fan speeds, and uptime.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage Management:&lt;/strong&gt; Volumes, storage pools, RAID scrub schedules, and SMART diagnostic logs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Container Manager:&lt;/strong&gt; Inspect, start, stop, restart, and retrieve logs for Docker containers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;File Operations &amp;amp; Shares:&lt;/strong&gt; Enumerate shared folders, permissions, and disk quotas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security &amp;amp; Firewalls:&lt;/strong&gt; Inspect active connection sockets, IP auto-block lists, and certificate expiry.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🚀 Quick Start with Docker
&lt;/h2&gt;

&lt;p&gt;You can run KV-Synology on your Synology NAS using Container Manager or Docker CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; kv-synology &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; 3000:3000 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;SYNO_HOST&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;192.168.1.100 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;SYNO_PORT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;5000 &lt;span class="se"&gt;\&lt;/span&gt;
  vndangkhoa/kv-synology:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔗 Check it Out on GitHub
&lt;/h2&gt;

&lt;p&gt;KV-Synology is open-source under the GPL-3.0 license:&lt;/p&gt;

&lt;p&gt;⭐ &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/vndangkhoa/kv-synology" rel="noopener noreferrer"&gt;https://github.com/vndangkhoa/kv-synology&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🐳 &lt;strong&gt;Docker Hub:&lt;/strong&gt; &lt;code&gt;vndangkhoa/kv-synology&lt;/code&gt;&lt;/p&gt;

</description>
      <category>synology</category>
      <category>ai</category>
      <category>nextjs</category>
      <category>devops</category>
    </item>
    <item>
      <title>Building Ola: Anti-Leak DRM Video Review &amp; Media Explorer for Synology NAS</title>
      <dc:creator>Khoa.Vo</dc:creator>
      <pubDate>Wed, 23 Sep 2026 12:33:18 +0000</pubDate>
      <link>https://dev.to/khoavo/building-ola-anti-leak-drm-video-review-media-explorer-for-synology-nas-4ik0</link>
      <guid>https://dev.to/khoavo/building-ola-anti-leak-drm-video-review-media-explorer-for-synology-nas-4ik0</guid>
      <description>&lt;h1&gt;
  
  
  Building Ola: Anti-Leak DRM Video Review &amp;amp; Media Explorer for Synology NAS
&lt;/h1&gt;

&lt;p&gt;Creative video production houses, visual effects studios, and post-production agencies frequently face a dangerous problem: &lt;strong&gt;unreleased video leaks&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When sharing early cuts, client approvals, or commercial drafts with external stakeholders:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sharing raw files via Google Drive or Dropbox leaves video files completely unprotected against screen recording, ripping, or unauthorized redistribution.&lt;/li&gt;
&lt;li&gt;Commercial review SaaS platforms (like Frame.io) charge steep per-seat monthly subscription fees and require moving gigabytes of sensitive raw footage out of your local studio NAS into foreign cloud storage.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To give creative studios enterprise-grade video review security hosted entirely on their own infrastructure, I built &lt;strong&gt;&lt;a href="https://github.com/vndangkhoa/ola" rel="noopener noreferrer"&gt;Ola&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛡️ What is Ola?
&lt;/h2&gt;

&lt;p&gt;Ola is a self-hosted media explorer and client review platform engineered specifically for &lt;strong&gt;Synology NAS (DSM 7.x &amp;amp; 6.x)&lt;/strong&gt; and Docker environments:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Forensic Anti-Leak DRM Video Player
&lt;/h3&gt;

&lt;p&gt;When a client or external collaborator views an unreleased video:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic Floating Watermarks:&lt;/strong&gt; Renders the client's email, IP address, and dynamic timestamp moving smoothly across the video frames, discouraging camera recording and screen captures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Encrypted Media Chunks:&lt;/strong&gt; Media streams are segmented and encrypted on the fly via Go memory buffers, preventing straightforward browser devtools media downloads.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expiry &amp;amp; Password Controls:&lt;/strong&gt; Granular access tokens with time-decay links and view limits.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Dual-Pane Studio File Manager
&lt;/h3&gt;

&lt;p&gt;Creative directors and editors can navigate studio storage pools using an ergonomic dual-pane split view, comparing project folders and moving render assets seamlessly.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Zero-Config P2P Tunnels
&lt;/h3&gt;

&lt;p&gt;Ola includes automated secure tunneling, allowing clients outside your local office network to access review portals without complex router port-forwarding or public IP exposure.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Native Synology SPK &amp;amp; Docker
&lt;/h3&gt;

&lt;p&gt;Ships as a native &lt;code&gt;.spk&lt;/code&gt; package installable directly through Synology DSM Package Center, as well as a Docker container for general Linux servers.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Quick Start with Docker
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; ola-user &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; 8080:8080 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; /volume1/projects:/data &lt;span class="se"&gt;\&lt;/span&gt;
  vndangkhoa/ola-user:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;code&gt;http://localhost:8080&lt;/code&gt; to initialize the studio workspace.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 Check it Out on GitHub
&lt;/h2&gt;

&lt;p&gt;Ola is open-source under the MIT license:&lt;/p&gt;

&lt;p&gt;⭐ &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/vndangkhoa/ola" rel="noopener noreferrer"&gt;https://github.com/vndangkhoa/ola&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🐳 &lt;strong&gt;Docker Hub:&lt;/strong&gt; &lt;code&gt;vndangkhoa/ola-user&lt;/code&gt;&lt;/p&gt;

</description>
      <category>synology</category>
      <category>security</category>
      <category>go</category>
      <category>selfhosted</category>
    </item>
    <item>
      <title>KV-Music: Self-Hosted YouTube Music Streamer with Rust Axum, React 19 &amp; Synced Lyrics</title>
      <dc:creator>Khoa.Vo</dc:creator>
      <pubDate>Wed, 23 Sep 2026 12:32:45 +0000</pubDate>
      <link>https://dev.to/khoavo/kv-music-self-hosted-youtube-music-streamer-with-rust-axum-react-19-synced-lyrics-4k48</link>
      <guid>https://dev.to/khoavo/kv-music-self-hosted-youtube-music-streamer-with-rust-axum-react-19-synced-lyrics-4k48</guid>
      <description>&lt;h1&gt;
  
  
  KV-Music: Self-Hosted YouTube Music Streamer with Rust Axum, React 19 &amp;amp; Synced Lyrics
&lt;/h1&gt;

&lt;p&gt;Commercial music streaming services lock your playlists into walled gardens, collect invasive listening habit metrics, and continuously hike subscription prices.&lt;/p&gt;

&lt;p&gt;While Spotify and Apple Music dominate the mainstream, YouTube Music actually hosts the largest catalog of obscure remixes, live concerts, anime OSTs, and independent indie releases on the internet.&lt;/p&gt;

&lt;p&gt;To create the ultimate private music portal, I built &lt;strong&gt;&lt;a href="https://github.com/vndangkhoa/kv-music" rel="noopener noreferrer"&gt;KV-Music&lt;/a&gt;&lt;/strong&gt;: a high-performance web player and sync hub powered by a &lt;strong&gt;Rust Axum&lt;/strong&gt; backend and a &lt;strong&gt;React 19&lt;/strong&gt; frontend.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎧 What Makes KV-Music Special?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. The Entire YouTube Music Catalog, Self-Hosted
&lt;/h3&gt;

&lt;p&gt;Stream millions of songs, albums, and user playlists directly without ads or intrusive sponsored breaks.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Time-Synced Dynamic Lyrics
&lt;/h3&gt;

&lt;p&gt;Enjoy real-time karaoke-style lyric scrolling synced down to the millisecond. It queries open lyric databases (LRCLIB) and embeds dynamic syllable highlights.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Multi-Device Pairing &amp;amp; Sync
&lt;/h3&gt;

&lt;p&gt;Pair your mobile phone, laptop, and living room TV with a simple 6-digit sync code or QR code. Playlists, favorite tracks, and listening queue states stay updated everywhere in real-time over WebSockets.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. High-Performance Rust (Axum) Backend
&lt;/h3&gt;

&lt;p&gt;Audio caching, metadata parsing, and stream chunking are driven by &lt;strong&gt;Rust 1.88+ and Axum&lt;/strong&gt;, achieving sub-10ms response times while using under &lt;strong&gt;20 MB of RAM&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Native Android App (Kotlin)
&lt;/h3&gt;

&lt;p&gt;In addition to the progressive web app (PWA), KV-Music includes a native &lt;strong&gt;Android companion app&lt;/strong&gt; written in Kotlin, featuring system media notification integration, lockscreen scrubber, and Android Auto support.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Quick Start with Docker
&lt;/h2&gt;

&lt;p&gt;Run KV-Music with Docker in seconds:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; kv-music &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; 8080:8080 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; ./kv-music-data:/data &lt;span class="se"&gt;\&lt;/span&gt;
  vndangkhoa/kv-music:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;code&gt;http://localhost:8080&lt;/code&gt; to start streaming your favorite tracks!&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 Check it Out on GitHub
&lt;/h2&gt;

&lt;p&gt;KV-Music is open-source under the MIT license:&lt;/p&gt;

&lt;p&gt;⭐ &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/vndangkhoa/kv-music" rel="noopener noreferrer"&gt;https://github.com/vndangkhoa/kv-music&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🐳 &lt;strong&gt;Docker Hub:&lt;/strong&gt; &lt;code&gt;vndangkhoa/kv-music&lt;/code&gt;&lt;/p&gt;

</description>
      <category>selfhosted</category>
      <category>rust</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>KV-Tidal: Bit-Perfect Audiophile Streaming &amp; OpenSubsonic Server for Synology NAS</title>
      <dc:creator>Khoa.Vo</dc:creator>
      <pubDate>Wed, 23 Sep 2026 12:32:12 +0000</pubDate>
      <link>https://dev.to/khoavo/kv-tidal-bit-perfect-audiophile-streaming-opensubsonic-server-for-synology-nas-25a</link>
      <guid>https://dev.to/khoavo/kv-tidal-bit-perfect-audiophile-streaming-opensubsonic-server-for-synology-nas-25a</guid>
      <description>&lt;h1&gt;
  
  
  KV-Tidal: Bit-Perfect Audiophile Streaming &amp;amp; OpenSubsonic Server for Synology NAS
&lt;/h1&gt;

&lt;p&gt;For music lovers and homelab audiophiles, streaming high-resolution lossless music (24-bit/192kHz FLAC, ALAC, and DSD) usually requires juggling fragmented tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Running heavy desktop clients like Roon (costing hundreds of dollars).&lt;/li&gt;
&lt;li&gt;Setting up complex Subsonic servers that transcode or downsample audio streams.&lt;/li&gt;
&lt;li&gt;Manually hunting for rare, out-of-print lossless releases on desktop P2P clients.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted a single, unified homelab solution designed specifically for &lt;strong&gt;Synology NAS&lt;/strong&gt; and high-fidelity sound systems.&lt;/p&gt;

&lt;p&gt;That is why I created &lt;strong&gt;&lt;a href="https://github.com/vndangkhoa/kv-tidal" rel="noopener noreferrer"&gt;KV-Tidal&lt;/a&gt;&lt;/strong&gt;: an audiophile vault and streaming platform supporting native Synology SPK packages, Docker, Soulseek P2P, and the OpenSubsonic ecosystem.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎵 What Makes KV-Tidal Unique?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Bit-Perfect Studio Master Streaming
&lt;/h3&gt;

&lt;p&gt;KV-Tidal never compromises audio fidelity. It streams direct, uncompressed master audio:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Up to 24-bit / 192kHz FLAC &amp;amp; WAV&lt;/strong&gt; bit-perfect streaming.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DSD / DSF Direct Stream Digital&lt;/strong&gt; playback.&lt;/li&gt;
&lt;li&gt;Lossless gapless playback engine built with Rust (Axum + Tokio) for zero-latency buffering.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Built-in OpenSubsonic Server Protocol
&lt;/h3&gt;

&lt;p&gt;KV-Tidal speaks the standardized &lt;strong&gt;OpenSubsonic v1.16.1 API&lt;/strong&gt;. That means you can connect any existing desktop or mobile Subsonic app:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;iOS:&lt;/strong&gt; Symfonium, iSub, substreamer, play:Sub.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Android:&lt;/strong&gt; Symfonium, DSub, Tempo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Desktop:&lt;/strong&gt; Feishin, Supersonic, Clementine.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You get your private, self-hosted music library in your pocket everywhere you go.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Native Bundled Soulseek P2P Lossless Engine
&lt;/h3&gt;

&lt;p&gt;One of KV-Tidal's most distinctive features is an embedded &lt;strong&gt;Soulseek P2P client&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search for rare vinyl rips, Japanese CD editions, and uncompressed studio masters directly inside the web UI.&lt;/li&gt;
&lt;li&gt;Download directly into your NAS music folder with automatic ID3 tagging and cover art embedding.&lt;/li&gt;
&lt;li&gt;No need to run separate desktop clients or wine wrappers on your server.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Native Synology SPK + Docker Support
&lt;/h3&gt;

&lt;p&gt;KV-Tidal ships as both a native &lt;strong&gt;Synology DSM 7.x Package (&lt;code&gt;.spk&lt;/code&gt;)&lt;/strong&gt; and a multi-architecture Docker container:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Installs in DSM Package Center with 1 click.&lt;/li&gt;
&lt;li&gt;Binds directly to Synology hardware audio interfaces and USB DACs.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 Quick Start with Docker
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; kv-tidal &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; 3000:3000 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; /volume1/music:/music &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; ./kv-tidal-config:/config &lt;span class="se"&gt;\&lt;/span&gt;
  vndangkhoa/kv-tidal:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;code&gt;http://&amp;lt;your-nas-ip&amp;gt;:3000&lt;/code&gt; to access the audiophile portal.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 Check it Out on GitHub
&lt;/h2&gt;

&lt;p&gt;KV-Tidal is open-source under the MIT license:&lt;/p&gt;

&lt;p&gt;⭐ &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/vndangkhoa/kv-tidal" rel="noopener noreferrer"&gt;https://github.com/vndangkhoa/kv-tidal&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🐳 &lt;strong&gt;Docker Hub:&lt;/strong&gt; &lt;code&gt;vndangkhoa/kv-tidal&lt;/code&gt;&lt;/p&gt;

</description>
      <category>audio</category>
      <category>synology</category>
      <category>selfhosted</category>
      <category>rust</category>
    </item>
    <item>
      <title>KV-Tube: How I Built a Self-Hosted YouTube Alternative in a Single Docker Container</title>
      <dc:creator>Khoa.Vo</dc:creator>
      <pubDate>Wed, 23 Sep 2026 12:29:18 +0000</pubDate>
      <link>https://dev.to/khoavo/kv-tube-how-i-built-a-self-hosted-youtube-alternative-in-a-single-docker-container-4p3</link>
      <guid>https://dev.to/khoavo/kv-tube-how-i-built-a-self-hosted-youtube-alternative-in-a-single-docker-container-4p3</guid>
      <description>&lt;h1&gt;
  
  
  KV-Tube: How I Built a Self-Hosted YouTube Alternative in a Single Docker Container
&lt;/h1&gt;

&lt;p&gt;Modern video streaming platforms have become increasingly cluttered with unskippable multi-minute ads, invasive user tracking, sponsored segments, and algorithmic rabbit holes designed to maximize watch-time rather than user value.&lt;/p&gt;

&lt;p&gt;Alternative frontends like Invidious or Piped exist, but managing their multi-service container stacks, external PostgreSQL instances, and fragile public API proxies can be difficult to maintain on a personal server.&lt;/p&gt;

&lt;p&gt;I wanted a clean, self-contained solution: a single Docker container that provides a lightning-fast, private YouTube streaming experience with built-in sponsor skipping, playlist sync, and a responsive interface that works just as well on Android TV as it does on a desktop browser.&lt;/p&gt;

&lt;p&gt;That project is &lt;strong&gt;&lt;a href="https://github.com/vndangkhoa/kv-tube" rel="noopener noreferrer"&gt;KV-Tube&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎬 What is KV-Tube?
&lt;/h2&gt;

&lt;p&gt;KV-Tube is a self-hosted web portal that lets you watch YouTube content in up to 4K resolution with complete privacy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🚫 &lt;strong&gt;Zero Ads &amp;amp; Trackers:&lt;/strong&gt; Direct video streams without ad interruptions or behavioral profiling.&lt;/li&gt;
&lt;li&gt;⚡ &lt;strong&gt;SponsorBlock Built-in:&lt;/strong&gt; Automatically skips in-video sponsorship segments, intros, self-promotions, and end credits.&lt;/li&gt;
&lt;li&gt;📺 &lt;strong&gt;Android TV &amp;amp; Smart Remote Friendly:&lt;/strong&gt; Keyboard, remote D-pad, and touch-optimized navigation.&lt;/li&gt;
&lt;li&gt;🔄 &lt;strong&gt;Cross-Device Watch History:&lt;/strong&gt; Sync watch progress and custom playlists across your phone, tablet, and PC without needing a Google account.&lt;/li&gt;
&lt;li&gt;🎵 &lt;strong&gt;Background Audio Playback:&lt;/strong&gt; Listen to podcasts, talks, and music in the background with full lockscreen media controls.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🏗️ Architecture: Go Backend + Next.js Frontend in One Container
&lt;/h2&gt;

&lt;p&gt;A common complaint with self-hosted web apps is multi-container overhead. For KV-Tube, the entire system is bundled into &lt;strong&gt;one cohesive Docker image&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌────────────────────────────────────────────────────────┐
│                   KV-Tube Container                    │
│                                                        │
│   ┌─────────────────────┐      ┌───────────────────┐   │
│   │ Next.js Frontend    │      │ Go Stream Server  │   │
│   │ Modern Responsive UI│◄────►│ Async API Engine  │   │
│   │ (PWA + TV Layout)   │      │ (SponsorBlock/DB) │   │
│   └─────────────────────┘      └─────────┬─────────┘   │
│                                          │             │
│                                ┌─────────▼─────────┐   │
│                                │ Embedded SQLite   │   │
│                                │ History &amp;amp; Config  │   │
│                                └───────────────────┘   │
└────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Go API Service:&lt;/strong&gt; The backend is written in &lt;strong&gt;Go&lt;/strong&gt;, offering high-concurrency throughput, minimal memory usage, and near-instant cold starts. It handles metadata extraction, video stream URL resolution, and proxy caching.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Next.js Interface:&lt;/strong&gt; Built with &lt;strong&gt;Next.js&lt;/strong&gt;, Tailwind CSS, and Lucide icons, offering smooth client-side routing, instant search suggestions, and a theater viewing mode.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Embedded SQLite:&lt;/strong&gt; All user data (watch progress, liked videos, history, and custom subscriptions) is stored in a lightweight local SQLite database—no external PostgreSQL or Redis dependencies required.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  ⚡ SponsorBlock Integration
&lt;/h2&gt;

&lt;p&gt;KV-Tube integrates directly with the crowd-sourced &lt;strong&gt;SponsorBlock API&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When a video plays, KV-Tube queries known sponsor timestamps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The video player tracks playback time and automatically leaps over sponsor segments without audible audio blips.&lt;/li&gt;
&lt;li&gt;The playback scrubber visually marks sponsor segments in distinct colors (sponsor, intro, outro, self-promotion).&lt;/li&gt;
&lt;li&gt;Users can toggle which segment types they wish to skip or show in settings.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 Quick Start with Docker
&lt;/h2&gt;

&lt;p&gt;You can spin up KV-Tube in seconds with Docker:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; kv-tube &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; 8080:8080 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; ./kv-tube-data:/app/data &lt;span class="se"&gt;\&lt;/span&gt;
  vndangkhoa/kv-tube:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or with &lt;code&gt;docker-compose.yml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;3.8'&lt;/span&gt;

&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;kv-tube&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;vndangkhoa/kv-tube:latest&lt;/span&gt;
    &lt;span class="na"&gt;container_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;kv-tube&lt;/span&gt;
    &lt;span class="na"&gt;restart&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;unless-stopped&lt;/span&gt;
    &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;8080:8080"&lt;/span&gt;
    &lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;./kv-tube-data:/app/data&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Access your private streaming portal at &lt;code&gt;http://localhost:8080&lt;/code&gt;!&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 Check it Out on GitHub
&lt;/h2&gt;

&lt;p&gt;KV-Tube is 100% open-source under the MIT license:&lt;/p&gt;

&lt;p&gt;⭐ &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/vndangkhoa/kv-tube" rel="noopener noreferrer"&gt;https://github.com/vndangkhoa/kv-tube&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🐳 &lt;strong&gt;Docker Hub:&lt;/strong&gt; &lt;code&gt;vndangkhoa/kv-tube&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Feel free to open issues, contribute, or drop a star if you find it helpful!&lt;/p&gt;

</description>
      <category>selfhosted</category>
      <category>go</category>
      <category>nextjs</category>
      <category>docker</category>
    </item>
    <item>
      <title>Designing a Procedural Tetris-Tiled Homelab Dashboard with a Zero-Dependency Backend</title>
      <dc:creator>Khoa.Vo</dc:creator>
      <pubDate>Wed, 23 Sep 2026 12:28:45 +0000</pubDate>
      <link>https://dev.to/khoavo/designing-a-procedural-tetris-tiled-homelab-dashboard-with-a-zero-dependency-backend-19dk</link>
      <guid>https://dev.to/khoavo/designing-a-procedural-tetris-tiled-homelab-dashboard-with-a-zero-dependency-backend-19dk</guid>
      <description>&lt;h1&gt;
  
  
  Designing a Procedural Tetris-Tiled Homelab Dashboard with a Zero-Dependency Backend
&lt;/h1&gt;

&lt;p&gt;If you browse r/homelab or self-hosted communities, you'll see dozens of dashboards: &lt;strong&gt;Homepage&lt;/strong&gt;, &lt;strong&gt;Dashy&lt;/strong&gt;, &lt;strong&gt;Flame&lt;/strong&gt;, &lt;strong&gt;Homer&lt;/strong&gt;, and others.&lt;/p&gt;

&lt;p&gt;While they are capable tools, they often suffer from two common design patterns:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Visual Monotony:&lt;/strong&gt; Almost every dashboard is either a flat 12-column CSS grid or a list of bootstrap cards. After a while, they all look the same.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependency Bloat:&lt;/strong&gt; Running a dashboard often requires dozens of npm dependencies or external authentication proxies (like Authelia or Authentik) just to protect access.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I wanted a personal launchpad that was playful, visually striking, yet rock-solid and secure.&lt;/p&gt;

&lt;p&gt;That inspired &lt;strong&gt;&lt;a href="https://github.com/vndangkhoa/kv-home" rel="noopener noreferrer"&gt;KV Home&lt;/a&gt;&lt;/strong&gt;: a procedural Tetris-tiling personal dashboard and homelab hub.&lt;/p&gt;




&lt;h2&gt;
  
  
  🕹️ The Procedural Tetris Layout Engine
&lt;/h2&gt;

&lt;p&gt;Instead of placing cards into rigid rectangular slots, KV Home uses an in-browser &lt;strong&gt;backtracking constraint solver&lt;/strong&gt; to pack your service links into interlocking &lt;strong&gt;tetromino shapes (I, J, L, O, S, T, Z)&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌────────────────────────────────────────────────────────────────────────────────────────┐
│ [🕹️ KV Home]                             [🎲 Re-roll] [🌙 Dark] [⚙️ Admin (Ctrl+Shift+A)] │
├────────────────────────────────────────────────────────────────────────────────────────┤
│   ┌──────────────┐┌──────────────┐┌────────────────────────────┐┌──────────────┐      │
│   │ 📁 KV Files  ││ 🔮 SysVis.AI ││ 📥 KV-DL Downloader        ││ 🌐 Blog      │      │
│   │ Rust Manager ││ System AI    ││ Zero-Disk YouTube Engine   ││ Tech Notes   │      │
│   └──────┬───────┘└──────┬───────┘└─────────────┬──────────────┘└──────┬───────┘      │
│          │ ┌─────────────┴┐ ┌───────────────────┴──┐ ┌─────────────────┴────┐          │
│          │ │ 📺 Jellyfin  │ │ 🐳 Portainer Stack   │ │ 📊 Grafana Metrics   │          │
│          │ │ 4K Media     │ │ Docker Services      │ │ Cluster Monitor      │          │
│          └─┴──────────────┘ └──────────────────────┘ └──────────────────────┘          │
└────────────────────────────────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  How the Layout Solver Works:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Aspect Ratio Analysis:&lt;/strong&gt; The engine evaluates the client's screen width and determines the optimal grid matrix size.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tetromino Fitting:&lt;/strong&gt; A recursive backtracking algorithm tiles the matrix with zero empty holes, assigning random tetromino geometries to each of your services.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SVG &lt;code&gt;clipPath&lt;/code&gt; Rendering:&lt;/strong&gt; Using dynamic SVG clipping and CSS &lt;code&gt;calc()&lt;/code&gt;, individual blocks form continuous geometric shapes with consistent gutters and zero visual seams.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive Re-Roll:&lt;/strong&gt; Click the &lt;strong&gt;🎲 Re-roll&lt;/strong&gt; button or press space, and the engine re-seeds the solver, animating new falling tetrominoes into position!&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🔒 Hardened Zero-Dependency Node.js Backend
&lt;/h2&gt;

&lt;p&gt;One of my core design goals was eliminating runtime third-party dependency vulnerabilities.&lt;/p&gt;

&lt;p&gt;The KV Home backend uses &lt;strong&gt;only standard Node.js built-in modules&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;node:http&lt;/code&gt;: Fast native HTTP/1.1 request handling.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;node:crypto&lt;/code&gt;: High-speed cryptographic operations.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;node:fs&lt;/code&gt; / &lt;code&gt;node:path&lt;/code&gt;: Local configuration persistence and asset serving.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Zero third-party npm packages are loaded in production.&lt;/strong&gt; This dramatically minimizes security attack surfaces and memory overhead.&lt;/p&gt;

&lt;h3&gt;
  
  
  Built-in RFC 6238 TOTP 2FA
&lt;/h3&gt;

&lt;p&gt;Securing your homelab dashboard usually involves configuring a complex reverse proxy with OAuth/OIDC.&lt;/p&gt;

&lt;p&gt;KV Home includes a native implementation of &lt;strong&gt;RFC 6238 Time-Based One-Time Passwords (TOTP)&lt;/strong&gt; written with &lt;code&gt;node:crypto&lt;/code&gt;. You can scan a QR code with Google Authenticator, 1Password, or Bitwarden directly from the setup wizard, providing robust 2-factor protection out of the box with zero external dependencies.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ Live In-Place Admin Mode (&lt;code&gt;Ctrl + Shift + A&lt;/code&gt;)
&lt;/h2&gt;

&lt;p&gt;No need to open terminal sessions, edit YAML files, and reload Docker containers every time you add a new service.&lt;/p&gt;

&lt;p&gt;Pressing &lt;code&gt;Ctrl + Shift + A&lt;/code&gt; activates &lt;strong&gt;In-Place Admin Mode&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add new service cards and category tags directly on the dashboard.&lt;/li&gt;
&lt;li&gt;Pick icons, custom accents, and health-check endpoints.&lt;/li&gt;
&lt;li&gt;Rearrange priorities with real-time multi-device sync.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 Quick Start with Docker
&lt;/h2&gt;

&lt;p&gt;Deploy KV Home in seconds:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; kv-home &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; 3000:3000 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; ./kv-home-data:/app/data &lt;span class="se"&gt;\&lt;/span&gt;
  vndangkhoa/kv-home:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;code&gt;http://localhost:3000&lt;/code&gt; to experience your new homelab hub.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 Check it Out on GitHub
&lt;/h2&gt;

&lt;p&gt;KV Home is completely open-source under the MIT license:&lt;/p&gt;

&lt;p&gt;⭐ &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/vndangkhoa/kv-home" rel="noopener noreferrer"&gt;https://github.com/vndangkhoa/kv-home&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🐳 &lt;strong&gt;Docker Hub:&lt;/strong&gt; &lt;code&gt;vndangkhoa/kv-home&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Give your homelab a fresh, tactile look!&lt;/p&gt;

</description>
      <category>selfhosted</category>
      <category>react</category>
      <category>node</category>
      <category>docker</category>
    </item>
    <item>
      <title>SysVis.AI: Running Architecture Diagramming AI 100% Locally in the Browser with WebGPU</title>
      <dc:creator>Khoa.Vo</dc:creator>
      <pubDate>Wed, 23 Sep 2026 12:28:12 +0000</pubDate>
      <link>https://dev.to/khoavo/sysvisai-running-architecture-diagramming-ai-100-locally-in-the-browser-with-webgpu-33h3</link>
      <guid>https://dev.to/khoavo/sysvisai-running-architecture-diagramming-ai-100-locally-in-the-browser-with-webgpu-33h3</guid>
      <description>&lt;h1&gt;
  
  
  SysVis.AI: Running Architecture Diagramming AI 100% Locally in the Browser with WebGPU
&lt;/h1&gt;

&lt;p&gt;Creating clear, accurate system architecture diagrams is one of the most important—and tedious—parts of software engineering.&lt;/p&gt;

&lt;p&gt;Typically, engineers find themselves choosing between:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Manual Canvas Editors (Draw.io, Lucidchart):&lt;/strong&gt; Endless nudging of boxes, misaligned connector arrows, and zero semantic awareness of system design.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Text-to-Diagram Tools (Mermaid, PlantUML):&lt;/strong&gt; Great for code versioning, but rigid to lay out visually and painful to iterate on with non-technical stakeholders.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud AI SaaS Platforms (Eraser.io):&lt;/strong&gt; Beautiful, but requires uploading sensitive infrastructure topologies, internal microservice names, and proprietary IPs to third-party cloud servers.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To combine the fluidity of AI diagram generation with complete privacy, I built &lt;strong&gt;&lt;a href="https://github.com/vndangkhoa/Sys-Arc-Visl" rel="noopener noreferrer"&gt;SysVis.AI (kv-graph)&lt;/a&gt;&lt;/strong&gt;: an open-source, local-first system architecture visualizer that runs &lt;strong&gt;100% privately in your browser using WebGPU&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔮 The Core Concept: Local-First In-Browser AI
&lt;/h2&gt;

&lt;p&gt;SysVis.AI leverages the browser's &lt;strong&gt;WebGPU&lt;/strong&gt; standard to execute modern compact neural networks directly on your client GPU:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Text-to-Diagram:&lt;/strong&gt; Runs a fine-tuned &lt;strong&gt;Qwen3&lt;/strong&gt; language model compiled via WebLLM to translate natural language prompts (&lt;em&gt;"Design a real-time event streaming pipeline with Kafka, ClickHouse, and Grafana"&lt;/em&gt;) into structured diagram graphs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vision-to-Diagram:&lt;/strong&gt; Runs an in-browser vision transformer (&lt;strong&gt;ViT-GPT2&lt;/strong&gt;) to analyze uploaded whiteboard sketches, hand-drawn paper designs, or AWS architecture screenshots and convert them into live editable nodes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Cloud Leakage:&lt;/strong&gt; All inference happens directly inside your browser tab. No prompts, architecture data, or uploaded sketches ever leave your machine.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;(Note: For users without WebGPU-capable hardware, optional cloud backends such as Google Gemini, OpenAI, or a self-hosted Ollama server can be connected with a single toggle.)&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🎨 Bidirectional Code &amp;amp; Canvas Synchronization
&lt;/h2&gt;

&lt;p&gt;One of the biggest frustrations with visual diagram tools is vendor lock-in. SysVis.AI solves this by keeping a &lt;strong&gt;live bidirectional link&lt;/strong&gt; between code and canvas:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌──────────────────────────────────────┬─────────────────────────────────────────────────┐
│ 📝 Monaco Editor (Bidirectional)     │ 🎨 Interactive Canvas (XY Flow + Dagre)         │
│                                      │                                                 │
│ graph TD                             │     ┌──────────────┐                            │
│   Client[API Gateway]                │     │ API Gateway  │                            │
│   Client --&amp;gt; Auth[Auth Service]      │     └──────┬───────┘                            │
│   Client --&amp;gt; Cache[(Redis Cluster)]  │            │                                    │
│   Client --&amp;gt; DB[(PostgreSQL)]        │     ┌──────▼───────┐      ┌─────────────────┐   │
│                                      │     │ Auth Service │ ───▶ │ Redis (In-Mem)  │   │
│                                      │     └──────────────┘      └─────────────────┘   │
│                                      │            │                                    │
│                                      │     ┌──────▼───────┐                            │
│                                      │     │  PostgreSQL  │                            │
│                                      │     └──────────────┘                            │
└──────────────────────────────────────┴─────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Edit Code:&lt;/strong&gt; Update your Mermaid syntax in the embedded Monaco editor, and the visual canvas updates in real time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Drag &amp;amp; Rewire:&lt;/strong&gt; Drag nodes, rewire edge connectors, or resize components on the XY Flow canvas, and the Monaco text updates automatically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-Healing Auto-Layout:&lt;/strong&gt; Powered by the &lt;strong&gt;Dagre&lt;/strong&gt; layout engine, automatically resolving collision detection, orthogonal wire routing, and proper hierarchy layering with one click.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📤 Rich Export Options
&lt;/h2&gt;

&lt;p&gt;When your architecture diagram is ready, you can export it in multiple developer-friendly formats:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mermaid Markdown:&lt;/strong&gt; Ready to paste into GitHub READMEs, Notion, or internal wikis.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React Flow Component:&lt;/strong&gt; Export the diagram as standalone, fully typed React code with components and CSS that can be dropped straight into your web app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vector SVG &amp;amp; 3x High-Res PNG:&lt;/strong&gt; Crisp, transparent renders perfect for slide decks and enterprise documentation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full JSON State:&lt;/strong&gt; Import and resume your canvas state at any time.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 Quick Start with Docker
&lt;/h2&gt;

&lt;p&gt;You can run SysVis.AI locally or self-host it on your homelab with Docker:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; sys-arc-visl &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; 5173:5173 &lt;span class="se"&gt;\&lt;/span&gt;
  vndangkhoa/sys-arc-visl:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Navigate to &lt;code&gt;http://localhost:5173&lt;/code&gt; and start creating production-grade system diagrams right away.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 Check it Out on GitHub
&lt;/h2&gt;

&lt;p&gt;SysVis.AI is open-source under the MIT license:&lt;/p&gt;

&lt;p&gt;⭐ &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/vndangkhoa/Sys-Arc-Visl" rel="noopener noreferrer"&gt;https://github.com/vndangkhoa/Sys-Arc-Visl&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🐳 &lt;strong&gt;Docker Hub:&lt;/strong&gt; &lt;code&gt;vndangkhoa/sys-arc-visl&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Try it out with your next system design or whiteboard session!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webgpu</category>
      <category>javascript</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Zero-Disk YouTube Downloader: How I Used Rust &amp; Linux Kernel FIFOs for High-Throughput Streaming</title>
      <dc:creator>Khoa.Vo</dc:creator>
      <pubDate>Wed, 23 Sep 2026 12:27:39 +0000</pubDate>
      <link>https://dev.to/khoavo/zero-disk-youtube-downloader-how-i-used-rust-linux-kernel-fifos-for-high-throughput-streaming-28m8</link>
      <guid>https://dev.to/khoavo/zero-disk-youtube-downloader-how-i-used-rust-linux-kernel-fifos-for-high-throughput-streaming-28m8</guid>
      <description>&lt;h1&gt;
  
  
  Zero-Disk YouTube Downloader: How I Used Rust &amp;amp; Linux Kernel FIFOs for High-Throughput Streaming
&lt;/h1&gt;

&lt;p&gt;Most self-hosted YouTube and media downloaders (like MeTube, YoutubeDL-Material, or standard wrapper scripts) follow the same sequential workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Client submits a URL.&lt;/li&gt;
&lt;li&gt;Server spawns &lt;code&gt;yt-dlp&lt;/code&gt; to download the entire video track and audio track onto the server's hard drive or SSD.&lt;/li&gt;
&lt;li&gt;Server executes &lt;code&gt;ffmpeg&lt;/code&gt; to mux both files into an &lt;code&gt;.mp4&lt;/code&gt; container on disk.&lt;/li&gt;
&lt;li&gt;Server serves the resulting file to the client browser over HTTP.&lt;/li&gt;
&lt;li&gt;A background cleanup job eventually deletes the temporary file from disk.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;While straightforward, this approach has fatal drawbacks for homelabs and small VPS instances:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Severe Disk Wear:&lt;/strong&gt; Downloading 4K or 1080p60 videos creates gigabytes of redundant read/write cycles on your host SSD.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latency Delay:&lt;/strong&gt; The user must wait until the &lt;em&gt;entire&lt;/em&gt; media file finishes downloading and transcoding on the server before the browser download even begins.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;YouTube Throttling:&lt;/strong&gt; Unoptimized single-stream downloads frequently get throttled down to sluggish speeds.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I built &lt;strong&gt;&lt;a href="https://github.com/vndangkhoa/kv-dl" rel="noopener noreferrer"&gt;KV-DL&lt;/a&gt;&lt;/strong&gt; to rethink this pipeline from the ground up.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ The Solution: The Zero-Disk Kernel FIFO Pipeline
&lt;/h2&gt;

&lt;p&gt;KV-DL does not write a single byte of video or audio to your server's storage. Everything is streamed in-memory and multiplexed in real-time through &lt;strong&gt;Linux kernel named pipes (FIFOs)&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yt-dlp (Video Stream) ──▶ FIFO #1 ─┐
                                   ├──▶ ffmpeg (RAM Muxer) ──▶ Fragmented MP4 ──▶ Browser Client
yt-dlp (Audio Stream) ──▶ FIFO #2 ─┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here is how the end-to-end data flow works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Format Resolution:&lt;/strong&gt; When the user enters a video or playlist URL, the Rust backend queries &lt;code&gt;yt-dlp&lt;/code&gt; in JSON mode to extract title, thumbnail, and stream bitrate options.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Named Pipe Creation:&lt;/strong&gt; Upon download request, the backend creates two temporary POSIX FIFOs (&lt;code&gt;mkfifo&lt;/code&gt;) inside a volatile in-memory filesystem (&lt;code&gt;/dev/shm&lt;/code&gt; or RAM).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Concurrent Stream Feeding:&lt;/strong&gt; &lt;code&gt;yt-dlp&lt;/code&gt; fetches high-speed HTTP chunk ranges from YouTube and pipes raw H.264/AV1 video into FIFO #1 and AAC/Opus audio into FIFO #2.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;On-the-Fly Multiplexing:&lt;/strong&gt; &lt;code&gt;ffmpeg&lt;/code&gt; reads directly from both FIFOs simultaneously. It merges the video and audio containers without re-encoding (&lt;code&gt;-c copy&lt;/code&gt;) and emits &lt;strong&gt;fragmented MP4 (&lt;code&gt;-movflags frag_keyframe+empty_moov&lt;/code&gt;)&lt;/strong&gt; directly to &lt;code&gt;stdout&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streaming HTTP Response:&lt;/strong&gt; The Rust &lt;strong&gt;Axum&lt;/strong&gt; web framework streams &lt;code&gt;stdout&lt;/code&gt; directly into the HTTP response body as chunked transfer encoding (&lt;code&gt;Transfer-Encoding: chunked&lt;/code&gt;).&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Why Fragmented MP4?
&lt;/h3&gt;

&lt;p&gt;Standard MP4 files require an index atom (&lt;code&gt;moov&lt;/code&gt; atom) positioned at the beginning of the file, which usually requires knowing the exact file size after completion. By using &lt;strong&gt;fragmented MP4 (&lt;code&gt;frag_keyframe&lt;/code&gt;)&lt;/strong&gt;, chunks can be transmitted to the browser incrementally the moment they are muxed, allowing the client's browser download to start in under 2 seconds!&lt;/p&gt;




&lt;h2&gt;
  
  
  🍪 In-Memory HMAC Cookie Vault
&lt;/h2&gt;

&lt;p&gt;With YouTube increasingly restricting unauthenticated requests or triggering bot verification, maintaining valid session cookies is essential.&lt;/p&gt;

&lt;p&gt;KV-DL includes a frictionless &lt;strong&gt;Cookie Vault&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Users can paste standard Netscape &lt;code&gt;cookies.txt&lt;/code&gt;, JSON exports, or raw HTTP headers directly into the web UI.&lt;/li&gt;
&lt;li&gt;Cookies are stored purely in volatile RAM, authenticated with an HMAC session key, and injected into &lt;code&gt;yt-dlp&lt;/code&gt; requests on the fly.&lt;/li&gt;
&lt;li&gt;Sensitive credentials are never persisted to disk or plain-text logs.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔄 Frictionless Domain Swapping
&lt;/h2&gt;

&lt;p&gt;To make downloading effortless, KV-DL supports universal domain swap routing. If you're browsing YouTube and see a video you want to grab, simply replace &lt;code&gt;youtube.com&lt;/code&gt; in your address bar with your self-hosted KV-DL domain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://www.youtube.com/watch?v=dQw4w9WgXcQ
             ↓↓↓
https://dl.yourdomain.com/watch?v=dQw4w9WgXcQ
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The video loads automatically in KV-DL, pre-populated with quality presets and instant download triggers.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Running KV-DL with Docker
&lt;/h2&gt;

&lt;p&gt;KV-DL is packaged as a single lightweight multi-arch Docker container including the compiled Rust binary, embedded Next.js static UI, &lt;code&gt;yt-dlp&lt;/code&gt;, and &lt;code&gt;ffmpeg&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; kv-dl &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; 3000:3000 &lt;span class="se"&gt;\&lt;/span&gt;
  vndangkhoa/kv-dl:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;code&gt;http://localhost:3000&lt;/code&gt; to start downloading media at full network speed with zero server disk wear.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 Check it Out on GitHub
&lt;/h2&gt;

&lt;p&gt;KV-DL is 100% open-source under the MIT license:&lt;/p&gt;

&lt;p&gt;⭐ &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/vndangkhoa/kv-dl" rel="noopener noreferrer"&gt;https://github.com/vndangkhoa/kv-dl&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🐳 &lt;strong&gt;Docker Hub:&lt;/strong&gt; &lt;code&gt;vndangkhoa/kv-dl&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Try it out on your server or homelab!&lt;/p&gt;

</description>
      <category>rust</category>
      <category>selfhosted</category>
      <category>webdev</category>
      <category>docker</category>
    </item>
    <item>
      <title>Building KV Files: A Blazing-Fast Web File Manager with macOS Miller Columns in Rust &amp; React</title>
      <dc:creator>Khoa.Vo</dc:creator>
      <pubDate>Wed, 23 Sep 2026 12:27:35 +0000</pubDate>
      <link>https://dev.to/khoavo/building-kv-files-a-blazing-fast-web-file-manager-with-macos-miller-columns-in-rust-react-2gd4</link>
      <guid>https://dev.to/khoavo/building-kv-files-a-blazing-fast-web-file-manager-with-macos-miller-columns-in-rust-react-2gd4</guid>
      <description>&lt;h1&gt;
  
  
  Building KV Files: A Blazing-Fast Web File Manager with macOS Miller Columns in Rust &amp;amp; React
&lt;/h1&gt;

&lt;p&gt;Self-hosting a private file manager should be effortless. Yet most homelab users find themselves trapped in an awkward dilemma:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Monolithic Cloud Suites (e.g. Nextcloud):&lt;/strong&gt; Incredible feature breadth, but notoriously heavy—demanding 500MB+ idle RAM, PHP runtimes, Redis caches, background cron workers, and database containers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Minimalist Directory Viewers:&lt;/strong&gt; Extremely lightweight, but lacking keyboard ergonomics, responsive media handling, and intuitive multi-depth navigation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted something that felt as fast and refined as &lt;strong&gt;macOS Finder's Miller Columns&lt;/strong&gt; and as functional as &lt;strong&gt;Windows Explorer dual-pane Commander&lt;/strong&gt;, while consuming virtually zero resources on my home server.&lt;/p&gt;

&lt;p&gt;That is why I created &lt;strong&gt;&lt;a href="https://github.com/vndangkhoa/kv-file" rel="noopener noreferrer"&gt;KV Files (kv-file)&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ What Makes KV Files Different?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Cascading macOS Miller Columns
&lt;/h3&gt;

&lt;p&gt;Instead of clicking back and forth through nested directories, KV Files renders cascading folder columns side-by-side with smooth horizontal scrolling.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌────────────────────────────────────────────────────────────────────────────────────────┐
│ [≡] 🔍 Quick Search (Ctrl+K)   [ /storage/photos/2026/vacation ] [⟳]   [Columns ▾] [⚙]│
├───────────────┬──────────────────┬──────────────────┬──────────────────┬───────────────┤
│ 📂 STORAGE    │ 📁 2024          │ 📁 Summer        │ 🖼️ beach.jpg      │ 🖼️ beach.jpg  │
│  ├─ photos    │ 📁 2025          │ 📁 Roadtrip      │ 🖼️ sunset.png     │ 3.2 MB • JPEG │
│  ├─ documents │ 📁 2026 ──▶      │ 📁 Mountain      │ 🎥 vlog.mp4      │ 4032 x 3024   │
│  └─ backups   │                  │ 📁 Vacation ──▶  │ 📄 notes.txt     │ [Open] [Share]│
│               │                  │                  │                  │ [Download]    │
└───────────────┴──────────────────┴──────────────────┴──────────────────┴───────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can navigate your entire disk using just arrow keys:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;↑&lt;/code&gt; / &lt;code&gt;↓&lt;/code&gt;: Move selection up and down.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;→&lt;/code&gt;: Expand folder into a fresh column.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;←&lt;/code&gt;: Back out to the parent column.&lt;/li&gt;
&lt;li&gt;
Space: Instant &lt;strong&gt;Quick Look&lt;/strong&gt; preview for photos, 4K videos, markdown notes, code syntax highlighting, and PDFs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Dual-Pane Commander Mode (&lt;code&gt;Alt + S&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;Need to organize and transfer files across different directories or drives? Press &lt;code&gt;Alt + S&lt;/code&gt; to split the viewport into two synchronized panes. You can compare directories and copy (&lt;code&gt;F5&lt;/code&gt;) or move (&lt;code&gt;F6&lt;/code&gt;) files instantly.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Pure Rust (Axum + Tokio) Backend (~15 MB RAM)
&lt;/h3&gt;

&lt;p&gt;The backend is written in &lt;strong&gt;Rust&lt;/strong&gt; using the asynchronous &lt;strong&gt;Axum&lt;/strong&gt; framework. It embeds the entire compiled React PWA frontend and an embedded SQLite database configured in WAL mode:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Idles at roughly &lt;strong&gt;15 MB of RAM&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Saturates 10Gbps Ethernet links with non-blocking async I/O.&lt;/li&gt;
&lt;li&gt;Deploys as a &lt;strong&gt;single, standalone binary or Docker container&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Sub-Millisecond Real-Time Kernel Sync (&lt;code&gt;inotify&lt;/code&gt; + WebSockets)
&lt;/h3&gt;

&lt;p&gt;If files are added, modified, or removed on the host filesystem—whether via an SSH terminal session, an &lt;code&gt;rsync&lt;/code&gt; script, or automated torrent downloaders—the Linux kernel's &lt;code&gt;inotify&lt;/code&gt; subsystem fires an event. KV Files broadcasts this change over WebSockets to all connected browser tabs in milliseconds. &lt;strong&gt;No polling, no manual page refreshes.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Native Lockscreen Media Streaming (W3C Media Session)
&lt;/h3&gt;

&lt;p&gt;When streaming music or video from your server, KV Files interfaces directly with the browser's &lt;strong&gt;W3C Media Session API&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full lockscreen controls on &lt;strong&gt;iOS&lt;/strong&gt; (including the Dynamic Island).&lt;/li&gt;
&lt;li&gt;Rich notifications with album artwork and scrubbers on &lt;strong&gt;Android&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Hardware media keys support on macOS and Windows keyboards.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6. Intelligent NAS Detection
&lt;/h3&gt;

&lt;p&gt;KV Files automatically inspects filesystem mounting points and applies contextual badging for common homelab environments:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Synology DSM:&lt;/strong&gt; Automatically hides &lt;code&gt;@eaDir&lt;/code&gt; indexing artifacts and highlights shared folders.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TrueNAS:&lt;/strong&gt; Badges ZFS dataset pools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unraid:&lt;/strong&gt; Flags user shares and cache disks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Simple Mode":&lt;/strong&gt; A toggle switch designed for non-technical family members that hides internal system directories and dotfiles.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 Quick Start with Docker
&lt;/h2&gt;

&lt;p&gt;Deploy KV Files in under 30 seconds using Docker:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; kv-file &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; 8080:8080 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; /your/storage/path:/data &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; ./kv-file-data:/config &lt;span class="se"&gt;\&lt;/span&gt;
  vndangkhoa/kv-file:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;code&gt;http://localhost:8080&lt;/code&gt; and start exploring your storage at lightning speed.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 Check it Out on GitHub
&lt;/h2&gt;

&lt;p&gt;KV Files is completely open source under the MIT license:&lt;/p&gt;

&lt;p&gt;⭐ &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/vndangkhoa/kv-file" rel="noopener noreferrer"&gt;https://github.com/vndangkhoa/kv-file&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🐳 &lt;strong&gt;Docker Hub:&lt;/strong&gt; &lt;code&gt;vndangkhoa/kv-file&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Give it a spin on your server or NAS and let me know your thoughts!&lt;/p&gt;

</description>
      <category>rust</category>
      <category>selfhosted</category>
      <category>react</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Why I Built a Zero-Underline Vietnamese IME for Linux in Rust</title>
      <dc:creator>Khoa.Vo</dc:creator>
      <pubDate>Wed, 23 Sep 2026 12:27:30 +0000</pubDate>
      <link>https://dev.to/khoavo/why-i-built-a-zero-underline-vietnamese-ime-for-linux-in-rust-535i</link>
      <guid>https://dev.to/khoavo/why-i-built-a-zero-underline-vietnamese-ime-for-linux-in-rust-535i</guid>
      <description>&lt;h1&gt;
  
  
  Why I Built a Zero-Underline Vietnamese IME for Linux in Rust
&lt;/h1&gt;

&lt;p&gt;Anyone who has used Linux in Vietnam knows the long-standing frustration of typing Vietnamese on desktop environments—especially with the widespread adoption of &lt;strong&gt;Wayland&lt;/strong&gt; (GNOME, KDE Plasma, Hyprland, Sway).&lt;/p&gt;

&lt;p&gt;Traditional Input Method Engines (IMEs) rely on a &lt;strong&gt;pre-edit buffer&lt;/strong&gt;. While this works reasonably well on macOS or Windows, on Linux it often produces:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Flickering Underlines:&lt;/strong&gt; Every keystroke shows an underlined temporary word that interrupts code auto-completion in VS Code, Neovim, and terminal emulators.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clipboard Race Conditions:&lt;/strong&gt; Many input methods simulate backspaces and paste transformed characters via the system clipboard, colliding with your actual clipboard history or password managers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Broken English Words:&lt;/strong&gt; When typing common English words containing Vietnamese key combinations (e.g., &lt;code&gt;test&lt;/code&gt;, &lt;code&gt;search&lt;/code&gt;, &lt;code&gt;code&lt;/code&gt;), words often get mangled into unnatural accent marks unless manually disabled.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To fix these problems at the root, I built &lt;strong&gt;&lt;a href="https://github.com/vndangkhoa/vietc" rel="noopener noreferrer"&gt;Viet+ (VietC)&lt;/a&gt;&lt;/strong&gt;: a modern, zero-latency, zero-underline Vietnamese IME written 100% in &lt;strong&gt;Rust&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ The Architecture: Direct Virtual Keystroke Injection
&lt;/h2&gt;

&lt;p&gt;Instead of hijacking the desktop text field with a pre-edit overlay, &lt;strong&gt;Viet+&lt;/strong&gt; operates directly at the device input layer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Hardware Keyboard]
       │
       ▼
 [Viet+ Engine (Rust)] ───► [Finite State Machine &amp;amp; Telex/VNI Rules]
       │
       ▼ (Direct Unicode via /dev/uinput or wtype)
[Target Application: Terminal, Browser, IDE]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  1. Zero Underline (No Pre-Edit Buffer)
&lt;/h3&gt;

&lt;p&gt;Viet+ processes keystrokes in-flight. Characters appear directly in your active application as real Unicode text. No ghost underlines, no flickering text frames, and no disruption to IDE autocomplete dropdowns.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Intelligent English Auto-Restoration
&lt;/h3&gt;

&lt;p&gt;A common nuisance when typing bilingual technical documents is accidentally turning English words into accented Vietnamese (e.g. typing &lt;code&gt;as&lt;/code&gt; becoming &lt;code&gt;á&lt;/code&gt;, or &lt;code&gt;format&lt;/code&gt; becoming &lt;code&gt;fórmat&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Viet+ embeds an intelligent trie-based dictionary check. If you type an English word pattern, the engine automatically rolls back the diacritics and restores clean English text without requiring you to constantly hit &lt;code&gt;Ctrl + Space&lt;/code&gt; or switch modes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Nguyeenx DDawng Khoa   ➔   Nguyễn Đăng Khoa
Khoong cos gif quis    ➔   Không có gì quí
search for the test    ➔   search for the test  (Auto-Restored!)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Wayland &amp;amp; X11 First-Class Support
&lt;/h3&gt;

&lt;p&gt;Viet+ is designed for modern Wayland compositors:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Wayland:&lt;/strong&gt; Native virtual keyboard protocol integration via &lt;code&gt;wtype&lt;/code&gt; and &lt;code&gt;wl-clipboard&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;X11:&lt;/strong&gt; Seamless fallback using &lt;code&gt;xdotool&lt;/code&gt; and &lt;code&gt;X11&lt;/code&gt; key injection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hyprland / Sway / GNOME / KDE:&lt;/strong&gt; Tested across leading tiling and desktop window managers.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🦀 Why Rust?
&lt;/h2&gt;

&lt;p&gt;Input methods require predictable microsecond latency. Every key press must be intercepted, checked against grammar state machines, and re-emitted before the user's next keystroke lands.&lt;/p&gt;

&lt;p&gt;By using Rust:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zero Garbage Collection:&lt;/strong&gt; Predictable sub-millisecond response times.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safe Memory Concurrency:&lt;/strong&gt; Safe IPC communication between background daemons and system trays.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;100% Test Coverage:&lt;/strong&gt; Viet+ includes &lt;strong&gt;151 unit tests&lt;/strong&gt; validating complex Telex, VNI, tone placement rules, and edge-case word combinations.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 1-Command Installation
&lt;/h2&gt;

&lt;p&gt;You can install Viet+ on Arch Linux, Fedora, Ubuntu, Debian, or openSUSE with a single command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/vndangkhoa/vietc/main/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once installed, start the background daemon:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vietc &amp;amp;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Toggle between Vietnamese and English modes effortlessly using &lt;code&gt;Ctrl + Space&lt;/code&gt; (customizable).&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 Check it Out on GitHub
&lt;/h2&gt;

&lt;p&gt;Viet+ is 100% open-source under the MIT license. If you're running Linux and want a smooth, native typing experience without UI clutter:&lt;/p&gt;

&lt;p&gt;⭐ &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/vndangkhoa/vietc" rel="noopener noreferrer"&gt;https://github.com/vndangkhoa/vietc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feedback, issues, and PRs are warmly welcome!&lt;/p&gt;

</description>
      <category>linux</category>
      <category>rust</category>
      <category>opensource</category>
      <category>wayland</category>
    </item>
  </channel>
</rss>
