<?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>Forem: Abhijith P Subash</title>
    <description>The latest articles on Forem by Abhijith P Subash (@abhijith_p_subash).</description>
    <link>https://forem.com/abhijith_p_subash</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%2F739669%2Fdb873a3e-9bd4-4622-a230-cc16cd36acb1.PNG</url>
      <title>Forem: Abhijith P Subash</title>
      <link>https://forem.com/abhijith_p_subash</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/abhijith_p_subash"/>
    <language>en</language>
    <item>
      <title>🧠 Best Free &amp; Open Source Clipboard Managers 2026 (Windows, macOS, Linux)</title>
      <dc:creator>Abhijith P Subash</dc:creator>
      <pubDate>Fri, 20 Mar 2026 17:58:44 +0000</pubDate>
      <link>https://forem.com/abhijith_p_subash/best-free-open-source-clipboard-managers-windows-macos-linux-3f6</link>
      <guid>https://forem.com/abhijith_p_subash/best-free-open-source-clipboard-managers-windows-macos-linux-3f6</guid>
      <description>&lt;p&gt;Clipboard history is one of those things you don’t think about — until you lose something important.&lt;/p&gt;

&lt;p&gt;For developers, it’s worse:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;snippets disappear
&lt;/li&gt;
&lt;li&gt;commands need re-copying
&lt;/li&gt;
&lt;li&gt;context switching slows everything down
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A clipboard manager turns copy-paste into something &lt;strong&gt;persistent, searchable, and reusable&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This list focuses on &lt;strong&gt;free + open source tools&lt;/strong&gt; that actually hold up in daily use across platforms.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧭 What to Look For
&lt;/h2&gt;

&lt;p&gt;Before jumping into tools, a quick filter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Local-first storage&lt;/strong&gt; (privacy + speed)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Searchable history&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keyboard-first access&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Low resource usage&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-platform (if you work across OSes)&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔥 1. Ortu (Modern, local-first, keyboard-driven)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://ortu.abhijithpsubash.com/" rel="noopener noreferrer"&gt;https://ortu.abhijithpsubash.com/&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;Ortu is built with a clear goal: &lt;strong&gt;fast clipboard access without clutter&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;⚡ Local-first (no cloud sync)&lt;/li&gt;
&lt;li&gt;🔍 Fast search&lt;/li&gt;
&lt;li&gt;⌨️ Keyboard-centric workflow&lt;/li&gt;
&lt;li&gt;🧠 Organized history&lt;/li&gt;
&lt;li&gt;🪶 Lightweight runtime &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Where it fits
&lt;/h3&gt;

&lt;p&gt;Most tools are either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;outdated UI
&lt;/li&gt;
&lt;li&gt;or overloaded with features
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ortu stays focused. It’s best for developers who want &lt;strong&gt;speed + minimalism without losing capability&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧰 2. CopyQ (Feature-heavy, scriptable powerhouse)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://hluk.github.io/CopyQ/" rel="noopener noreferrer"&gt;https://hluk.github.io/CopyQ/&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;One of the most mature clipboard managers available.&lt;/p&gt;

&lt;h3&gt;
  
  
  Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🔍 Advanced search &amp;amp; filtering
&lt;/li&gt;
&lt;li&gt;🧩 Tab-based organization
&lt;/li&gt;
&lt;li&gt;⚙️ Scriptable (automation support)
&lt;/li&gt;
&lt;li&gt;🧾 Handles text, images, rich content
&lt;/li&gt;
&lt;li&gt;🔄 Custom workflows
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Downsides
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;UI feels dated
&lt;/li&gt;
&lt;li&gt;Takes time to fully utilize
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Platform
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✅ Windows
&lt;/li&gt;
&lt;li&gt;✅ macOS
&lt;/li&gt;
&lt;li&gt;✅ Linux
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Best for
&lt;/h3&gt;

&lt;p&gt;If you want &lt;strong&gt;complete control over clipboard behavior&lt;/strong&gt;, this is hard to beat.&lt;/p&gt;




&lt;h2&gt;
  
  
  🪟 3. Ditto (Classic, reliable Windows tool)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/sabrogden/Ditto" rel="noopener noreferrer"&gt;https://github.com/sabrogden/Ditto&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;Ditto is one of the most widely used clipboard managers on Windows.&lt;/p&gt;

&lt;h3&gt;
  
  
  Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;📋 Extensive clipboard history
&lt;/li&gt;
&lt;li&gt;🔍 Searchable entries
&lt;/li&gt;
&lt;li&gt;🌐 Network sync support
&lt;/li&gt;
&lt;li&gt;🪶 Lightweight
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Downsides
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Windows only
&lt;/li&gt;
&lt;li&gt;UI is functional, not modern
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Platform
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✅ Windows
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Best for
&lt;/h3&gt;

&lt;p&gt;Windows users who want something &lt;strong&gt;stable and proven&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🍎 4. Clipy (Simple and native for macOS)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/Clipy/Clipy" rel="noopener noreferrer"&gt;https://github.com/Clipy/Clipy&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;A lightweight macOS clipboard manager based on ClipMenu.&lt;/p&gt;

&lt;h3&gt;
  
  
  Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;📌 Snippet support
&lt;/li&gt;
&lt;li&gt;⌨️ Shortcut-based access
&lt;/li&gt;
&lt;li&gt;🍎 Native macOS feel
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Downsides
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Limited advanced features
&lt;/li&gt;
&lt;li&gt;Slower development pace
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Platform
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✅ macOS
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Best for
&lt;/h3&gt;

&lt;p&gt;If you want &lt;strong&gt;something simple that just works&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 5. Diodon (Clean Linux integration)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/diodon-dev/diodon" rel="noopener noreferrer"&gt;https://github.com/diodon-dev/diodon&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;Designed specifically for Linux desktop environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🪶 Lightweight
&lt;/li&gt;
&lt;li&gt;🔍 Searchable history
&lt;/li&gt;
&lt;li&gt;🔐 Optional encryption
&lt;/li&gt;
&lt;li&gt;🖥️ GNOME integration
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Downsides
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Limited feature depth
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Platform
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✅ Linux
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Best for
&lt;/h3&gt;

&lt;p&gt;Linux users who want a &lt;strong&gt;clean and native experience&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ 6. Parcellite (Minimal and fast)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/rickyrockrat/parcellite" rel="noopener noreferrer"&gt;https://github.com/rickyrockrat/parcellite&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;One of the simplest clipboard managers available.&lt;/p&gt;

&lt;h3&gt;
  
  
  Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;⚡ Extremely lightweight
&lt;/li&gt;
&lt;li&gt;🧾 Basic clipboard history
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Downsides
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Outdated UI
&lt;/li&gt;
&lt;li&gt;Minimal features
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Platform
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✅ Linux
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Best for
&lt;/h3&gt;

&lt;p&gt;If you want &lt;strong&gt;just clipboard history — nothing else&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🌍 Platform Coverage Overview
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Windows&lt;/th&gt;
&lt;th&gt;macOS&lt;/th&gt;
&lt;th&gt;Linux&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Ortu&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;⚠️&lt;/td&gt;
&lt;td&gt;Verify current support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CopyQ&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;Fully cross-platform&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ditto&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;Windows-focused&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Clipy&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;macOS only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Diodon&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;Linux only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Parcellite&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;Minimal Linux tool&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;⚠️ = verify based on latest release&lt;/p&gt;




&lt;h2&gt;
  
  
  🧪 Observations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CopyQ&lt;/strong&gt; is the most powerful, but not the simplest
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ditto&lt;/strong&gt; is still the safest choice on Windows
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clipy&lt;/strong&gt; is good enough for most macOS users
&lt;/li&gt;
&lt;li&gt;Linux has solid lightweight options (Diodon / Parcellite)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ortu fills a gap&lt;/strong&gt;: modern UX + local-first + developer-focused
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧩 Which One Should You Pick?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Want &lt;strong&gt;modern + fast + minimal&lt;/strong&gt; → Ortu
&lt;/li&gt;
&lt;li&gt;Want &lt;strong&gt;automation + deep control&lt;/strong&gt; → CopyQ
&lt;/li&gt;
&lt;li&gt;On &lt;strong&gt;Windows&lt;/strong&gt; → Ditto
&lt;/li&gt;
&lt;li&gt;On &lt;strong&gt;macOS&lt;/strong&gt; → Clipy
&lt;/li&gt;
&lt;li&gt;On &lt;strong&gt;Linux&lt;/strong&gt; → Diodon / Parcellite
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Clipboard managers don’t look important — until you use one consistently.&lt;/p&gt;

&lt;p&gt;The real value shows up in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fewer interruptions
&lt;/li&gt;
&lt;li&gt;faster recall
&lt;/li&gt;
&lt;li&gt;less repeated work
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s a small tool, but it compounds daily.&lt;/p&gt;




&lt;h2&gt;
  
  
  💬 What are you using?
&lt;/h2&gt;

&lt;p&gt;If you’re using something better (or built your own), drop it below. Always interesting to see different workflows around something this fundamental.&lt;/p&gt;




</description>
      <category>opensource</category>
      <category>productivity</category>
      <category>resources</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Ortu: A Local-First Clipboard Manager Built with Tauri and Rust</title>
      <dc:creator>Abhijith P Subash</dc:creator>
      <pubDate>Mon, 16 Mar 2026 15:48:19 +0000</pubDate>
      <link>https://forem.com/abhijith_p_subash/ortu-a-local-first-clipboard-manager-built-with-tauri-and-rust-1dn3</link>
      <guid>https://forem.com/abhijith_p_subash/ortu-a-local-first-clipboard-manager-built-with-tauri-and-rust-1dn3</guid>
      <description>&lt;p&gt;Most clipboard managers start simple and slowly turn into background tools you barely trust.&lt;br&gt;&lt;br&gt;
They collect everything, sync somewhere you didn’t configure, and rarely give you precise control.&lt;/p&gt;

&lt;p&gt;I wanted something different: &lt;strong&gt;a fast, keyboard-first clipboard manager that stays local and predictable.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That’s why I built &lt;strong&gt;Ortu&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/abhijith-p-subash/ortu" rel="noopener noreferrer"&gt;https://github.com/abhijith-p-subash/ortu&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Landing page: &lt;a href="https://ortu.abhijithpsubash.com/" rel="noopener noreferrer"&gt;https://ortu.abhijithpsubash.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;License: MIT&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What Ortu Is
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Ortu is a local-first clipboard manager designed for fast recall and structured clipboard history.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It runs as a desktop application built with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rust + Tauri&lt;/strong&gt; for the core application and system integration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is simple:&lt;br&gt;&lt;br&gt;
capture clipboard history reliably and make it &lt;strong&gt;quick to retrieve, search, and organize.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No cloud dependency. No external services.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Another Clipboard Manager?
&lt;/h2&gt;

&lt;p&gt;The clipboard becomes surprisingly important when you work with code, commands, links, tokens, and configuration snippets.&lt;/p&gt;

&lt;p&gt;Typical problems developers run into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Losing something copied a few minutes ago&lt;/li&gt;
&lt;li&gt;Repeating common snippets&lt;/li&gt;
&lt;li&gt;Searching through long clipboard history&lt;/li&gt;
&lt;li&gt;Organizing useful fragments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ortu treats clipboard history as &lt;strong&gt;something worth structuring&lt;/strong&gt;, not just a temporary buffer.&lt;/p&gt;




&lt;h2&gt;
  
  
  Core Features
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Clipboard History Capture
&lt;/h3&gt;

&lt;p&gt;Ortu continuously captures clipboard content during runtime.&lt;/p&gt;

&lt;p&gt;The current pipeline focuses on &lt;strong&gt;text-first content&lt;/strong&gt;, which covers most developer workflows: commands, logs, tokens, code fragments, and links.&lt;/p&gt;




&lt;h3&gt;
  
  
  Pin Important Items
&lt;/h3&gt;

&lt;p&gt;Some clipboard entries shouldn’t disappear into history.&lt;/p&gt;

&lt;p&gt;Ortu allows you to &lt;strong&gt;pin items&lt;/strong&gt;, keeping them accessible regardless of history rotation.&lt;/p&gt;

&lt;p&gt;Good for things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;frequently used commands&lt;/li&gt;
&lt;li&gt;environment variables&lt;/li&gt;
&lt;li&gt;reusable snippets&lt;/li&gt;
&lt;li&gt;reference links&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Groups and Smart Organization
&lt;/h3&gt;

&lt;p&gt;Clipboard history becomes more useful when it’s organized.&lt;/p&gt;

&lt;p&gt;Ortu supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;User-defined groups&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Smart auto-grouping&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This allows related clipboard items to stay together rather than scattered across history.&lt;/p&gt;




&lt;h3&gt;
  
  
  Search and Filtering
&lt;/h3&gt;

&lt;p&gt;Fast recall is the core goal.&lt;/p&gt;

&lt;p&gt;Ortu provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Free-text search&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Group filtering&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example query: &lt;code&gt;group:docker&lt;/code&gt; Or just type part of the content and Ortu will filter the history instantly.&lt;/p&gt;




&lt;h3&gt;
  
  
  Popup Quick Access
&lt;/h3&gt;

&lt;p&gt;The quickest way to retrieve clipboard history is a keyboard shortcut.&lt;/p&gt;

&lt;p&gt;Ortu provides a popup interface:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Alt + V&lt;/strong&gt; → Windows / Linux
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Option + V&lt;/strong&gt; → macOS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This brings up the clipboard history instantly without leaving your current application.&lt;/p&gt;




&lt;h3&gt;
  
  
  Snippets and Text Transforms
&lt;/h3&gt;

&lt;p&gt;Clipboard managers become much more useful when they act as &lt;strong&gt;text utilities&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Ortu supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;reusable snippets&lt;/li&gt;
&lt;li&gt;text transforms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes it useful not only for recalling clipboard history but also for &lt;strong&gt;generating repeatable text fragments&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Backup and Restore
&lt;/h3&gt;

&lt;p&gt;Clipboard data is stored locally, but you can still export it.&lt;/p&gt;

&lt;p&gt;Ortu supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;JSON backup&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restore from backup&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Export options&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes it easy to migrate or archive clipboard history.&lt;/p&gt;




&lt;h3&gt;
  
  
  Local-First Storage
&lt;/h3&gt;

&lt;p&gt;All clipboard data is stored locally.&lt;/p&gt;

&lt;p&gt;This design choice keeps the tool predictable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no external services&lt;/li&gt;
&lt;li&gt;no background syncing&lt;/li&gt;
&lt;li&gt;no account setup&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Just local data and a fast queryable history.&lt;/p&gt;




&lt;h2&gt;
  
  
  Technology Stack
&lt;/h2&gt;

&lt;p&gt;Ortu is built with a stack that prioritizes performance and portability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Core&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rust&lt;/li&gt;
&lt;li&gt;Tauri&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This combination keeps the application lightweight while still allowing a modern UI.&lt;/p&gt;




&lt;h2&gt;
  
  
  Design Goals
&lt;/h2&gt;

&lt;p&gt;Ortu focuses on a few clear principles:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Local-first&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keyboard-driven workflow&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fast search and recall&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Structured clipboard history&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Minimal runtime overhead&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The goal is not to replicate every clipboard tool feature, but to provide a &lt;strong&gt;clean and reliable clipboard workflow for developers.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Try Ortu
&lt;/h2&gt;

&lt;p&gt;If you want a clipboard manager that stays local and focuses on speed and organization:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/abhijith-p-subash/ortu" rel="noopener noreferrer"&gt;https://github.com/abhijith-p-subash/ortu&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Landing page: &lt;a href="https://getortu.netlify.app/" rel="noopener noreferrer"&gt;https://getortu.netlify.app/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Feedback, issues, and contributions are welcome.&lt;/p&gt;




&lt;h2&gt;
  
  
  Closing Thoughts
&lt;/h2&gt;

&lt;p&gt;Clipboard history often becomes invisible infrastructure in a developer’s workflow.&lt;br&gt;&lt;br&gt;
Ortu treats it as something worth structuring.&lt;/p&gt;

&lt;p&gt;A fast popup, searchable history, grouping, and local storage can turn the clipboard from a temporary buffer into a &lt;strong&gt;useful development tool.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>rust</category>
      <category>tauri</category>
      <category>opensource</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Keep Your Computer Awake with Espresso ☕️ – A Lightweight Cross-Platform Tray App</title>
      <dc:creator>Abhijith P Subash</dc:creator>
      <pubDate>Wed, 01 Oct 2025 10:17:13 +0000</pubDate>
      <link>https://forem.com/abhijith_p_subash/keep-your-computer-awake-with-espresso-a-lightweight-cross-platform-tray-app-35dd</link>
      <guid>https://forem.com/abhijith_p_subash/keep-your-computer-awake-with-espresso-a-lightweight-cross-platform-tray-app-35dd</guid>
      <description>&lt;p&gt;Have you ever been frustrated when your computer automatically goes to sleep in the middle of work, a presentation, or a long-running task? I recently built &lt;strong&gt;Espresso&lt;/strong&gt;, a lightweight, cross-platform tray application that keeps your computer awake by simulating key activity at regular intervals.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is Espresso?
&lt;/h2&gt;

&lt;p&gt;Espresso is designed to be simple, unobtrusive, and cross-platform. It runs silently in your system tray and simulates user activity at a configurable interval. You can easily start, stop, or quit the app from the tray menu.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Runs in the &lt;strong&gt;system tray&lt;/strong&gt; with a clean Start / Stop / Quit menu.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-platform&lt;/strong&gt;: works on Windows (&lt;code&gt;.exe&lt;/code&gt;), macOS (&lt;code&gt;.app&lt;/code&gt;), and Linux (binary).
&lt;/li&gt;
&lt;li&gt;Lightweight and efficient, with minimal CPU and memory usage. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Use Espresso?
&lt;/h2&gt;

&lt;p&gt;Unlike other “keep awake” apps that might be heavy or intrusive, Espresso is lightweight, open-source, and customizable. Whether you’re running a long script, giving a presentation, or just don’t want your system to sleep, Espresso keeps your workflow uninterrupted.&lt;/p&gt;

&lt;h2&gt;
  
  
  Contributing 👨🏻‍💻
&lt;/h2&gt;

&lt;p&gt;Espresso is open-source under the MIT license. You can fork the repo, contribute features, or report issues. Python developers will find it easy to extend for additional activity types, tray menu options, or platform-specific optimizations.&lt;/p&gt;

&lt;p&gt;Check it out here 👉 :&lt;a href="https://github.com/abhijith-p-subash/espresso" rel="noopener noreferrer"&gt;Espresso☕️ Github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
    </item>
    <item>
      <title>Bruno vs Postman: Which API Client Should You Choose?</title>
      <dc:creator>Abhijith P Subash</dc:creator>
      <pubDate>Wed, 24 Sep 2025 02:23:22 +0000</pubDate>
      <link>https://forem.com/abhijith_p_subash/bruno-vs-postman-which-api-client-should-you-choose-6kf</link>
      <guid>https://forem.com/abhijith_p_subash/bruno-vs-postman-which-api-client-should-you-choose-6kf</guid>
      <description>&lt;p&gt;For years, &lt;strong&gt;Postman&lt;/strong&gt; has been the go-to tool for testing and managing APIs. But lately, &lt;strong&gt;Bruno&lt;/strong&gt; — a lightweight, Git-friendly, offline-first API client — has been winning the hearts of developers.  &lt;/p&gt;

&lt;p&gt;In this article, we’ll look at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What Bruno is and why it’s different
&lt;/li&gt;
&lt;li&gt;Key features that make Bruno stand out
&lt;/li&gt;
&lt;li&gt;A side-by-side comparison of Bruno vs Postman
&lt;/li&gt;
&lt;li&gt;Where Bruno is better — and where Postman still shines
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Quick Feature Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Bruno 🟢&lt;/th&gt;
&lt;th&gt;Postman 🟠&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Data Storage&lt;/td&gt;
&lt;td&gt;Local &lt;code&gt;.bru&lt;/code&gt; files (Git-friendly, plain text)&lt;/td&gt;
&lt;td&gt;Cloud-first (exports possible but less transparent)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Offline Support&lt;/td&gt;
&lt;td&gt;✅ Works fully offline&lt;/td&gt;
&lt;td&gt;⚠️ Limited, many features need cloud&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Version Control&lt;/td&gt;
&lt;td&gt;✅ Git-native workflow&lt;/td&gt;
&lt;td&gt;❌ Export/import required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Performance&lt;/td&gt;
&lt;td&gt;✅ Lightweight, fast&lt;/td&gt;
&lt;td&gt;⚠️ Can feel heavy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pricing&lt;/td&gt;
&lt;td&gt;Open source (free core, paid pro tiers)&lt;/td&gt;
&lt;td&gt;Freemium with limits; paid tiers for advanced features&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Why Bruno is Gaining Traction
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Local-first design&lt;/strong&gt; — your collections are files you can commit to Git.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No login needed&lt;/strong&gt; — works fully offline, with privacy in mind.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CLI and IDE support&lt;/strong&gt; — great for automation and CI/CD.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lightweight and fast&lt;/strong&gt; — fewer distractions, quicker workflows.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Where Postman Still Wins
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Mock servers and API monitoring
&lt;/li&gt;
&lt;li&gt;Team dashboards and collaboration
&lt;/li&gt;
&lt;li&gt;Enterprise-level governance and integrations
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;👉 Want the &lt;strong&gt;full deep-dive comparison&lt;/strong&gt; with detailed features, pros/cons, and plugin links?&lt;br&gt;&lt;br&gt;
I’ve written a complete guide here:  &lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://abhijithpsubash.com/blog/bruno-vs-postman-which-api-client-should-you-choose?page=1" rel="noopener noreferrer"&gt;Read the full article on my blog&lt;/a&gt;  &lt;/p&gt;




&lt;p&gt;💡 Pro tip: if you’re a solo dev, freelancer, or small team, Bruno may cover &lt;strong&gt;90% of your API testing needs&lt;/strong&gt; without the overhead of Postman. If you’re in an enterprise setting, Postman’s collaboration features may still be essential.&lt;/p&gt;

</description>
      <category>api</category>
      <category>productivity</category>
      <category>opensource</category>
      <category>devtool</category>
    </item>
    <item>
      <title>🧠 The Illusion of Thinking: Apple’s Deep Dive into AI’s Reasoning Limits</title>
      <dc:creator>Abhijith P Subash</dc:creator>
      <pubDate>Wed, 25 Jun 2025 16:43:03 +0000</pubDate>
      <link>https://forem.com/abhijith_p_subash/the-illusion-of-thinking-apples-deep-dive-into-ais-reasoning-limits-3m2j</link>
      <guid>https://forem.com/abhijith_p_subash/the-illusion-of-thinking-apples-deep-dive-into-ais-reasoning-limits-3m2j</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Can AI really “&lt;em&gt;think&lt;/em&gt;”? Apple’s new research suggests we may be mistaking verbosity for intelligence&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Large Language Models (LLMs) have evolved dramatically—from basic autocomplete machines to “reasoning” agents that can unravel math problems, write code, and simulate step-by-step logic. Enter Large Reasoning Models (LRMs)—variants like GPT-4o, Claude 3.7 Thinking, and DeepSeek-R1—that “think out loud” using long Chain-of-Thought (CoT) reasoning. These models are trained to produce detailed reasoning traces before arriving at an answer.&lt;/p&gt;

&lt;p&gt;Sounds like progress toward Artificial General Intelligence, right?&lt;br&gt;
Apple says: &lt;strong&gt;Not so fast&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧪 The Study: Beyond Final Answers
&lt;/h2&gt;

&lt;p&gt;Apple's research team conducted a systematic evaluation titled “&lt;strong&gt;The Illusion of Thinking&lt;/strong&gt;”. The core idea? Move away from just evaluating &lt;em&gt;final answers&lt;/em&gt;, and dive deep into the &lt;em&gt;thinking process&lt;/em&gt;—the reasoning traces, internal logic, and consistency.&lt;/p&gt;

&lt;p&gt;Instead of relying on traditional math/coding benchmarks (which may be contaminated with training data), they built &lt;strong&gt;controllable puzzle environments&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🏗️ Tower of Hanoi&lt;/li&gt;
&lt;li&gt;🔄 Checker Jumping&lt;/li&gt;
&lt;li&gt;⛵ River Crossing&lt;/li&gt;
&lt;li&gt;🧱 Blocks World&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These puzzles let researchers gradually increase problem complexity and analyze not just if the model got it right—but &lt;em&gt;how it&lt;/em&gt; reasoned.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚦 Three Phases of AI “Thinking”
&lt;/h2&gt;

&lt;p&gt;The experiments uncovered three distinct performance regimes for LRMs:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Low Complexity: Standard LLMs &amp;gt; LRMs&lt;/strong&gt;&lt;br&gt;
At basic levels, regular LLMs actually outperform reasoning models. They’re more accurate and more efficient (fewer tokens).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Medium Complexity: LRMs Gain Edge&lt;/strong&gt;&lt;br&gt;
When puzzles become moderately complex, LRMs shine. Their ability to reason through multiple steps gives them an advantage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. High Complexity: Total Collapse&lt;/strong&gt;&lt;br&gt;
Surprisingly, both LRMs and LLMs fail entirely beyond a complexity threshold. Even more shocking? Reasoning effort drops—LRMs stop trying even when they have token budget left.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔍 Inside the Mind of LRMs
&lt;/h2&gt;

&lt;p&gt;Apple’s team dug into the actual &lt;strong&gt;reasoning traces&lt;/strong&gt; using puzzle simulators. Here's what they found:&lt;/p&gt;

&lt;p&gt;🤯 &lt;strong&gt;Overthinking at low complexity&lt;/strong&gt;: Models find the right answer early but keep thinking, often wandering into incorrect territory.&lt;/p&gt;

&lt;p&gt;🔄 &lt;strong&gt;Late corrections at medium complexity&lt;/strong&gt;: Right answers surface after lots of wrong ideas.&lt;/p&gt;

&lt;p&gt;💥 &lt;strong&gt;Zero success at high complexity&lt;/strong&gt;: No correct solutions, no meaningful exploration.&lt;/p&gt;

&lt;p&gt;In short: LRMs “think” inefficiently. And the more complex the problem, the worse it gets.&lt;/p&gt;

&lt;h2&gt;
  
  
  😮 Even When Given the Algorithm…
&lt;/h2&gt;

&lt;p&gt;The researchers even &lt;em&gt;handed the models the correct solution algorithm&lt;/em&gt;. Did they execute it flawlessly?&lt;/p&gt;

&lt;p&gt;Nope.&lt;br&gt;
Even then, LRMs made mistakes—especially with problems like &lt;strong&gt;River Crossing&lt;/strong&gt;, where performance fell apart after just a few moves. This indicates deep limitations in symbolic reasoning and logical execution.&lt;/p&gt;

&lt;h2&gt;
  
  
  📉 A Hard Limit on Reasoning?
&lt;/h2&gt;

&lt;p&gt;Despite all the recent advancements—Chain-of-Thought prompting, Reinforcement Learning, long context windows—the findings point to a fundamental truth:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Today’s reasoning models simulate thinking. But they don’t generalize it.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There’s a &lt;strong&gt;scaling barrier&lt;/strong&gt; where more compute doesn’t mean better thinking. In fact, Apple observed that LRMs &lt;em&gt;think less&lt;/em&gt; when faced with harder tasks, perhaps realizing they’re outmatched.&lt;/p&gt;

&lt;h2&gt;
  
  
  💡 Why This Matters
&lt;/h2&gt;

&lt;p&gt;This isn’t just an academic insight. If you’re building apps that rely on LLMs for reasoning—coding assistants, math solvers, autonomous agents—you need to ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;❓ Are the models actually reasoning, or mimicking?&lt;/li&gt;
&lt;li&gt;🔁 Are their thinking steps valid—or verbose hallucinations?&lt;/li&gt;
&lt;li&gt;🧱 Can they scale to harder tasks, or are they brittle?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This paper urges the community to &lt;strong&gt;rethink what reasoning means in LLMs&lt;/strong&gt;, and whether “thinking tokens” are a path forward—or a distraction.&lt;/p&gt;

&lt;h2&gt;
  
  
  🗣️ Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Apple's research delivers a well-measured critique of current LLM reasoning claims. By peeling back the layers of these models’ "thought processes," it reveals that our progress toward AGI is more superficial than we'd like to admit.&lt;/p&gt;

&lt;p&gt;As devs and researchers, it’s a wake-up call:&lt;br&gt;
&lt;strong&gt;Don’t be fooled by the illusion of thinking.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🧠 TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;LRMs are better at some tasks—but not universally.&lt;/li&gt;
&lt;li&gt;They fail at general reasoning beyond a complexity threshold.&lt;/li&gt;
&lt;li&gt;Given more tokens ≠ more reasoning effort.&lt;/li&gt;
&lt;li&gt;Models “overthink” simple problems and collapse under hard ones.&lt;/li&gt;
&lt;li&gt;Simulating thought ≠ true reasoning.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Read the full paper &lt;a href="https://ml-site.cdn-apple.com/papers/the-illusion-of-thinking.pdf" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Link: &lt;a href="https://machinelearning.apple.com/research/illusion-of-thinking" rel="noopener noreferrer"&gt;https://machinelearning.apple.com/research/illusion-of-thinking&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let’s keep pushing—but keep questioning.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>llm</category>
      <category>ai</category>
    </item>
    <item>
      <title>Microsoft's TypeScript-Go Project: A Deep Dive and What It Means for You 🚀</title>
      <dc:creator>Abhijith P Subash</dc:creator>
      <pubDate>Wed, 12 Mar 2025 16:00:51 +0000</pubDate>
      <link>https://forem.com/abhijith_p_subash/microsofts-typescript-go-project-a-deep-dive-and-what-it-means-for-you-n6j</link>
      <guid>https://forem.com/abhijith_p_subash/microsofts-typescript-go-project-a-deep-dive-and-what-it-means-for-you-n6j</guid>
      <description>&lt;p&gt;Hey Devs!&lt;/p&gt;

&lt;p&gt;The buzz around Microsoft's &lt;code&gt;typescript-go&lt;/code&gt; project is real, and for good reason. It's not just a port; it's a fundamental shift aimed at tackling TypeScript's performance limitations. Let's dig into the details and understand what this means for the future of TypeScript.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Understanding the Motivation: Performance Bottlenecks&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As many of us know, the TypeScript compiler (TSC) is a powerful tool, but it can struggle with large codebases. The core issue lies in the single-threaded nature of the JavaScript runtime where TSC operates. For massive projects, this translates to lengthy build times and a less-than-ideal developer experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enter Go: Concurrency and Performance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Microsoft's decision to port TypeScript to Go is driven by Go's inherent strengths:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Concurrency:&lt;/strong&gt; Go's goroutines and channels enable parallel execution, making it perfect for tasks like parsing and type-checking, which can be easily parallelized.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance:&lt;/strong&gt; Go's compiled nature and efficient runtime offer significant speed improvements over interpreted JavaScript.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory Management:&lt;/strong&gt; Go's garbage collection is designed for performance, reducing memory overhead and improving stability.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Key Insights from the Repository:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Experimental Nature:&lt;/strong&gt; The repository is clearly marked as experimental. Microsoft is actively developing and iterating, so expect changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Focus on Core Compiler Features:&lt;/strong&gt; The initial focus is on porting the essential compiler functionalities, ensuring core type-checking and compilation capabilities are robust.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Incremental Progress:&lt;/strong&gt; The project is being built incrementally, with features being added and optimized over time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Potential for TypeScript 7:&lt;/strong&gt; The current focus seems to be towards a major version shift, possibly TypeScript 7, that will utilize the go compiler. This may mean that there will be breaking changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integration Challenges:&lt;/strong&gt; Integrating the Go-based compiler with existing TypeScript tooling and workflows will be a significant challenge. Microsoft is likely working on solutions to ensure a smooth transition.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The readme:&lt;/strong&gt; The readme file is a great source of information, and it is frequently updated with the current state of the project.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What This Means for Developers:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Significantly Faster Builds:&lt;/strong&gt; Expect substantial improvements in compilation times, especially for large projects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Improved Developer Experience:&lt;/strong&gt; Faster feedback loops will lead to a more productive and enjoyable development experience.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Potential for New Tooling:&lt;/strong&gt; The Go-based compiler opens up possibilities for new and more efficient TypeScript tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Possible Breaking Changes:&lt;/strong&gt; As with any major version change, there is potential for breaking changes, so be prepared to adapt.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Increased performance for CI/CD pipelines:&lt;/strong&gt; Faster builds will reduce the time that CI/CD pipelines take to complete.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How You Can Get Involved:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep an eye on the &lt;code&gt;microsoft/typescript-go&lt;/code&gt; repository for updates.&lt;/li&gt;
&lt;li&gt;Contribute to the project by reporting issues, submitting pull requests, or participating in discussions.&lt;/li&gt;
&lt;li&gt;Test the experimental build when it becomes available.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;The &lt;code&gt;typescript-go&lt;/code&gt; project is a bold move by Microsoft, signaling a commitment to addressing TypeScript's performance challenges. While it's still in its early stages, the potential benefits are significant. This project could revolutionize the way we build and maintain large-scale TypeScript applications.&lt;/p&gt;

&lt;p&gt;What are your thoughts? Are you excited about the potential of a Go-powered TypeScript compiler? Share your insights and questions in the comments below! 👇&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>go</category>
    </item>
    <item>
      <title>🚀 Supercharge Your Hyper Terminal: Must-Have Plugins, Tips &amp; Tricks</title>
      <dc:creator>Abhijith P Subash</dc:creator>
      <pubDate>Tue, 11 Mar 2025 17:43:06 +0000</pubDate>
      <link>https://forem.com/abhijith_p_subash/supercharge-your-hyper-terminal-must-have-plugins-tips-tricks-3pmj</link>
      <guid>https://forem.com/abhijith_p_subash/supercharge-your-hyper-terminal-must-have-plugins-tips-tricks-3pmj</guid>
      <description>&lt;p&gt;Hyper is not just a terminal emulator—it’s a productivity powerhouse for developers. With its extensibility and sleek design, you can transform it into the ultimate coding companion. In this post, I’ll share must-have plugins, customization tips, and performance hacks to make your Hyper terminal faster, prettier, and more efficient. Let’s dive in!&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 Install Hyper (If You Haven’t Already)
&lt;/h2&gt;

&lt;p&gt;Download and install Hyper from the official site:&lt;/p&gt;

&lt;h4&gt;
  
  
  🔗 &lt;a href="https://hyper.is/" rel="noopener noreferrer"&gt;https://hyper.is/&lt;/a&gt;
&lt;/h4&gt;




&lt;h2&gt;
  
  
  🛠️ How to Install Hyper Plugins
&lt;/h2&gt;

&lt;p&gt;Installing plugins in Hyper is super easy. Just run this command in your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hyper i &amp;lt;plugin-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ready to supercharge your terminal? Let’s go! 🚀&lt;/p&gt;




&lt;h2&gt;
  
  
  🎨 1. Performance &amp;amp; UI Enhancements
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ✨ hyper-snazzy
&lt;/h3&gt;

&lt;p&gt;A clean, minimal, and beautiful theme for Hyper. Perfect for those who love aesthetics.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hyper i hyper-snazzy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🌟 hyperpower
&lt;/h3&gt;

&lt;p&gt;Adds particle effects to your keystrokes. Typing has never been this satisfying!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hyper i hyperpower
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🌫️ hyper-opacity
&lt;/h3&gt;

&lt;p&gt;Adjust the transparency of your terminal for a modern, semi-transparent look.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hyper i hyper-opacity
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🔍 hyper-search
&lt;/h3&gt;

&lt;p&gt;Adds a search bar to your terminal. Press &lt;code&gt;Ctrl+Shift+F&lt;/code&gt; to find anything in your output.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hyper i hyper-search
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🚀 2. Productivity Boosters
&lt;/h2&gt;

&lt;h3&gt;
  
  
  📂 hypercwd
&lt;/h3&gt;

&lt;p&gt;Opens new tabs in the same directory as the current tab. No more &lt;code&gt;cd&lt;/code&gt;-ing around!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hyper i hypercwd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🗂️ hyper-tab-icons
&lt;/h3&gt;

&lt;p&gt;Adds icons to your tabs for better navigation and organization.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hyper i hyper-tab-icons
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  📊 hyper-statusline
&lt;/h3&gt;

&lt;p&gt;Adds a bottom status bar with system info like CPU, memory, and network usage.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hyper i hyper-statusline
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🔗 hyperlinks
&lt;/h3&gt;

&lt;p&gt;Makes URLs clickable inside Hyper. Click to open links directly from your terminal.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hyper i hyperlinks
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🌿 3. Git &amp;amp; Development Tools
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🌟 hypergit
&lt;/h3&gt;

&lt;p&gt;Shows the current Git branch in your prompt. A must-have for developers!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hyper i hypergit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🛠️ hyper-custom-scripts
&lt;/h3&gt;

&lt;p&gt;Run custom scripts directly from Hyper. Perfect for automating repetitive tasks.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hyper i hyper-custom-scripts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🎨 Customizing Hyper for a Better UX
&lt;/h2&gt;

&lt;p&gt;Hyper’s true power lies in its customizability. To tweak its appearance and behavior, edit your Hyper config file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hyper i
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here’s an example configuration to get you started:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;config&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;fontSize&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;fontFamily&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Fira Code, Menlo, Consolas, monospace&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Use a monospace font&lt;/span&gt;
    &lt;span class="na"&gt;cursorShape&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;BLOCK&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Options: 'BEAM', 'UNDERLINE', 'BLOCK'&lt;/span&gt;
    &lt;span class="na"&gt;backgroundColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;rgba(0, 0, 0, 0.85)&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Adjust opacity for a sleek look&lt;/span&gt;
    &lt;span class="na"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;10px 12px&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Add padding for better readability&lt;/span&gt;
    &lt;span class="na"&gt;colors&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;black&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#000000&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;red&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#ff5555&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;green&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#50fa7b&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;yellow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#f1fa8c&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#bd93f9&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;magenta&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#ff79c6&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;cyan&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#8be9fd&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;white&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#bbbbbb&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🛠️ Bonus: Performance Hacks
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🖥️ Disable WebGL for Smoother UI
&lt;/h3&gt;

&lt;p&gt;If you’re experiencing lag, disable WebGL in your &lt;code&gt;.hyper.js&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;webGLRenderer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ⚡ Disable GPU Acceleration
&lt;/h3&gt;

&lt;p&gt;Run Hyper with GPU acceleration disabled to reduce lag:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hyper &lt;span class="nt"&gt;--disable-gpu&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🧹 Clear Scrollback Buffer
&lt;/h3&gt;

&lt;p&gt;Free up memory by clearing the scrollback buffer. Add this keybinding to your config:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Ctrl+K&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;editor:clearBuffer&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔥 Pro Tips &amp;amp; Tricks
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🌈 Use a Custom Color Scheme
&lt;/h3&gt;

&lt;p&gt;Hyper supports custom color schemes. Use tools like &lt;a href="https://hyper.is/plugins" rel="noopener noreferrer"&gt;Hyper Themes&lt;/a&gt; to find and apply beautiful themes.&lt;/p&gt;

&lt;h3&gt;
  
  
  🧩 Chain Multiple Commands
&lt;/h3&gt;

&lt;p&gt;Use plugins like &lt;code&gt;hyper-custom-scripts&lt;/code&gt; to chain multiple commands together. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hyper i hyper-custom-scripts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, define a script in your config:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;scripts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;build&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;npm run build &amp;amp;&amp;amp; npm run deploy&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🕹️ Keyboard Shortcuts
&lt;/h3&gt;

&lt;p&gt;Master these shortcuts to boost your productivity:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Ctrl+Shift+T&lt;/code&gt;: Open a new tab&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Ctrl+Shift+W&lt;/code&gt;: Close the current tab&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Ctrl+Shift+F&lt;/code&gt;: Open the search bar&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Ctrl+L&lt;/code&gt;: Clear the terminal&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;With these plugins, customizations, and performance hacks, your Hyper terminal will be faster, more stylish, and more productive than ever. Whether you’re a developer, sysadmin, or just a terminal enthusiast, these tools will take your workflow to the next level. 🚀&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What’s your favorite Hyper plugin or customization? Let me know in the comments below! 👇&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Happy coding! 👨‍💻👩‍💻&lt;/p&gt;

&lt;p&gt;&lt;em&gt;P.S. If you found this post helpful, don’t forget to share it with your fellow developers! 🌟&lt;/em&gt;&lt;/p&gt;

</description>
      <category>terminal</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Abhijith P Subash</dc:creator>
      <pubDate>Sat, 28 Dec 2024 11:32:49 +0000</pubDate>
      <link>https://forem.com/abhijith_p_subash/-2ibp</link>
      <guid>https://forem.com/abhijith_p_subash/-2ibp</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/abhijith_p_subash" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F739669%2Fdb873a3e-9bd4-4622-a230-cc16cd36acb1.PNG" alt="abhijith_p_subash"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/abhijith_p_subash/introducing-flame-core-simplifying-firebase-operations-like-expressjs-for-nodejs-2g63" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Introducing Flame-Core 🔥: Simplifying Firebase Operations Like Express.js for Node.js&lt;/h2&gt;
      &lt;h3&gt;Abhijith P Subash ・ Dec 28 '24&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#firebase&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#flamecore&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#npm&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>firebase</category>
      <category>node</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Introducing Flame-Core 🔥: Simplifying Firebase Operations Like Express.js for Node.js</title>
      <dc:creator>Abhijith P Subash</dc:creator>
      <pubDate>Sat, 28 Dec 2024 11:21:54 +0000</pubDate>
      <link>https://forem.com/abhijith_p_subash/introducing-flame-core-simplifying-firebase-operations-like-expressjs-for-nodejs-2g63</link>
      <guid>https://forem.com/abhijith_p_subash/introducing-flame-core-simplifying-firebase-operations-like-expressjs-for-nodejs-2g63</guid>
      <description>&lt;p&gt;Working with Firebase can sometimes feel overwhelming, especially when dealing with boilerplate code and repetitive operations. To address these challenges, I’m excited to introduce &lt;a href="https://www.npmjs.com/package/flame-core" rel="noopener noreferrer"&gt;Flame-Core&lt;/a&gt;, a new npm package designed to simplify Firebase operations just as Express.js simplifies Node.js operations.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Flame-Core?
&lt;/h2&gt;

&lt;p&gt;Flame-Core is a TypeScript-based library that abstracts common Firebase functionalities, enabling developers to interact with Firebase more intuitively and efficiently. Whether you're working on Firestore, Realtime Database, Authentication, or other Firebase modules, Flame-Core minimizes the complexities, allowing you to focus on building features rather than wrestling with repetitive code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Use Flame-Core?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;Developer Productivity&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Flame-Core provides easy-to-use methods for common Firebase operations, reducing the need to write boilerplate code.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. &lt;strong&gt;TypeScript Support&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Built with TypeScript, Flame-Core ensures type safety and better developer experience with autocomplete features and compile-time error detection.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. &lt;strong&gt;Express.js-like Simplicity&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Much like how Express.js simplifies creating APIs, Flame-Core simplifies Firebase operations, making it accessible even for developers new to Firebase.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. &lt;strong&gt;Scalable and Flexible&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Designed with scalability in mind, Flame-Core is suitable for projects of all sizes, from small applications to enterprise-level solutions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;p&gt;To get started, install Flame-Core via npm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;flame-core
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Setting Up
&lt;/h3&gt;

&lt;p&gt;Import Flame-Core and initialize it with your Firebase configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;firebaseConfig&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;flame-core&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;firebaseConfig&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;initialize&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;your-api-key&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;authDomain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;your-auth-domain&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;projectId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;your-project-id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;storageBucket&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;your-storage-bucket&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;messagingSenderId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;your-messaging-sender-id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;appId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;your-app-id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Sample Code
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Authentication Made Simple
&lt;/h4&gt;

&lt;p&gt;Manage Firebase Authentication seamlessly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;fireAuthService&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;flame-core&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;authService&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;fireAuthService&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// Sign up a new user&lt;/span&gt;
&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;authService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;register&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;test@example.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;password123&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Log in a user&lt;/span&gt;
&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;authService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;test@example.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;password123&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Log out the current user&lt;/span&gt;
 &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;authService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;logout&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;//Signs in with Google using the specified method.&lt;/span&gt;
  &lt;span class="c1"&gt;//*Parameters: method: "popup" | "redirect" (default: "popup")&lt;/span&gt;
&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;authService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;signInWithGoogle&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Firestore CRUD Operations
&lt;/h4&gt;

&lt;p&gt;Performing Firestore operations has never been easier:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;fireStoreDatabaseService&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;flame-core&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;storageService&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;fireStoreDatabaseService&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;//Fetches all documents from a specified Firestore collection.&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;storageService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;users&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;options&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;where&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;completed&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;priority&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;$gt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;$arrCont&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;important&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="na"&gt;categories&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;$arrContAny&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;work&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;personal&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;$in&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;task&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;reminder&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="na"&gt;archived&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;$ne&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;populate&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;departments&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;department_id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
      &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;jobs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;job_id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
      &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;locations&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;location_id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="na"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;createdAt&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;desc&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
      &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;priority&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;asc&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;

    &lt;span class="na"&gt;startAfter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;cursorValue1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;limit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;


&lt;span class="c1"&gt;//Fetches a document by its ID.&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;storageService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;users&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;12345&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;//Creates a new document in a collection.&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;storageService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;users&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;John Doe&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user@mail.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;


&lt;span class="c1"&gt;//Updates a document by its ID.&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;storageService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;updateById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;users&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;12345&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;35&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;//Updates multiple documents by their IDs.&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;storageService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;updateBulk&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;users&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;12345&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;67890&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;inactive&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;


&lt;span class="c1"&gt;//Deletes a document by its ID.&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;storageService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;deleteById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;users&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;12345&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;//Deletes multiple documents by their IDs.&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;storageService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;deleteBulk&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;users&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;12345&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;67890&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Use Cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rapid Prototyping:&lt;/strong&gt; Quickly build applications without worrying about Firebase setup complexities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scalable Projects:&lt;/strong&gt; Use Flame-Core’s organized structure for medium to large-scale applications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Educational Projects:&lt;/strong&gt; Simplify Firebase learning for beginners with intuitive methods.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Community and Support
&lt;/h2&gt;

&lt;p&gt;We welcome contributions to make flame-core better! If you have ideas, or suggestions, or want to report issues, feel free to open a pull request or create an issue on GitHub. Let’s build something amazing together! 🚀&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/abhijith-p-subash/flame-core" rel="noopener noreferrer"&gt;GitHub repository🔥&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Support the Developer
&lt;/h2&gt;

&lt;p&gt;If you find this project helpful, consider buying me a coffee! Your support means the world. ☕&lt;br&gt;
&lt;a href="https://www.buymeacoffee.com/abhijithpsubash" rel="noopener noreferrer"&gt;Buy Me A Coffee ⇗&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Flame-Core is here to make Firebase operations a breeze. If you’ve ever felt bogged down by Firebase’s complexities, give Flame-Core a try and experience a more streamlined development process. Install it today, and simplify your Firebase journey!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/flame-core" rel="noopener noreferrer"&gt;Check out Flame-Core🔥 on npm&lt;/a&gt; and start building smarter, not harder.&lt;/p&gt;




&lt;p&gt;Feel free to share your thoughts and feedback in the comments. Let’s build something amazing together!  Happy coding! 😊&lt;/p&gt;

</description>
      <category>firebase</category>
      <category>flamecore</category>
      <category>npm</category>
    </item>
  </channel>
</rss>
