<?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: Sukhjit Singh</title>
    <description>The latest articles on DEV Community by Sukhjit Singh (@thesukhsingh).</description>
    <link>https://dev.to/thesukhsingh</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%2F1780991%2F3e561a37-8660-47cd-8a81-4071dbe02197.png</url>
      <title>DEV Community: Sukhjit Singh</title>
      <link>https://dev.to/thesukhsingh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thesukhsingh"/>
    <language>en</language>
    <item>
      <title>How Kiro Transformed the Way I Build: From Code to Vibes</title>
      <dc:creator>Sukhjit Singh</dc:creator>
      <pubDate>Thu, 04 Dec 2025 21:06:24 +0000</pubDate>
      <link>https://dev.to/thesukhsingh/how-kiro-transformed-the-way-i-build-from-code-to-vibes-1cp4</link>
      <guid>https://dev.to/thesukhsingh/how-kiro-transformed-the-way-i-build-from-code-to-vibes-1cp4</guid>
      <description>&lt;p&gt;When I started building &lt;strong&gt;Ghostly Tales&lt;/strong&gt;, a minimal, atmospheric ghost-story generator with a cinematic horror UI, I expected the biggest challenge to be the visuals. Horror is all about &lt;em&gt;vibe&lt;/em&gt;, pacing, and subtle cues — and bringing that into code usually means hours of tweaking borders, animations, lighting, and interactions.&lt;/p&gt;

&lt;p&gt;This time, though, everything changed.&lt;/p&gt;

&lt;p&gt;I had &lt;strong&gt;Kiro&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And for the first time, I felt like I wasn’t coding &lt;em&gt;alone&lt;/em&gt; — I was coding with a creative partner.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The Shift: From Writing Code → Describing Feelings&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;What surprised me most was how natural it felt to collaborate with Kiro.&lt;br&gt;
I didn’t have to explain implementation details. I didn’t have to plan out the CSS or animation layers.&lt;/p&gt;

&lt;p&gt;Instead, I described intentions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“Make the border feel alive.”&lt;/li&gt;
&lt;li&gt;“Give this component a haunted glow.”&lt;/li&gt;
&lt;li&gt;“I want this UI to feel like it’s breathing.”&lt;/li&gt;
&lt;li&gt;“Make the storytelling container cinematic and quiet.”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Kiro didn’t just understand the words — it understood the &lt;em&gt;tone&lt;/em&gt;.&lt;br&gt;
It generated structured, meaningful code that matched the emotional aesthetic I had in my head.&lt;/p&gt;

&lt;p&gt;This wasn’t prompt engineering.&lt;/p&gt;

&lt;p&gt;This was &lt;strong&gt;vibe coding&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And it changed everything.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Building Ghostly Tales With Kiro&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Ghostly Tales is a tiny project built in a single day, but it feels like something bigger because its personality shines through. A supernatural typing animation reveals stories one character at a time. A distorted, glowing frame makes the UI feel alive. The whole experience is eerie, minimal, and oddly beautiful.&lt;/p&gt;

&lt;p&gt;Kiro helped me accelerate the parts that typically slow me down:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. Complex UI Layers&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The ghostly card wrapper — a component with turbulence filters, glow layers, overlays, and distortions — came together in minutes with Kiro’s help.&lt;br&gt;
It handled:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;animated SVG turbulence filters&lt;/li&gt;
&lt;li&gt;layered masking and glows&lt;/li&gt;
&lt;li&gt;border distortion logic&lt;/li&gt;
&lt;li&gt;performance-safe structuring&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This would’ve taken hours (or more) to handcraft.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;2. Animation Logic&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Kiro helped refine the typing animation, which reveals stories at an adjustable pace with a flickering cursor. It suggested improvements for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;batching character updates&lt;/li&gt;
&lt;li&gt;preventing jank on long stories&lt;/li&gt;
&lt;li&gt;separating cursor timing from text rendering&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result?&lt;br&gt;
An animation that feels eerily alive — with clean, maintainable code.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;3. Faster UI Iteration&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Every time I wanted to try a new glow intensity, radius, or turbulence amount, I didn’t have to manually adjust 20 values. I simply told Kiro:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Make the orange glow feel warmer and more cinematic.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And it regenerated the component with a new, balanced palette — no copy-pasting, no juggling hex codes.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Agent Hooks: Reducing the Repetitive&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I also experimented with Kiro’s agent hooks to automate repetitive workflow tasks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;UI regeneration hooks&lt;/strong&gt; that updated component variants while retaining structural consistency&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt-validation hooks&lt;/strong&gt; to ensure story inputs were always valid&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These small automations saved countless micro-decisions and kept the flow uninterrupted.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Spec-Driven Development Meets Vibe Coding&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Before writing the first line of code, I created a short spec describing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;UI hierarchy&lt;/li&gt;
&lt;li&gt;component boundaries&lt;/li&gt;
&lt;li&gt;animation states&lt;/li&gt;
&lt;li&gt;styling philosophy (“haunted minimalism”)&lt;/li&gt;
&lt;li&gt;input/output schema for the story generator&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Kiro used this as a north star, ensuring consistency across every iteration and regeneration.&lt;/p&gt;

&lt;p&gt;Spec-driven development gave the project &lt;strong&gt;structure&lt;/strong&gt;.&lt;br&gt;
Vibe coding gave it &lt;strong&gt;soul&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And together, they allowed me to build faster and more creatively than ever before.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;How Kiro Changed My Development Mindset&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Using Kiro didn’t just accelerate development — it changed the way I &lt;em&gt;start&lt;/em&gt; projects.&lt;/p&gt;

&lt;p&gt;Before Kiro:&lt;br&gt;
I’d open a blank file, sketch the architecture, fight with styling, and chip away until something resembled my idea.&lt;/p&gt;

&lt;p&gt;After Kiro:&lt;br&gt;
I begin with intention. Mood. Emotion. Aesthetic.&lt;br&gt;
And Kiro helps me grow that into code.&lt;/p&gt;

&lt;p&gt;Development feels less like constructing and more like &lt;strong&gt;co-creating&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That’s the magic.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Looking Ahead&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Ghostly Tales is just a small example, but it revealed something huge:&lt;br&gt;
Kiro unlocks a style of building that blends creativity with engineering in a way traditional coding doesn’t.&lt;/p&gt;

&lt;p&gt;I’m excited to explore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;automated design-to-code workflows&lt;/li&gt;
&lt;li&gt;style-driven UI engines&lt;/li&gt;
&lt;li&gt;project scaffolding through vibes and specs&lt;/li&gt;
&lt;li&gt;agent-driven animation systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Kiro didn’t just change my workflow.&lt;/p&gt;

&lt;p&gt;It changed my &lt;strong&gt;starting point&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And once you experience that shift, you don’t want to build any other way.&lt;/p&gt;

</description>
      <category>kiro</category>
      <category>kiroween</category>
    </item>
    <item>
      <title>Building PDF Editor</title>
      <dc:creator>Sukhjit Singh</dc:creator>
      <pubDate>Sat, 06 Sep 2025 17:14:26 +0000</pubDate>
      <link>https://dev.to/thesukhsingh/building-pdf-editor-24ed</link>
      <guid>https://dev.to/thesukhsingh/building-pdf-editor-24ed</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In today's digital-first world, PDF documents remain the standard for sharing and preserving formatted content across platforms. However, the tools for working with PDFs often fall into two categories: powerful but complex desktop applications or limited online utilities with privacy concerns. Our team set out to bridge this gap by creating a comprehensive, browser-based PDF editor that prioritizes user privacy, performance, and accessibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Challenge
&lt;/h2&gt;

&lt;p&gt;PDF manipulation has traditionally been challenging in web environments. The complexities of the PDF specification, performance limitations of JavaScript, and user expectations set by desktop applications created a high bar for success. We wanted to build a solution that would:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Process PDFs entirely client-side to ensure document privacy&lt;/li&gt;
&lt;li&gt;Provide a responsive, intuitive interface across devices&lt;/li&gt;
&lt;li&gt;Support core PDF operations (editing, converting, merging) without compromise&lt;/li&gt;
&lt;li&gt;Deliver performance comparable to native applications&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Our Solution: Architecture Overview
&lt;/h2&gt;

&lt;p&gt;We built our PDF Editor using a modern tech stack centered around Next.js 15 and React 19, leveraging the latest advancements in web technology:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend Framework&lt;/strong&gt;: Next.js 15 with React 19&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PDF Processing&lt;/strong&gt;: pdf-lib and PDF.js for client-side document manipulation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI Components&lt;/strong&gt;: Custom components built with Radix UI primitives and Tailwind CSS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State Management&lt;/strong&gt;: React Context API for application state&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;File Handling&lt;/strong&gt;: react-dropzone for intuitive file uploading&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The application's architecture emphasizes client-side processing, ensuring that user documents never leave their browser. This approach eliminates privacy concerns while providing immediate feedback during document operations.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  PDF Editing
&lt;/h3&gt;

&lt;p&gt;Our editor provides intuitive tools for modifying PDF documents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Text addition with customizable fonts, sizes, and colors&lt;/li&gt;
&lt;li&gt;Shape and annotation tools for highlighting and emphasizing content&lt;/li&gt;
&lt;li&gt;Smart layout preservation that respects the original document structure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The editing interface uses canvas-based rendering through PDF.js, with a custom overlay system for manipulating PDF elements without altering the underlying document until changes are committed.&lt;/p&gt;

&lt;h3&gt;
  
  
  PDF Conversion
&lt;/h3&gt;

&lt;p&gt;The conversion module addresses two common needs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;PDF to Image&lt;/strong&gt;: Users can extract pages as high-quality images in various formats, with controls for resolution and quality settings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image to PDF&lt;/strong&gt;: Multiple images can be combined into a single PDF with options for page size, orientation, and layout.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Both conversion processes run entirely in the browser using a combination of Canvas APIs and the pdf-lib library, ensuring privacy while maintaining quality.&lt;/p&gt;

&lt;h3&gt;
  
  
  PDF Merging
&lt;/h3&gt;

&lt;p&gt;Our merge functionality allows users to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Combine multiple PDFs into a single document&lt;/li&gt;
&lt;li&gt;Select specific pages from source documents&lt;/li&gt;
&lt;li&gt;Rearrange pages through an intuitive drag-and-drop interface&lt;/li&gt;
&lt;li&gt;Preview the final document before downloading&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This feature leverages pdf-lib's document manipulation capabilities, with careful memory management to handle large documents efficiently.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Deep Dive
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Client-Side PDF Processing
&lt;/h3&gt;

&lt;p&gt;One of our biggest technical challenges was implementing robust PDF manipulation entirely in the browser. We approached this by:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Using Web Workers to move processing off the main thread&lt;/li&gt;
&lt;li&gt;Implementing progressive rendering for large documents&lt;/li&gt;
&lt;li&gt;Creating a custom buffering system to manage memory usage&lt;/li&gt;
&lt;li&gt;Leveraging typed arrays and binary data for efficient document handling&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The result is a system that can handle documents hundreds of pages long without significant performance degradation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Modern UI Implementation
&lt;/h3&gt;

&lt;p&gt;Our interface is built on Radix UI primitives, providing accessibility and consistent behavior across browsers. We extended these components with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Custom animations for smooth transitions between states&lt;/li&gt;
&lt;li&gt;Responsive layouts that adapt to different screen sizes&lt;/li&gt;
&lt;li&gt;Keyboard shortcuts for power users&lt;/li&gt;
&lt;li&gt;Dark mode support through CSS variables and next-themes&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Progressive Web App Capabilities
&lt;/h3&gt;

&lt;p&gt;The application is designed as a Progressive Web App (PWA), offering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Offline functionality for previously opened documents&lt;/li&gt;
&lt;li&gt;Installation on desktop and mobile devices&lt;/li&gt;
&lt;li&gt;File system integration where supported by the browser&lt;/li&gt;
&lt;li&gt;Responsive design that works across devices&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Performance Optimizations
&lt;/h2&gt;

&lt;p&gt;Performance was a critical consideration throughout development. Key optimizations include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Code splitting&lt;/strong&gt;: Dynamic imports to load features on demand&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web Workers&lt;/strong&gt;: Processing PDF operations in background threads&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory management&lt;/strong&gt;: Careful resource allocation and cleanup&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rendering optimizations&lt;/strong&gt;: Canvas reuse and lazy loading of document pages&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These techniques allow our application to maintain responsive performance even when working with large, complex documents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Future Directions
&lt;/h2&gt;

&lt;p&gt;As we continue to develop our PDF Editor, several exciting enhancements are on the roadmap:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;AI-assisted editing&lt;/strong&gt;: Intelligent content recognition and manipulation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collaborative editing&lt;/strong&gt;: Real-time document collaboration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enhanced form handling&lt;/strong&gt;: Creation and filling of interactive forms&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advanced security features&lt;/strong&gt;: Password protection and document encryption&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Building a feature-rich PDF editor that runs entirely in the browser presented significant technical challenges, but the result is a powerful tool that respects user privacy while delivering desktop-class functionality. By leveraging modern web technologies and careful performance optimization, we've created an application that makes PDF manipulation accessible to everyone, anywhere.&lt;/p&gt;

&lt;p&gt;We invite you to experience the future of browser-based document editing. The project is open source and available on &lt;a href="https://github.com/the-sukhsingh/pdf-editor" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, where we welcome contributions and feedback from the community.&lt;/p&gt;

</description>
      <category>kiro</category>
      <category>pdf</category>
      <category>pdfeditor</category>
    </item>
  </channel>
</rss>
