<?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: Hariharen S.S</title>
    <description>The latest articles on DEV Community by Hariharen S.S (@hariharen).</description>
    <link>https://dev.to/hariharen</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%2F2336072%2F8cfdc070-00ba-4a2b-b4ba-e8847c7d9836.jpg</url>
      <title>DEV Community: Hariharen S.S</title>
      <link>https://dev.to/hariharen</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hariharen"/>
    <language>en</language>
    <item>
      <title>Building Scync: Why I made a Zero-Knowledge Secrets Manager for us, Developers.</title>
      <dc:creator>Hariharen S.S</dc:creator>
      <pubDate>Tue, 05 May 2026 11:12:55 +0000</pubDate>
      <link>https://dev.to/hariharen/building-scync-why-i-wrote-a-zero-knowledge-secrets-manager-for-us-developers-15kc</link>
      <guid>https://dev.to/hariharen/building-scync-why-i-wrote-a-zero-knowledge-secrets-manager-for-us-developers-15kc</guid>
      <description>&lt;p&gt;You have 47 API keys. You know where exactly zero of them are.  &lt;/p&gt;

&lt;p&gt;Your secrets are scattered across a digital wasteland. One is in a .env file you’re terrified to delete. Another is buried in a 2022 Slack DM. Your AWS credentials live in a Notion page titled "stuff", and your 2FA codes are trapped on a phone you're about to trade in.  When you need an API key, you experience one of two realities: you find it in three seconds, or you spend 45 minutes regenerating it and updating six projects. There is no in-between.  &lt;/p&gt;

&lt;p&gt;This isn't a workflow problem. It is a missing tool problem. &lt;/p&gt;

&lt;h2&gt;
  
  
  Why Existing Tools Don't Solve It
&lt;/h2&gt;

&lt;p&gt;When you look for a solution to this, you quickly realize the market is deeply polarized. You either get a consumer password manager or an enterprise infrastructure behemoth. Neither is built for the solo developer managing API keys, &lt;code&gt;.env&lt;/code&gt; files, and recovery codes.&lt;/p&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;The Reality&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bitwarden / 1Password&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Built for website passwords (username/URL/password), not developer secrets. They lack dedicated metadata, rotation tracking, and are incredibly awkward for storing multi-line recovery codes or &lt;code&gt;.env&lt;/code&gt; files.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Infisical / Doppler&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Designed for engineering teams and CI/CD pipelines. You need a screwdriver; they are handing you an entire automated factory. Overkill for a solo dev.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;HashiCorp Vault&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;You need a dedicated server and two weeks of free time just to understand the architecture before you can store a single key.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Notion / Apple Notes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Zero encryption at rest. Notion staff can read your secrets. You know this is a terrible idea. You still do it because it’s convenient.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;KeePassXC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Phenomenal security, but no native cloud sync. Your phone has absolutely no idea your desktop vault exists.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;There is no tool that is personal-first, zero-knowledge, cross-platform, open source, and actually pleasant to use. &lt;/p&gt;

&lt;p&gt;So, I built one. I call it &lt;strong&gt;Scync&lt;/strong&gt; (&lt;em&gt;Your secrets. Synced. Encrypted. Everywhere.&lt;/em&gt;). It’s an open-source, zero-knowledge secrets manager built specifically for developers.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Architecture
&lt;/h2&gt;

&lt;p&gt;To build Scync, I had a strict set of principles: one codebase for all platforms, zero-knowledge by default, and speed as a feature. The core loop of the app—&lt;em&gt;Unlock vault → Find secret → Copy value&lt;/em&gt;—had to be instantaneous. &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%2Ftw5c18gnda0j72gjj6j5.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%2Ftw5c18gnda0j72gjj6j5.png" alt=" " width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Monorepo
&lt;/h3&gt;

&lt;p&gt;Scync is structured as a Turborepo-managed monorepo using &lt;code&gt;pnpm&lt;/code&gt;. The architecture strictly separates the UI and cryptographic logic from the deployment shells. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;packages/core&lt;/code&gt;: The brain. Contains all the Web Crypto API logic, TypeScript types, and Firebase configurations. No UI code lives here.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;packages/ui&lt;/code&gt;: The shared React component library, design system (Tailwind CSS), and Zustand state stores.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;apps/web&lt;/code&gt;: The Vite + React web application (deployed as a PWA for mobile).&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;apps/desktop&lt;/code&gt;: An Electron (v28+) wrapper around the web build.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because of this structure, 100% of the React application logic is shared. There is no separate React Native codebase. &lt;/p&gt;

&lt;h3&gt;
  
  
  State Management &amp;amp; On-Demand Decryption
&lt;/h3&gt;

&lt;p&gt;The state management, handled by Zustand, is where the security architecture dictates the software architecture. &lt;/p&gt;

&lt;p&gt;In Scync, your plaintext secrets are &lt;strong&gt;never&lt;/strong&gt; held in the global React state. The &lt;code&gt;vaultStore&lt;/code&gt; only holds the &lt;code&gt;CryptoKey&lt;/code&gt; (while unlocked) and an array of &lt;code&gt;StoredSecret&lt;/code&gt; objects, which contain the encrypted AES-GCM blobs straight from Firestore. &lt;/p&gt;

&lt;p&gt;Decryption happens &lt;em&gt;on-demand&lt;/em&gt;. When you click "Copy" or "Show Value" on a secret, the app decrypts the value in memory, writes it to your clipboard (or renders it for 15 seconds), and immediately discards the plaintext. If a malicious script dumps your browser's heap memory, it will only find AES ciphertexts, not your OpenAI keys.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Backend: Firebase (Blindly)
&lt;/h3&gt;

&lt;p&gt;I chose Firebase for the backend because it offers real-time cross-device syncing via Firestore out of the box. However, Firebase is kept completely blind. &lt;/p&gt;

&lt;p&gt;Scync separates Layer 1 (Identity) from Layer 2 (Encryption). Firebase Auth (Google Sign-In) handles your identity. It gives you a &lt;code&gt;uid&lt;/code&gt; so Firestore knows which documents you are allowed to read. But Firebase Auth has &lt;strong&gt;nothing&lt;/strong&gt; to do with decrypting your data. If someone hacks your Google account, they just get access to a database of mathematically unreadable blobs.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Crypto Deep-Dive
&lt;/h2&gt;

&lt;p&gt;"Zero-knowledge" is a term thrown around loosely in marketing. In Scync, it is enforced by math. The server never receives plaintext. The encryption implementation uses strictly the browser-native Web Crypto API—no third-party crypto libraries to audit.&lt;/p&gt;

&lt;p&gt;Here is exactly how your data is protected.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Key Derivation (PBKDF2)
&lt;/h3&gt;

&lt;p&gt;When you log in, you are prompted for a Vault Password. This password never leaves your device. &lt;/p&gt;

&lt;p&gt;To derive the actual 256-bit AES encryption key from your human-readable password, Scync pulls a non-secret, 16-byte random &lt;code&gt;salt&lt;/code&gt; from your Firebase metadata. It then concatenates your Vault Password with your Firebase &lt;code&gt;uid&lt;/code&gt; (to prevent cross-account rainbow table attacks). &lt;/p&gt;

&lt;p&gt;This combined material is run through &lt;strong&gt;PBKDF2&lt;/strong&gt; using a &lt;strong&gt;SHA-256&lt;/strong&gt; hash for &lt;strong&gt;310,000 iterations&lt;/strong&gt; (the OWASP 2023 recommendation). The output is a non-extractable &lt;code&gt;CryptoKey&lt;/code&gt; object that lives entirely in your device's memory.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. The Verifier Pattern
&lt;/h3&gt;

&lt;p&gt;If we don't send the Vault Password to the server, and we don't store a hash of it, how does the app know if you typed the correct password when you try to unlock the vault?&lt;/p&gt;

&lt;p&gt;We use an encrypted verifier. &lt;br&gt;
During your first-time setup, after deriving your key, Scync takes the plaintext string &lt;code&gt;"Scync_VALID_v1"&lt;/code&gt;, encrypts it using AES-256-GCM, and stores the resulting ciphertext and Initialization Vector (IV) in your Firestore metadata. &lt;/p&gt;

&lt;p&gt;Every time you unlock the vault subsequently:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You type your password.&lt;/li&gt;
&lt;li&gt;Scync derives a temporary key in memory.&lt;/li&gt;
&lt;li&gt;It attempts to decrypt the stored &lt;code&gt;"Scync_VALID_v1"&lt;/code&gt; ciphertext using that temporary key.&lt;/li&gt;
&lt;li&gt;If it succeeds, the password is correct, and the vault unlocks.&lt;/li&gt;
&lt;li&gt;If it throws an error (because AES-GCM includes an authentication tag that fails on wrong keys), the app knows the password was wrong. No password hashing required.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  3. Encryption (AES-256-GCM)
&lt;/h3&gt;

&lt;p&gt;Every single secret value and note is encrypted using AES-256-GCM. &lt;/p&gt;

&lt;p&gt;Crucially, &lt;strong&gt;a fresh 12-byte random IV is generated for every single field, every single time it is saved.&lt;/strong&gt; Even if you save the exact same API key twice, the resulting ciphertexts will look completely different. The ciphertext and the base64-encoded IV are packaged together and sent to Firestore. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Note: Metadata like the secret's name and service are kept plaintext to allow for lightning-fast, real-time client-side searching without decrypting the entire database. A full-encryption mode is planned for V2).&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Biometric Unlock via WebAuthn PRF
&lt;/h3&gt;

&lt;p&gt;Typing a 20-character master password on a mobile device is miserable. But storing that password in plaintext defeats the purpose of a zero-knowledge architecture.&lt;/p&gt;

&lt;p&gt;To solve this, Scync leverages the &lt;strong&gt;WebAuthn PRF (Pseudo-Random Function) extension&lt;/strong&gt;. &lt;br&gt;
When you enable FaceID or TouchID, your device's hardware (Secure Enclave/TPM) creates a deterministic symmetric key. Scync uses this hardware-level key to locally encrypt (or "wrap") your Vault Password, storing the wrapped version in your local storage. &lt;/p&gt;

&lt;p&gt;When you use FaceID, the hardware re-derives the key, unwraps your Vault Password into memory, and feeds it into the PBKDF2 derivation function. You get native-speed unlocks without compromising the zero-knowledge model. &lt;/p&gt;




&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;Building a secure, local-first application fundamentally changes how you view modern web development. Here are my biggest takeaways from building Scync:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The Web Crypto API is incredibly powerful (and underutilized).&lt;/strong&gt;&lt;br&gt;
Five years ago, building this would have required importing heavy, difficult-to-audit libraries like &lt;code&gt;crypto-js&lt;/code&gt; or &lt;code&gt;forge&lt;/code&gt;. Today, the native &lt;code&gt;window.crypto.subtle&lt;/code&gt; API provides highly performant, NIST-standardized cryptography right in the browser. The fact that you can generate non-extractable keys—meaning even XSS attacks have a remarkably hard time stealing the actual key material from memory—is a massive win for frontend security.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. "Opinionated Simplicity" is the hardest feature to defend.&lt;/strong&gt;&lt;br&gt;
When you build a tool for developers, the immediate feedback is always: &lt;em&gt;"Can you add custom fields? Can you add a plugin architecture? Can you add programmable webhooks?"&lt;/em&gt; &lt;br&gt;
It takes immense discipline to say no. Scync forces you to categorize your secrets by environment, service, and type. It natively understands that a &lt;code&gt;.env&lt;/code&gt; file is different from a Recovery Code set. By refusing to make it a generic "custom field" database, the UI remains calm, the search remains instant, and the tool remains highly specialized for its actual purpose. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. State management with raw encrypted data forces better architecture.&lt;/strong&gt;&lt;br&gt;
Usually, you fetch data from an API, dump it into a Redux or Zustand store, and map over it in your UI. In Scync, doing that would mean keeping dozens of highly sensitive API keys sitting in plaintext memory. &lt;br&gt;
Building an architecture where components rely entirely on encrypted state, and only trigger an async decryption function at the exact millisecond of user interaction (like copying to the clipboard), taught me a lot about strict data lifecycles. It’s a slightly heavier development burden, but the security guarantee is worth it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try it / Star it
&lt;/h2&gt;

&lt;p&gt;Scync was built because I was tired of pasting my AWS keys into Notion, and I suspect I'm not the only one. &lt;/p&gt;

&lt;p&gt;The project is completely open-source under the MIT License. It will remain free, and there is no "enterprise pricing tier" waiting to trap you. &lt;/p&gt;

&lt;p&gt;If you're a developer dealing with the "47 API keys" problem, I invite you to try it out, tear apart the cryptographic implementation, or host your own instance.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Check out the code and star the repo:&lt;/strong&gt; &lt;a href="https://github.com/hariharen9/Scync" rel="noopener noreferrer"&gt;github.com/hariharen9/Scync&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Live application:&lt;/strong&gt; &lt;a href="https://scync.space/" rel="noopener noreferrer"&gt;Scync.space&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Read the Security Spec:&lt;/strong&gt; The complete zero-knowledge architecture and threat model is detailed in &lt;code&gt;SECURITY.md&lt;/code&gt; in the repo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pull requests are welcome, especially if they make the core loop—&lt;em&gt;Unlock → Find → Copy&lt;/em&gt;—even faster.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>security</category>
      <category>webdev</category>
      <category>tooling</category>
    </item>
    <item>
      <title>The Financial Command Center I Built After Years of Failed Budgeting Attempts</title>
      <dc:creator>Hariharen S.S</dc:creator>
      <pubDate>Fri, 17 Oct 2025 04:10:16 +0000</pubDate>
      <link>https://dev.to/hariharen/the-financial-command-center-i-built-after-years-of-failed-budgeting-attempts-3d6a</link>
      <guid>https://dev.to/hariharen/the-financial-command-center-i-built-after-years-of-failed-budgeting-attempts-3d6a</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%2F3jg9ymat9geaidqu70eh.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%2F3jg9ymat9geaidqu70eh.png" alt="SpendWiser" width="800" height="230"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For years, my financial life was sinking in a sea of spreadsheets. I had one for my monthly budget, another for tracking investments, and a third for my savings goals. It was a system that, in theory, should have given me control. In reality, it was a source of constant, nagging stress.&lt;/p&gt;

&lt;p&gt;Every weekend was the same tedious ritual: hours hunched over my laptop, manually entering transactions, wrestling with formulas, and trying to connect the dots. I was drowning in data but starved for clarity. Missing even a single transaction could throw my entire month off course. The more complex my digital ledger became, the more I dreaded opening it.&lt;/p&gt;

&lt;p&gt;I tried countless budgeting apps, but they all fell short. They were either too simplistic to capture the full picture or bloated with features I didn't need, hidden behind clunky interfaces and hefty subscription fees. I felt like I was trying to force a square peg into a round hole.&lt;/p&gt;

&lt;p&gt;The breaking point? I missed a credit card payment. Not because I didn't have the money, but because the due date was simply lost in my spreadsheet maze. That was it. I’m a developer—I build solutions for a living. Why was I tolerating this chaos in my own life?&lt;/p&gt;

&lt;p&gt;It was time to build my own lifeboat. &lt;a href="https://spenditwiser.netlify.app/" rel="noopener noreferrer"&gt;SPENDWISER&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%2Fs0qdmkrbbb567xg7rvm6.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%2Fs0qdmkrbbb567xg7rvm6.png" alt="SpendWiser Dashboard" width="800" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Vision: A Financial Command Center
&lt;/h2&gt;

&lt;p&gt;I didn't want to build just another budgeting app. I wanted a true &lt;strong&gt;financial command center&lt;/strong&gt;—a single, elegant dashboard where I could see everything from my daily spending to my long-term goals. It had to be a tool that would empower me, not overwhelm me.&lt;/p&gt;

&lt;p&gt;I built it on three core principles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clarity Over Complexity:&lt;/strong&gt; Powerful insights without a steep learning curve. The data should serve you, not the other way around.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Radical Accessibility:&lt;/strong&gt; Your financial picture, available on any device, anytime, anywhere.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You Are in Control:&lt;/strong&gt; Your data is yours. Full stop. The app must be transparent, customizable, and secure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With this vision as my North Star, I started building &lt;strong&gt;SpendWiser&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing SpendWiser: Your Personal Finance First Mate
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://spenditwiser.netlify.app/" rel="noopener noreferrer"&gt;SpendWiser&lt;/a&gt; is the culmination of months of work, born from a genuine need to take back control. It’s the app I always wished I had, and now, I want to share it with you.&lt;/p&gt;

&lt;p&gt;Here's how SpendWiser puts you back at the helm:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Financial Cockpit (The Dashboard):&lt;/strong&gt; Your mission control. Get a real-time, at-a-glance overview of your entire financial world: account balances, budget tracking, recent transactions, and goal progress. It's the first thing you see, and it instantly tells you exactly where you stand.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Seamless Transaction Tracking:&lt;/strong&gt; &lt;strong&gt;Ditch the manual data entry for good.&lt;/strong&gt; Add transactions in seconds, categorize your spending, add notes, and see a running list of all your income and expenses. Have a backlog? Easily import it from a CSV file.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Budgets That Empower, Not Restrict:&lt;/strong&gt; Budgeting isn't about restriction; it's about &lt;strong&gt;mindful spending&lt;/strong&gt;. Set monthly budgets for categories like groceries, entertainment, or transport. SpendWiser shows you how you’re tracking in real-time, helping you make smarter decisions throughout the month.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;From 'Someday' to 'Scheduled' (Goals):&lt;/strong&gt; We all have financial goals—a dream vacation, a new car, a down payment on a home. SpendWiser helps you turn those dreams into actionable plans. Set a target amount and a date, and watch your progress unfold.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tame Your Debts (Loans &amp;amp; Credit Cards):&lt;/strong&gt; It’s easy to lose track of what you owe. SpendWiser provides a dedicated space to manage your loans and credit cards, so you always have a clear picture of your balances and upcoming due dates.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Crafted For You, By You (Settings):&lt;/strong&gt; Your financial journey is personal, and your tools should be too. Customize SpendWiser with light or dark mode, your preferred currency, and even different fonts to make it feel like home.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why SpendWiser Isn't Just Another Budget App
&lt;/h2&gt;

&lt;p&gt;In a crowded sea of finance apps, SpendWiser stands apart. Here’s why:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Built on Trust (It's Open-Source):&lt;/strong&gt; No secrets. You can see exactly how SpendWiser works by viewing the code on GitHub. This means radical transparency and the assurance that your data is handled securely. You are always in control.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Works Everywhere (It's a PWA):&lt;/strong&gt; SpendWiser is a Progressive Web App. Use it on any device with a web browser—phone, tablet, or desktop. It's fast, responsive, and you can even "install" it to your home screen for an app-like experience without visiting an app store.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;100% Free. And Always Will Be:&lt;/strong&gt; No ads. No subscription fees. No premium features behind a paywall. I built this to solve a real problem, not to make a profit.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Join the Voyage
&lt;/h2&gt;

&lt;p&gt;I built SpendWiser to solve a problem that I know many of us face. Now, I want to make it even better, and that’s where you come in.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;🚀 Take SpendWiser for a Spin:&lt;/strong&gt; See if it can be the lifeboat you've been looking for. [Link to your app]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;💬 Share Your Feedback:&lt;/strong&gt; I'm eager to hear what you think. What do you love? What's missing? Your insights will shape the future of the app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;⭐ Become a Star on GitHub:&lt;/strong&gt; If you believe in this project, giving it a star on GitHub is the single most powerful way to show your support. It helps others discover SpendWiser and validates the hard work that has gone into it.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;a href="https://github.com/hariharen9/spendwiser" rel="noopener noreferrer"&gt;&lt;strong&gt;Please, Star SpendWiser on GitHub!&lt;/strong&gt;&lt;/a&gt;
&lt;/h3&gt;




&lt;p&gt;Thank you for reading my story. I hope SpendWiser can help you navigate the often-choppy waters of personal finance.&lt;/p&gt;

&lt;p&gt;Let’s take back control, together.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>opensource</category>
      <category>productivity</category>
    </item>
    <item>
      <title>LocalSeek: A Privacy-First, Visually Stunning, Localized AI Chat for VS Code</title>
      <dc:creator>Hariharen S.S</dc:creator>
      <pubDate>Sun, 02 Feb 2025 09:22:31 +0000</pubDate>
      <link>https://dev.to/hariharen/localseek-a-privacy-first-visually-stunning-localized-ai-chat-for-vs-code-2j5m</link>
      <guid>https://dev.to/hariharen/localseek-a-privacy-first-visually-stunning-localized-ai-chat-for-vs-code-2j5m</guid>
      <description>&lt;p&gt;In an era where data privacy and efficiency are paramount, developers often find themselves balancing innovative AI-powered solutions with the need to protect sensitive code and personal data. What if you could harness the power of advanced AI without ever sending your data offsite? Enter LocalSeek — a new Visual Studio Code extension that brings a full-fledged AI chat interface directly into your development environment, all while keeping every interaction local. In this article, we’ll explore how LocalSeek is changing the way developers work, its core features and benefits, its technical architecture, and why it represents a significant step forward in AI-assisted development.&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%2Fq6pg36rrx4dorg1eilar.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%2Fq6pg36rrx4dorg1eilar.png" alt="LocalSeek Logo" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Landscape of Developer Tools and AI Integration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Modern development environments have evolved far beyond simple code editors. Today’s integrated development environments (IDEs) and code editors like Visual Studio Code (VS Code) offer a rich ecosystem of plugins and extensions that enhance productivity. From version control integration to debugging tools, the developer workflow is supported by countless tools designed to simplify complex tasks.&lt;/p&gt;

&lt;p&gt;However, as AI becomes an increasingly critical part of our toolchain — helping to generate code, provide recommendations, and assist with debugging — the question of data privacy looms larger than ever. Many existing AI tools rely on cloud processing, which means that sensitive code and user interactions are sent offsite for processing. For many professionals, especially those working in secure or regulated environments, this can be a deal-breaker.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;LocalSeek&lt;/em&gt;&lt;/strong&gt; addresses this challenge head-on. By processing all interactions locally, it offers a unique blend of AI assistance and uncompromised privacy with immaculate Visual Appeal. Let’s take a closer look at how LocalSeek works and why it’s a game-changer for developers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing LocalSeek:
&lt;/h2&gt;

&lt;p&gt;LocalSeek is more than just an AI chatbot — it’s a comprehensive extension that transforms your VS Code environment into a powerful AI-enabled workspace. The primary vision behind LocalSeek is simple yet profound: to provide developers with a seamless, efficient, and secure AI tool that operates entirely on their local machines.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=Hariharen.localseek" rel="noopener noreferrer"&gt;https://marketplace.visualstudio.com/items?itemName=Hariharen.localseek&lt;/a&gt;&lt;br&gt;
You can also download the .vsix from this repo’s releases — &lt;a href="https://github.com/hariharen9/localseek/" rel="noopener noreferrer"&gt;https://github.com/hariharen9/localseek/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Aspects of the Vision
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Privacy-First:&lt;/strong&gt; LocalSeek is built with an unwavering commitment to privacy. Unlike many cloud-based AI tools, it ensures that your data never leaves your computer. This is especially important for developers working on proprietary or sensitive projects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Beautiful UI:&lt;/strong&gt; LocalSeek is designed with a clean, modern, and intuitive interface. The visually appealing layout ensures a smooth user experience, making interactions with the AI both efficient and enjoyable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Processing:&lt;/strong&gt; By leveraging local resources and models, LocalSeek delivers faster response times. This means reduced latency compared to cloud-based solutions, which can be critical during intense coding sessions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Seamless Integration:&lt;/strong&gt; The extension integrates effortlessly into VS Code. With a dedicated sidebar and standalone chat panel, it’s designed to enhance your workflow without overwhelming your interface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexible Model Support:&lt;/strong&gt; LocalSeek isn’t tied to one specific model. Instead, it works with any Ollama-compatible model, giving developers the flexibility to choose the AI that best fits their needs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FEATURES OF LocalSeek
&lt;/h2&gt;

&lt;p&gt;Understanding the technical underpinnings of LocalSeek helps appreciate its capabilities and the thoughtful design choices that set it apart.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Beautiful, Functional UI&lt;/strong&gt;&lt;br&gt;
LocalSeek isn’t just about functionality — it also prioritizes a sleek, modern user experience. The extension’s UI leverages the VS Code Webview API to create an interface that is both visually appealing and highly interactive. With mobile-inspired controls like “Talk, Copy, Exit,” the design aims to make interactions feel natural and intuitive, even if you’re used to working on a desktop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Local AI Interaction&lt;/strong&gt;&lt;br&gt;
At its core, LocalSeek processes all AI interactions directly on your machine. This is achieved by interfacing with locally installed AI models using the Ollama platform. Ollama provides a flexible framework for running various language models locally, allowing LocalSeek to support a range of models from lightweight options like Phi-3 to more robust ones like DeepSeek-R1.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The VS Code Extension Ecosystem&lt;/strong&gt;&lt;br&gt;
LocalSeek is developed as a VS Code extension, utilizing the platform’s extensive APIs to deliver a rich user experience. The extension features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A Dedicated Sidebar Chat View: This panel provides immediate access to your AI chat interface without disrupting your coding environment.&lt;/li&gt;
&lt;li&gt;Standalone Chat Panel: For developers who prefer a full-screen view, a standalone chat option is available via the Command Palette (Ctrl+Shift+P).&lt;/li&gt;
&lt;li&gt;Instant Model Switching: The extension includes a dropdown for selecting among multiple AI models. This flexibility allows developers to experiment and switch between models based on task-specific requirements.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Markdown-Enhanced AI Responses&lt;/strong&gt;&lt;br&gt;
One of the standout features of LocalSeek is its support for Markdown formatting in AI responses. This means that code snippets, documentation, and other rich content are displayed clearly and are easy to follow. The result is an interface that not only provides accurate AI-driven insights but also presents them in a clean, readable format that aligns with the aesthetics of modern coding environments.&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%2Fzbql11f91o9y7rreiy9q.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%2Fzbql11f91o9y7rreiy9q.png" alt="Localseek CODING" width="800" height="430"&gt;&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%2Fexmwuw6m2dads6r7umvc.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%2Fexmwuw6m2dads6r7umvc.png" alt="Localseek CHATTING" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting Started: Installation and Configuration
&lt;/h3&gt;

&lt;p&gt;Getting started with LocalSeek is straightforward. Here’s a detailed guide to installing and configuring the extension in your VS Code environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;br&gt;
Before you begin, ensure that you have the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visual Studio Code (v1.96.0 or newer): The latest version is recommended to ensure compatibility with the extension.&lt;/li&gt;
&lt;li&gt;Ollama Installed Locally: This is the backbone of LocalSeek’s AI capabilities. You can download Ollama from its official site.&lt;/li&gt;
&lt;li&gt;Hardware Requirements: A minimum of 8GB of RAM is recommended for optimal performance, especially when running larger models.&lt;/li&gt;
&lt;li&gt;At Least One Ollama-Compatible LLM Model: While LocalSeek supports a variety of models, DeepSeek-R1 is highly recommended as a starting point.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Recommended Model Installations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Once you have Ollama installed, you can pull your preferred models using the following commands:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Pull recommended models
ollama pull deepseek-r1:14b   # High-performance option
ollama pull mistral           # Balanced performance
ollama pull llama3.2          # Versatile model for various tasks
ollama pull phi3              # Lightweight and efficient option
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;LocalSeek can be installed via two methods:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Visual Studio Code Marketplace:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open the Extensions sidebar (Ctrl+Shift+X) in VS Code.&lt;/li&gt;
&lt;li&gt;Search for “LocalSeek” and click “Install.”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Manual VSIX Installation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Download the VSIX package from the LocalSeek Releases page.&lt;/li&gt;
&lt;li&gt;In VS Code, open the Extensions view.&lt;/li&gt;
&lt;li&gt;Click the “…” menu and select “Install from VSIX.”&lt;/li&gt;
&lt;li&gt;Navigate to and select the downloaded file.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Configuring LocalSeek
&lt;/h3&gt;

&lt;p&gt;After installation, configuring LocalSeek is simple. Most settings can be adjusted directly within VS Code’s settings interface:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Access Settings: Press Ctrl+, or navigate to the settings via the gear icon.&lt;/li&gt;
&lt;li&gt;Search for “LocalSeek”: This will bring up all configurable options, including the Ollama Host configuration.&lt;/li&gt;
&lt;li&gt;Modify Settings as Needed: Customize the connection details or adjust interface settings to suit your preferences.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Repository Link — &lt;a href="https://github.com/hariharen9/localseek/" rel="noopener noreferrer"&gt;https://github.com/hariharen9/localseek/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;VSCode Marketplace Link — &lt;a href="https://marketplace.visualstudio.com/items?itemName=Hariharen.localseek" rel="noopener noreferrer"&gt;https://marketplace.visualstudio.com/items?itemName=Hariharen.localseek&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion: Embracing the Future with LocalSeek
&lt;/h2&gt;

&lt;p&gt;LocalSeek is more than just an AI chat extension — it’s a forward-thinking solution designed to meet the evolving needs of developers in a data-sensitive world. By processing all interactions locally, it offers unparalleled privacy and speed, making it an indispensable tool for anyone looking to enhance their coding workflow without compromising on security.&lt;/p&gt;

&lt;p&gt;From its stunning UI and seamless integration with Visual Studio Code to its flexible support for multiple AI models, LocalSeek represents a significant step forward in the realm of AI-assisted development. It not only addresses the pressing concerns around data privacy but also paves the way for a future where developers can harness the full potential of AI without any of the drawbacks associated with cloud-based processing.&lt;/p&gt;

&lt;p&gt;Whether you’re a developer working on sensitive projects, a hobbyist exploring the possibilities of local AI, or someone simply curious about the future of intelligent code assistance, LocalSeek offers a robust, efficient, and secure solution. Embrace a new era of development where your code — and your privacy — remain firmly in your hands.&lt;/p&gt;

&lt;p&gt;Developed with ❤️ by Hariharen&lt;/p&gt;

</description>
      <category>ai</category>
      <category>ollama</category>
      <category>deepseek</category>
      <category>vscode</category>
    </item>
  </channel>
</rss>
