<?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: Ak Deepankar</title>
    <description>The latest articles on DEV Community by Ak Deepankar (@ak_deepankar).</description>
    <link>https://dev.to/ak_deepankar</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%2F3461019%2F54eddb24-69fa-4210-a237-36b6445e4b78.jpg</url>
      <title>DEV Community: Ak Deepankar</title>
      <link>https://dev.to/ak_deepankar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ak_deepankar"/>
    <language>en</language>
    <item>
      <title>I Was Tired of Copy-Pasting Translations in Figma - So I Built My Own Tool</title>
      <dc:creator>Ak Deepankar</dc:creator>
      <pubDate>Sat, 07 Feb 2026 16:44:15 +0000</pubDate>
      <link>https://dev.to/ak_deepankar/i-was-tired-of-copy-pasting-translations-in-figma-so-i-built-my-own-tool-5fc2</link>
      <guid>https://dev.to/ak_deepankar/i-was-tired-of-copy-pasting-translations-in-figma-so-i-built-my-own-tool-5fc2</guid>
      <description>&lt;p&gt;I do a lot of design work for clients who have users all over the world. That means my designs can't just look good in English, they have to work in French, Hindi, Spanish, and German too.&lt;/p&gt;

&lt;p&gt;In the past, this was a massive headache. After finishing a design, I’d spend Time copy-pasting translations from Google Sheets back into Figma. Then I’d find out the German version was way too long and broke my buttons. It was frustrating and took forever.&lt;/p&gt;

&lt;p&gt;So I built Polyglot UI, a Figma Plugin that sits Right Inside my Workflow to solve my own problem, designed to be a complete internationalization (i18n) toolkit for designers.&lt;/p&gt;

&lt;p&gt;

&lt;iframe class="tweet-embed" id="tweet-2020176573132165268-811" src="https://platform.twitter.com/embed/Tweet.html?id=2020176573132165268"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-2020176573132165268-811');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=2020176573132165268&amp;amp;theme=dark"
  }





&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How I use it every day&lt;/strong&gt;&lt;br&gt;
I don't wait until the end to think about languages anymore. Here is how it helps me:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Core Translation &amp;amp; Localization&lt;/strong&gt;&lt;br&gt;
1) Instant scanning of your Figma design to extract and translate text into French, German, Hindi, and Spanish via the Lingo.dev API.&lt;br&gt;
2) Live Canvas Preview: A real-time toggle that lets you "hot-swap" your actual Figma layers between languages so you can see exactly how the UI looks in different locales.&lt;br&gt;
3) Stress Test (Pseudo-localization): A "break-it-first" mode that simulates expansion and accents (e.g., [!!! Ààééîî !!!]) to push your layout to its limits before you even start translating. If it survives stress mode, it’ll survive real translations. Because real translations break UIs in ways English never will.&lt;br&gt;
4) Manual Overrides (Human-in-the-loop): Click any translation in the list to edit it directly. These tweaks are saved as persistent overrides in the Figma file, and the Plugin is smart enough to never overwrite your custom wording.&lt;br&gt;
5) Custom Badging: Manually edited fields are clearly flagged with a "Custom" badge so you can easily distinguish between AI suggestions and approved brand voice tweaks.&lt;br&gt;
6) The plugin automatically adapts to Figma's Light and Dark themes for a seamless workspace experience.&lt;br&gt;
7) Top-Bar Quick Clear: A fast-access button in the header to reset your current session and revert the canvas back to English without touching your settings.&lt;/p&gt;

&lt;p&gt;📦 Developer Handoff&lt;br&gt;
Export to JSON: One-click export for any language. It generates a clean, developer-ready .json file containing all your approved translations and manual overrides, ready to be dropped into a React or mobile app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works under the hood&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For those curious about the technical side, &lt;br&gt;
The underlying logic for the translation process is split between two main files:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ui.html&lt;/strong&gt; : This file contains the core API logic.&lt;br&gt;
It handles the fetch calls to the Lingo.dev engine. It manages the targetLangs array and the asynchronous batching of translation requests.&lt;br&gt;
It also contains the pseudoLocalize function used for the Stress Test.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;code.ts&lt;/strong&gt; : This file handles the Figma interaction logic.It scans the design to extract text nodes.&lt;br&gt;
It manages the persistence by saving and retrieving translations using Figma's setPluginData and getPluginData.&lt;br&gt;
It ensures that your manual overrides aren't lost by checking for the isManual flag before applying updates.&lt;/p&gt;

&lt;p&gt;In short: ui.htmlis the "brain" that talks to the AI, and code.ts is the "hands" that manages the design data inside Figma.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/akdeepankar/Polyglot-UI" rel="noopener noreferrer"&gt;Github Link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmj5blxo7jb7fh9yh8q8n.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmj5blxo7jb7fh9yh8q8n.gif" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Keeping it simple&lt;/strong&gt;&lt;br&gt;
I didn't want a "heavy" enterprise tool. I just wanted something that sits in Figma and does the boring work for me so I can get back to designing.&lt;/p&gt;

&lt;p&gt;If you're tired of copy-pasting translations for your clients, you should try Polyglot UI. It saved a lot of my time.&lt;/p&gt;

&lt;p&gt;Building the tool you actually need is a great feeling. 🏗️🚀&lt;/p&gt;

</description>
      <category>opensource</category>
    </item>
    <item>
      <title>Forged in Westeros : A Developer Portfolio</title>
      <dc:creator>Ak Deepankar</dc:creator>
      <pubDate>Tue, 27 Jan 2026 19:09:16 +0000</pubDate>
      <link>https://dev.to/ak_deepankar/forged-in-westeros-a-developer-portfolio-3e28</link>
      <guid>https://dev.to/ak_deepankar/forged-in-westeros-a-developer-portfolio-3e28</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/new-year-new-you-google-ai-2025-12-31"&gt;New Year, New You Portfolio Challenge Presented by Google AI&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  About Me
&lt;/h2&gt;

&lt;p&gt;As a long-time &lt;em&gt;Game of Thrones&lt;/em&gt; fan, I built this portfolio as a themed realm to represent my journey as a developer. Each section reflects a part of my watch - projects I’ve worked on, things I’ve learned, and experiences gained by building real products.&lt;/p&gt;

&lt;p&gt;This portfolio is a place to explore how I approach problems, write code, and turn ideas into working applications. The watch never ends.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;DON'T FORGET TO EXPLORE THE THREE THEMES IN THE PORTFOLIO. [ HOUSE STARK, HOUSE LANNISTER AND HOUSE TARGARYEN ] YOU CAN CHANGE IT. IN BOTTOM RIGHT CORNER SHIELD BUTTON.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;To Open in New Tab - &lt;a href="https://portfolio-got-550147203211.asia-south1.run.app" rel="noopener noreferrer"&gt;Portfolio Link&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Portfolio
&lt;/h2&gt;


&lt;div class="ltag__cloud-run"&gt;
  &lt;iframe height="600px" src="https://portfolio-got-550147203211.asia-south1.run.app"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;


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

&lt;p&gt;This portfolio was built using &lt;strong&gt;Next.js&lt;/strong&gt; with &lt;strong&gt;Tailwind CSS&lt;/strong&gt; for styling, allowing me to move fast while keeping the layout consistent and responsive. I focused on a component-driven structure so each section of the site could evolve independently.&lt;/p&gt;

&lt;p&gt;I used &lt;strong&gt;Google Antigravity&lt;/strong&gt; to help shape and refine the code during development, speeding up iteration and cleanup. Once ready, the site was containerized and deployed on &lt;strong&gt;Google Cloud Run&lt;/strong&gt;, making deployment simple and reliable.&lt;/p&gt;

&lt;p&gt;The goal was to keep the stack minimal, modern, and easy to maintain while letting the theme and content take center stage.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'm Most Proud Of
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;1. Immersive Storytelling 📖: The site doesn't just scroll; it tells a legend. From the "Beginning" to the "Hall of Victories," every section header and transition reinforces the protagonist's journey (you).&lt;/li&gt;
&lt;li&gt;2. Micro-Interactions ✨: Small details like the magnetic buttons, the "swish" sound logic (implied visually), and the hover-reveal interactions on project cards make the site feel alive and responsive.&lt;/li&gt;
&lt;li&gt;3. Visual Hierarchy 👁️: Despite the rich textures, the content remains readable. We balanced the "Maximalist" aesthetic (gold, crimson, parchment) with "Minimalist" usability (clean sans-serif fonts for body text, clear navigation).&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>googleaichallenge</category>
      <category>portfolio</category>
      <category>gemini</category>
    </item>
    <item>
      <title>GeoSpirits : Resurrecting GeoCities.</title>
      <dc:creator>Ak Deepankar</dc:creator>
      <pubDate>Fri, 05 Dec 2025 20:13:20 +0000</pubDate>
      <link>https://dev.to/ak_deepankar/geospirits-resurrecting-geocities-523m</link>
      <guid>https://dev.to/ak_deepankar/geospirits-resurrecting-geocities-523m</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzflxnx0l5n8f6sqcyaks.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzflxnx0l5n8f6sqcyaks.png" alt=" " width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Inspiration
&lt;/h2&gt;

&lt;p&gt;Remember GeoCities? In the late '90s, it was a digital neighborhood where anyone could create a personal homepage and claim their corner of the internet. At its peak, it was the third most-visited site on the web, a place where creativity thrived, unpolished and authentic. Then it died.&lt;/p&gt;

&lt;p&gt;For Kiroween, we decided to resurrect that spirit - literally bringing dead tech back to life. GeoSpirits is GeoCities reborn, but instead of organizing pages by fictional neighborhoods, we anchor them to real places on Earth. Every page you create gets pinned to an actual location on an interactive 3D globe. It's the same democratized web publishing that made GeoCities magical, now enhanced with modern mapping technology, real-time 3D visualization, and the ability to explore the world through other people's stories.&lt;/p&gt;

&lt;p&gt;We're bringing back the joy of building your own corner of the internet, but this time, that corner has coordinates. And with Kiro, we could focus on the creative magic while it handled the heavy lifting: from natural conversation brainstorming to spec-driven implementation, Kiro helped us summon this project from the digital graveyard. We even added some spooky touches, flying ghost animations across pages, dark themes, and atmospheric effects - because what's a resurrection without a little haunting?&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;GeoSpirits is a location-based page publishing platform that anchors web pages to real places on an interactive 3D globe.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create &amp;amp; Publish:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build pages with a drag-and-drop builder featuring 10+ components (headings, text, images, galleries, buttons, custom HTML)&lt;/li&gt;
&lt;li&gt;Use AI to auto-generate page content and layouts instantly&lt;/li&gt;
&lt;li&gt;Customize everything—colors, fonts, spacing, themes (light/dark), header images&lt;/li&gt;
&lt;li&gt;Add interactive buttons with actions like links, confetti effects, and alerts&lt;/li&gt;
&lt;li&gt;Embed custom AI chatbots on any page for visitor interaction&lt;/li&gt;
&lt;li&gt;Pin your page to any location on Earth by clicking the 3D globe&lt;/li&gt;
&lt;li&gt;Get a unique shareable URL (e.g., /my-travel-blog)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Explore &amp;amp; Discover:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Browse all published pages as purple markers on the 3D Mapbox globe&lt;/li&gt;
&lt;li&gt;Click any marker to instantly visit that page&lt;/li&gt;
&lt;li&gt;Navigate with smooth animations, atmospheric fog, and starry effects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Manage:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;View all your pages in a personal "My Sites" dashboard&lt;/li&gt;
&lt;li&gt;Edit pages anytime, update content, change locations, modify styles&lt;/li&gt;
&lt;li&gt;Delete pages with confirmation protection&lt;/li&gt;
&lt;li&gt;Secure authentication with Row Level Security using Supabase&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Special Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flying GIF animations across pages&lt;/li&gt;
&lt;li&gt;Spooky mode for Halloween vibes&lt;/li&gt;
&lt;li&gt;Server-side rendering for SEO and fast loads&lt;/li&gt;
&lt;li&gt;No login required to view published pages&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How we built it
&lt;/h2&gt;

&lt;p&gt;We built GeoSpirits with Kiro, the AI-powered IDE that made rapid development possible during this hackathon.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tech Stack:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Frontend:&lt;/strong&gt; Next.js 16 with React 19, TypeScript, and Tailwind CSS&lt;br&gt;
&lt;strong&gt;3D Globe:&lt;/strong&gt; Mapbox GL JS with globe projection, custom markers, and reverse geocoding&lt;br&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Supabase for PostgreSQL database, authentication, and Row Level Security&lt;br&gt;
&lt;strong&gt;AI Features:&lt;/strong&gt; OpenAI API integration for content generation and custom chatbot embedding&lt;br&gt;
&lt;strong&gt;Testing:&lt;/strong&gt; Vitest for unit tests, fast-check for property-based testing&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vibe Coding&lt;/strong&gt; : We used conversational coding for rapid prototyping and iteration:&lt;/p&gt;

&lt;p&gt;"Create an interactive 3D globe with Mapbox that shows markers for published pages"&lt;br&gt;
"Build a drag-and-drop page builder with customizable components"&lt;br&gt;
The most impressive generation was the LocationPicker component-we described wanting users to click on a 3D globe to select coordinates, and Kiro generated the complete implementation including Mapbox event handlers, reverse geocoding API integration, coordinate state management, and UI feedback in one go.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Spec-Driven Development:&lt;/strong&gt; For complex features, we created structured specs with requirements, design, and tasks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI Page Generator Spec:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;10 user stories with 50 acceptance criteria&lt;br&gt;
8 correctness properties like: "For any AI-generated component, the component must conform to the PageComponent type schema with all required fields and appropriate default styles"&lt;br&gt;
15 implementation tasks with property-based tests (100+ iterations each using fast-check)&lt;br&gt;
Covered: AI mode, prompt engineering, OpenAI integration, error handling, regeneration, token tracking&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Globe Image Markers Spec:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;5 user stories with 25 acceptance criteria&lt;br&gt;
12 correctness properties like: "For any marker with valid location data, when clicked, the side panel should open and display the location details"&lt;br&gt;
8 implementation tasks covering marker rendering, validation, styling, and side panel interactions&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Specs vs Vibe Coding:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Specs for complex features: AI generation (external API, state management, security), authentication (RLS policies, session management), CRUD operations (validation, error handling)&lt;br&gt;
Vibe coding for rapid iteration: UI styling, simple components, quick fixes, visual design&lt;br&gt;
Hybrid approach: Prototype with vibe coding, create spec when complexity emerged&lt;br&gt;
Example - AI Generation:&lt;/p&gt;

&lt;p&gt;Vibe coding attempt: 30 min prototype, but no error handling, validation, or regeneration&lt;br&gt;
Spec-driven: 1 hour writing spec, 4 hours Kiro implementation, fully tested with property-based tests&lt;br&gt;
Result: Production-ready feature with comprehensive edge case coverage&lt;br&gt;
Kiro's Impact:&lt;/p&gt;

&lt;p&gt;Generated complete Supabase schemas with RLS policies&lt;br&gt;
Built entire Mapbox integration with 3D globe, marker clustering, atmospheric effects&lt;br&gt;
Created 20+ React components with TypeScript types and CSS modules&lt;br&gt;
Implemented all CRUD server actions with proper error handling&lt;br&gt;
Generated property-based tests validating correctness across 100+ random inputs&lt;br&gt;
Integrated OpenAI API with prompt engineering, response parsing, token tracking&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges we ran into
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;3D Globe Interactions:&lt;/strong&gt; Handling click events on a rotating 3D globe with accurate coordinate mapping and reverse geocoding&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Validation:&lt;/strong&gt; Ensuring OpenAI responses matched our component schema without breaking the page builder&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State Management:&lt;/strong&gt; Preserving manual edits during AI regeneration across multiple components&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RLS Policies:&lt;/strong&gt; Balancing user-only editing with public page viewing in Supabase&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Accomplishments that we're proud of
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Resurrected GeoCities with modern tech-democratized publishing anchored to real places&lt;/li&gt;
&lt;li&gt;Property-based testing with 100+ iterations catching edge cases automatically&lt;/li&gt;
&lt;li&gt;Hybrid workflow mastery: Specs for complexity, vibe coding for speed&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>kiro</category>
      <category>kiroween</category>
    </item>
  </channel>
</rss>
