<?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 (@thesukhjitbajwa).</description>
    <link>https://dev.to/thesukhjitbajwa</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%2F1780991%2F4d895d64-ca5d-4950-8f47-ef9759be4520.jpg</url>
      <title>DEV Community: Sukhjit Singh</title>
      <link>https://dev.to/thesukhjitbajwa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thesukhjitbajwa"/>
    <language>en</language>
    <item>
      <title>Notes Study</title>
      <dc:creator>Sukhjit Singh</dc:creator>
      <pubDate>Sun, 04 Oct 2026 19:31:34 +0000</pubDate>
      <link>https://dev.to/thesukhjitbajwa/notes-study-3pb0</link>
      <guid>https://dev.to/thesukhjitbajwa/notes-study-3pb0</guid>
      <description>&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Story: Building for My Friend
&lt;/h3&gt;

&lt;p&gt;A few weeks ago, I watched my close friend sit at a university library desk surrounded by 60-page PDF lecture slides, handwritten margin notes, and textbook extracts, preparing for grueling semester exams. &lt;/p&gt;

&lt;p&gt;Like many students, my friend was caught in the trap of &lt;strong&gt;the fluency illusion&lt;/strong&gt;—passively re-reading highlighted lecture decks until the words &lt;em&gt;felt&lt;/em&gt; familiar, only to draw a blank when facing an empty exam paper. When they tried using mainstream cloud AI chatbots to generate revision questions, three major frustrations quickly surfaced:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Hallucinations &amp;amp; Disconnect from the Syllabus&lt;/strong&gt;: Generic chatbots frequently answered with facts or definitions outside their professor's course scope, confusing them right before exam day.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy &amp;amp; Coursework Restrictions&lt;/strong&gt;: My friend was uncomfortable (and university honor codes discouraged) pasting proprietary lecture notes, unreleased research handouts, and assignment drafts into commercial, closed-source cloud AI platforms that retain user data for retraining.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Paywalls &amp;amp; Cloud Reliance&lt;/strong&gt;: Cloud AI tools charge steep monthly subscriptions that student budgets can't maintain—and in the basement of the university library where Wi-Fi drops, cloud tools become completely useless.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I built &lt;strong&gt;Study From My Notes&lt;/strong&gt; to solve this exact problem: &lt;strong&gt;a distraction-free, local-first study workspace that transforms a student's own documents into an active-recall revision experience, powered 100% on their own machine by open-weight AI.&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  What It Does
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Study From My Notes&lt;/strong&gt; does not just passively summarize documents. It actively coaches the student to understand, memorize, and test themselves strictly against the text they provide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📄 &lt;strong&gt;In-Browser Document Extraction &amp;amp; Quality Auditor&lt;/strong&gt;: Drag-and-drop PDFs, &lt;code&gt;.txt&lt;/code&gt;, or &lt;code&gt;.md&lt;/code&gt; files. Extracted text is processed entirely in the browser using &lt;code&gt;pdfjs-dist&lt;/code&gt;, preserving page numbers and word counts. A built-in Quality Auditor detects scanned/empty pages and lets students inspect and correct raw text page-by-page.&lt;/li&gt;
&lt;li&gt;💡 &lt;strong&gt;Explain My Notes (6 Pedagogical Modes)&lt;/strong&gt;: Explains challenging passages in six distinct learning frameworks:

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Simple Language (Feynman Technique)&lt;/em&gt;: Translates dense jargon into plain, intuitive analogies.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Step by Step&lt;/em&gt;: Deconstructs multi-stage processes sequentially.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Practical Analogy&lt;/em&gt;: Connects theoretical models to everyday situations.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Compare &amp;amp; Contrast&lt;/em&gt;: Sharpens distinctions between easily conflated concepts.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Exam Model Answer&lt;/em&gt;: Structures responses with thesis, evidence, and conclusion.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Socratic Challenge&lt;/em&gt;: Tests comprehension by asking probing follow-up questions.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;🔍 &lt;strong&gt;Ask My Notes (Zero-Hallucination Q&amp;amp;A)&lt;/strong&gt;: Grounded question answering that delivers confidence indicators, relevance scores, and clickable page citations that jump straight to the source passage in the reader.&lt;/li&gt;
&lt;li&gt;🗂️ &lt;strong&gt;Tactile Active Recall Flashcards&lt;/strong&gt;: Interactive 3D flip cards with Leitner/SuperMemo-inspired spaced repetition ratings (&lt;code&gt;Again&lt;/code&gt;, &lt;code&gt;Hard&lt;/code&gt;, &lt;code&gt;Good&lt;/code&gt;, &lt;code&gt;Easy&lt;/code&gt;) and full keyboard navigation (&lt;code&gt;Space&lt;/code&gt; to flip, &lt;code&gt;1-4&lt;/code&gt; to rate).&lt;/li&gt;
&lt;li&gt;🎯 &lt;strong&gt;Diagnostic Quizzes &amp;amp; Instant Feedback&lt;/strong&gt;: Generates multiple-choice and True/False questions with plausible distractors. Every explanation quotes the supporting passage from the student's notes verbatim.&lt;/li&gt;
&lt;li&gt;🔄 &lt;strong&gt;Smart Revision Queue&lt;/strong&gt;: Automatically logs missed quiz questions and difficult flashcards into a focused review queue, so my friend can drill their weakest concepts in a one-click &lt;strong&gt;"Retry Missed Questions"&lt;/strong&gt; flow.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Experience the live application or run it locally in under a minute:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;Live Demo&lt;/strong&gt;: &lt;a href="https://notes-study.vercel.app/" rel="noopener noreferrer"&gt;https://notes-study.vercel.app/&lt;/a&gt; &lt;em&gt;(Or test directly on [GitHub Pages / Deployed Instance])&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;🌐 &lt;strong&gt;Demo Video&lt;/strong&gt;: &lt;a href="https://youtu.be/jFd8-0K3IWI?si=tgtsH9tuaIhLx0yh" rel="noopener noreferrer"&gt;https://youtu.be/jFd8-0K3IWI?si=tgtsH9tuaIhLx0yh&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;🌐 &lt;strong&gt;Github Link&lt;/strong&gt;: &lt;a href="https://github.com/the-sukhsingh/notes-study" rel="noopener noreferrer"&gt;https://github.com/the-sukhsing/notes-study&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How to Run Locally with Ollama:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Clone the repository&lt;/span&gt;
git clone https://github.com/the-sukhsingh/notes-study.git
&lt;span class="nb"&gt;cd &lt;/span&gt;notes-study

&lt;span class="c"&gt;# 2. Install dependencies &amp;amp; run development server&lt;/span&gt;
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run dev

&lt;span class="c"&gt;# 3. (Optional) Run with local open-weight models via Ollama&lt;/span&gt;
ollama run llama3.2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt;. The app automatically detects Ollama at &lt;code&gt;http://localhost:11434&lt;/code&gt;, or you can toggle the built-in deterministic offline engine with zero setup!&lt;/p&gt;




&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;The entire codebase is open source under the MIT License.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repository&lt;/strong&gt;: &lt;a href="https://github.com/the-sukhsingh/notes-study" rel="noopener noreferrer"&gt;https://github.com/the-sukhsingh/notes-study&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tech Stack:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: Next.js 16 (App Router), React 19, TypeScript&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Styling &amp;amp; Motion&lt;/strong&gt;: Tailwind CSS v4, Motion (Framer Motion), Apple-inspired minimalist design tokens&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PDF Processing&lt;/strong&gt;: &lt;code&gt;pdfjs-dist&lt;/code&gt; (100% client-side text extraction)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local State &amp;amp; Storage&lt;/strong&gt;: Browser &lt;code&gt;localStorage&lt;/code&gt; with full JSON backup &amp;amp; restore&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Dual AI Architecture
&lt;/h3&gt;

&lt;p&gt;To ensure my friend could study anywhere—from high-performance home desktops to low-spec library laptops without an internet connection—I engineered a &lt;strong&gt;Dual AI Architecture&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;                  ┌────────────────────────────────────────┐
                  │          Student Study Material        │
                  │         (PDFs / Notes / Slides)        │
                  └───────────────────┬────────────────────┘
                                      │
                         Client-side PDF Extraction
                         &amp;amp; Page-by-Page Audit Loop
                                      │
                    ┌─────────────────┴─────────────────┐
                    ▼                                   ▼
        ┌───────────────────────┐           ┌───────────────────────┐
        │   Ollama Local LLM    │           │   Built-In Offline    │
        │      (Open Weights)   │           │      NLP Engine       │
        ├───────────────────────┤           ├───────────────────────┤
        │ • Llama 3.2 / Mistral │           │ • 100% Client-Side    │
        │ • Structured JSON     │           │ • Zero Dependencies   │
        │ • Page-by-Page chunks │           │ • Deterministic Closes│
        │ • Rich Feynman Logic  │           │ • TF-IDF Term Ranks   │
        └───────────────────────┘           └───────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Local Open-Weight Model Integration (Ollama)&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The app communicates directly with a local Ollama daemon (&lt;code&gt;http://localhost:11434&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Supported open-weight models include &lt;strong&gt;Meta's Llama 3.2&lt;/strong&gt;, &lt;strong&gt;Mistral&lt;/strong&gt;, &lt;strong&gt;Phi-3&lt;/strong&gt;, and &lt;strong&gt;Qwen 2.5&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;To prevent malformed responses, the app enforces &lt;strong&gt;Structured Outputs (&lt;code&gt;format: 'json'&lt;/code&gt;)&lt;/strong&gt; with strictly typed Zod/TypeScript schemas.&lt;/li&gt;
&lt;li&gt;Document passages are chunked page-by-page so the model always receives exact page boundaries, allowing it to cite verbatim excerpts and precise page numbers without hallucination.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Deterministic Built-In Offline Engine&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For friends studying on lightweight laptops without local LLM capabilities or GPU acceleration, I built an extractive natural-language processing engine directly into the TypeScript bundle.&lt;/li&gt;
&lt;li&gt;It uses rule-based clause extraction, sentence tokenization, and TF-IDF term scoring to generate valid flashcards, Feynman-style summaries, and diagnostic multiple-choice questions without any external network request or LLM installation.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Local-First Privacy &amp;amp; Zero Telemetry&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Notes never touch an external server. Everything—extracted pages, generated flashcard decks, quiz score histories, and SRS intervals—is persisted in the browser's &lt;code&gt;localStorage&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Complete data sovereignty: students can export their entire study deck as a portable JSON backup and wipe their local state with a single click.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;This project directly embodies the ethos of open innovation and open-weight AI:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data Sovereignty &amp;amp; Academic Privacy&lt;/strong&gt;: Proprietary university syllabi, medical lecture slides, and personal student notes should belong to the student. Closed APIs require sending sensitive data to external servers where it can be logged, analyzed, or retained. Open-weight models running locally guarantee complete privacy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Eliminating the Economic Barrier to Education&lt;/strong&gt;: Premium cloud AI subscriptions ($20/month) create an inequitable divide between students who can afford AI-assisted learning and those who cannot. Open-weight models like Llama 3.2 running on free tools like Ollama democratize high-level active recall for every student with a laptop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;True Resilience &amp;amp; Offline Accessibility&lt;/strong&gt;: Closed APIs fail the moment campus Wi-Fi throttles or internet access goes down. Open innovation ensures tools work on a train, in a flight, or in a Wi-Fi-dead library basement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inspectable, Controllable Intelligence&lt;/strong&gt;: With closed APIs, providers can stealthily modify system prompts, alter model guardrails, or deprecate models without warning. With open weights, we can inspect prompt dynamics, constrain temperatures, fine-tune specific study behaviors, and verify that citations are strictly grounded in truth.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hacktoberfest Overall Challenge&lt;/strong&gt;: &lt;em&gt;Build for a Friend&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;(Note: While this project emphasizes 100% local-first client &amp;amp; Ollama inference, the web application can also be deployed to partner runtimes such as Render).&lt;/em&gt;&lt;/p&gt;




</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
    <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/thesukhjitbajwa/how-kiro-transformed-the-way-i-build-from-code-to-vibes-1cp4</link>
      <guid>https://dev.to/thesukhjitbajwa/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/thesukhjitbajwa/building-pdf-editor-24ed</link>
      <guid>https://dev.to/thesukhjitbajwa/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>
