<?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: y.v.v. satyanarayana</title>
    <description>The latest articles on DEV Community by y.v.v. satyanarayana (@satyanarayana999).</description>
    <link>https://dev.to/satyanarayana999</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3813635%2F4cb15c78-c607-4532-be7b-30bc7bf14180.png</url>
      <title>DEV Community: y.v.v. satyanarayana</title>
      <link>https://dev.to/satyanarayana999</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/satyanarayana999"/>
    <language>en</language>
    <item>
      <title>Building Inkline: A Local-First Drawing App with a Smart Pen &amp; Layers</title>
      <dc:creator>y.v.v. satyanarayana</dc:creator>
      <pubDate>Fri, 05 Jun 2026 11:54:02 +0000</pubDate>
      <link>https://dev.to/satyanarayana999/building-inkline-a-local-first-drawing-app-with-a-smart-pen-layers-48l9</link>
      <guid>https://dev.to/satyanarayana999/building-inkline-a-local-first-drawing-app-with-a-smart-pen-layers-48l9</guid>
      <description>&lt;p&gt;Hey fellow builders! 👋&lt;/p&gt;

&lt;p&gt;I wanted to share a desktop drawing/whiteboard application I've been building called Inkline.&lt;/p&gt;

&lt;p&gt;It’s built with Electron, Vanilla JavaScript, and the HTML5 Canvas API, designed to be a local-first, lightweight desktop tool for sketching notes, diagramming, and exporting visuals.&lt;/p&gt;

&lt;p&gt;Why I Built Inkline&lt;/p&gt;

&lt;p&gt;There are many great whiteboard tools out there (like Excalidraw or Figma), but I wanted a local-first desktop app that focuses on simplicity, speed, and clean exports without heavy web interfaces or account requirements.&lt;/p&gt;

&lt;p&gt;I decided to build it from scratch using plain JavaScript and Electron to keep it fast, native, and customizable.&lt;/p&gt;

&lt;p&gt;Key Features&lt;br&gt;
• Smart Pen (Shape Recognition): Automatically detects and snaps freehand drawings into clean shapes (circles, rectangles, diamonds, arrows, and lines).&lt;br&gt;
• Figma-style Layers: A custom layers panel to organize, rename, and arrange elements.&lt;br&gt;
• Sketchy Chart Generator: Insert custom bar, line, and pie charts with a hand-drawn look.&lt;br&gt;
• Templates: Built-in canvas templates for Kanban boards, SWOT analysis, mindmaps, and flowcharts.&lt;br&gt;
• Local-First &amp;amp; Export: Fast pan/zoom, custom rules, grid snapping, save/load to JSON, and high-quality PNG export.&lt;/p&gt;

&lt;p&gt;Behind the Scenes: How the Smart Pen Works&lt;/p&gt;

&lt;p&gt;One of the most fun features to build was the Smart Pen shape recognizer. Instead of using heavy machine learning models, it uses lightweight geometry and coordinate math:&lt;/p&gt;

&lt;p&gt;Straight Lines: It compares the start and end points of a stroke. If the average deviation of all drawn points from the straight line chord is very small, it snaps it into a perfect line.&lt;/p&gt;

&lt;p&gt;Arrows: It analyzes the last 25% of the stroke points. If they backtrack at an angle relative to the first 75% of the stroke, it detects it as an arrowhead and draws a snapping arrow.&lt;/p&gt;

&lt;p&gt;Closed Loops (Circles, Rectangles, Diamonds): If the start and end points of the stroke are close, it calculates the bounding box. It then computes the average error of the points against an ideal ellipse equation, a diamond equation, and a rectangle. The shape with the lowest error is selected and snapped!&lt;/p&gt;

&lt;p&gt;The Tech Stack&lt;br&gt;
• Frontend: HTML5 Canvas API, CSS Variables, and Vanilla JavaScript (No framework!).&lt;br&gt;
• Desktop Shell: Electron (with preload scripts and custom borderless window frame controls).&lt;br&gt;
• Release Packaging: Electron Builder.&lt;/p&gt;

&lt;p&gt;Try it Out&lt;br&gt;
• GitHub Repository: &lt;a href="https://github.com/yvvsatyanarayana-dev/Inkline" rel="noopener noreferrer"&gt;https://github.com/yvvsatyanarayana-dev/Inkline&lt;/a&gt;&lt;br&gt;
• Downloads: Installers for Windows, Linux (AppImage) are available in the Releases section.&lt;/p&gt;

&lt;p&gt;If you like the project, please consider giving it a Star on GitHub! It helps a lot.&lt;br&gt;
Let me know what you think or what features you would like to see next in the comments!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>javascript</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
