<?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: Jayant Navrange</title>
    <description>The latest articles on DEV Community by Jayant Navrange (@jayantur13).</description>
    <link>https://dev.to/jayantur13</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%2F3311481%2F6b18da43-b774-4126-8330-2791e8df7881.jpg</url>
      <title>DEV Community: Jayant Navrange</title>
      <link>https://dev.to/jayantur13</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jayantur13"/>
    <language>en</language>
    <item>
      <title>I've made a get-releases-action using GitHub API</title>
      <dc:creator>Jayant Navrange</dc:creator>
      <pubDate>Thu, 16 Oct 2025 11:59:45 +0000</pubDate>
      <link>https://dev.to/jayantur13/ive-made-a-get-releases-action-using-github-api-260o</link>
      <guid>https://dev.to/jayantur13/ive-made-a-get-releases-action-using-github-api-260o</guid>
      <description>&lt;h2&gt;
  
  
  Time for Action
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Curiosity leads to action&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Curiosity..&lt;/strong&gt;, I was curious about GitHub actions, how they work and how can I build my own. That's right, it's always things you see and use,leads invent or reinvent the wheel.&lt;/p&gt;

&lt;p&gt;I created one and currently using the action in my profile &lt;a href="https://github.com/jayantur13" rel="noopener noreferrer"&gt;https://github.com/jayantur13&lt;/a&gt; to showcase my project releases. The name of the action is &lt;a href="https://github.com/jayantur13/get-latest-releases" rel="noopener noreferrer"&gt;get-latest-releases&lt;/a&gt; in &lt;a href="https://github.com/marketplace/actions/get-latest-releases" rel="noopener noreferrer"&gt;GitHub Marketplace&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%2Fvj1vcdcoxqfadabenab8.jpeg" 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%2Fvj1vcdcoxqfadabenab8.jpeg" alt="Jayant Profile" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Making
&lt;/h2&gt;

&lt;p&gt;During the making I followed the official documentation, some actions from Marketplace and other repos. Also, to get a start I vibed and found some great results. &lt;br&gt;
My GitHub action is very simple. It works in following steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Requires &lt;strong&gt;user/repo_name&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Make HTTP request to fetch releases of a &lt;strong&gt;user/repo_name&lt;/strong&gt;, then detects if README.md has
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!--LATEST_RELEASES_START--&amp;gt;
&amp;lt;!--LATEST_RELEASES_END--&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Auto-commit (if true) with all release data to README.md&lt;/li&gt;
&lt;li&gt;To avoid always committing there's a .json file that saves the info.
&amp;gt; Necessary log for both success and failure case.
&amp;gt; As actions are soon deprecating the use of node20 and asking to use node24, at first, I struggled to make the build work then used esbuild (or rollup was other option)&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Here's the action
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: Fetch and upate with latest release

on:
  schedule:
    - cron: "0 0 * * *" # daily at midnight UTC
  workflow_dispatch:

jobs:
  update_releases:
    runs-on: ubuntu-latest
    permissions:
      contents: write

    steps:
      - uses: actions/checkout@v4
      - name: Update latest releases
        uses: jayantur13/get-latest-releases@v1
        with:
          repos: |
            vercel/next.js
            facebook/react
          readme_path: "README.md"
          max_repos: "3"
          theme: list
          include_body: "true"
          exclude_prereleases: "false"
          header_title: ""
          footer_link_text: "Explore More →"
          show_global_footer: "true"
          date_format: "short"
          skip_if_no_change: "true"
          auto_commit: "true"
          token: ${{ secrets.GITHUB_TOKEN }}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Under. GitHub/workflows/action_name.yml it will run daily UTC midnight&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Here's the detail about parameters:
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Default&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;repos&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List of repositories (&lt;code&gt;owner/repo&lt;/code&gt;) separated by newlines&lt;/td&gt;
&lt;td&gt;–&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;readme_path&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Path to your README file&lt;/td&gt;
&lt;td&gt;&lt;code&gt;README.md&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;max_repos&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Maximum number of repositories to display&lt;/td&gt;
&lt;td&gt;&lt;code&gt;5&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;include_body&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Include release notes text&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;exclude_prereleases&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Skip prereleases&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;theme&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Markdown layout: &lt;code&gt;table&lt;/code&gt;, &lt;code&gt;list&lt;/code&gt;, &lt;code&gt;card&lt;/code&gt;, &lt;code&gt;compact&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;&lt;code&gt;table&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;header_title&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Custom section title (value,"")&lt;/td&gt;
&lt;td&gt;&lt;code&gt;🔖 Latest Releases&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;footer_link_text&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Text for global footer link&lt;/td&gt;
&lt;td&gt;&lt;code&gt;See All Releases →&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;show_global_footer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Show or hide the footer link&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;date_format&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Date format (&lt;code&gt;ISO&lt;/code&gt;, &lt;code&gt;relative&lt;/code&gt;, &lt;code&gt;none&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ISO&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;skip_if_no_change&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Skip update if no new release is found&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;auto_commit&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Automatically commit README changes&lt;/td&gt;
&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;token&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;GitHub token for API access&lt;/td&gt;
&lt;td&gt;&lt;code&gt;${{ github.token }}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Theme Appearance
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Card&lt;br&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%2Fartzu0a8sh23px8a64mm.jpeg" 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%2Fartzu0a8sh23px8a64mm.jpeg" alt="card view" width="417" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Table&lt;br&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%2F4vpst3dm976zyg2xps49.jpeg" 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%2F4vpst3dm976zyg2xps49.jpeg" alt="table view" width="647" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;List&lt;br&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%2Fu1q523e4tyd2b2ob4n7b.jpeg" 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%2Fu1q523e4tyd2b2ob4n7b.jpeg" alt="list view" width="691" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Compact&lt;br&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%2Fj2rv87v79dgiypdpkqkg.jpeg" 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%2Fj2rv87v79dgiypdpkqkg.jpeg" alt="compact view" width="800" height="186"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I found a useful action like listing blog post in readme, which had me curious and inspired me to try making this action.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I am not much of writer. But yeah, tried to write and if, you like this article react/comment in this post and give a try to &lt;a href="https://github.com/jayantur13/get-latest-releases" rel="noopener noreferrer"&gt;get-latest-releases&lt;/a&gt; in &lt;a href="https://github.com/marketplace/actions/get-latest-releases" rel="noopener noreferrer"&gt;GitHub Marketplace&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thanks for reading.&lt;/p&gt;

</description>
      <category>github</category>
      <category>automation</category>
      <category>hacktoberfest</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Built a Reddit Memes &amp; Jokes API with Node.js 🚀</title>
      <dc:creator>Jayant Navrange</dc:creator>
      <pubDate>Wed, 01 Oct 2025 07:28:03 +0000</pubDate>
      <link>https://dev.to/jayantur13/build-a-reddit-memes-jokes-api-with-nodejs-55pi</link>
      <guid>https://dev.to/jayantur13/build-a-reddit-memes-jokes-api-with-nodejs-55pi</guid>
      <description>&lt;p&gt;I've made a &lt;strong&gt;JSON API for memes, jokes, and funny posts from Reddit&lt;/strong&gt; a long time ago for my small android app project, used it for a long time and then made it public, known as &lt;strong&gt;&lt;a href="https://www.npmjs.com/package/reddit-memes-api" rel="noopener noreferrer"&gt;&lt;code&gt;reddit-memes-api&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt; — a Node.js package + Express server that gives you JSON data for images, gifs, and videos from subreddits.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Works with &lt;strong&gt;any subreddit&lt;/strong&gt; you whitelist (&lt;code&gt;memes&lt;/code&gt;, &lt;code&gt;jokes&lt;/code&gt;, etc.).&lt;/li&gt;
&lt;li&gt;Supports Reddit’s built-in sort: &lt;code&gt;hot&lt;/code&gt;, &lt;code&gt;new&lt;/code&gt;, &lt;code&gt;top&lt;/code&gt;, &lt;code&gt;rising&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Time filtering with &lt;code&gt;day&lt;/code&gt;, &lt;code&gt;week&lt;/code&gt;, &lt;code&gt;month&lt;/code&gt;, &lt;code&gt;year&lt;/code&gt;, &lt;code&gt;all&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;✅ Pagination using &lt;code&gt;after&lt;/code&gt; and &lt;code&gt;before&lt;/code&gt; tokens.&lt;/li&gt;
&lt;li&gt;✅ Response includes &lt;code&gt;marked_as_nsfw&lt;/code&gt; flag for post-level filtering.&lt;/li&gt;
&lt;li&gt;✅ Built-in &lt;strong&gt;rate limiting&lt;/strong&gt; and &lt;strong&gt;caching&lt;/strong&gt; (configurable via &lt;code&gt;. env&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📦 Installation
&lt;/h2&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;reddit-memes-api
&lt;span class="c"&gt;# or&lt;/span&gt;
yarn add reddit-memes-api
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🚀 API Reference
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Type 1: Get subreddit data
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;GET /:subreddit&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Type 2: Get sorted posts
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;GET /:subreddit/:memesare?limit=50&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Type 3: Get sorted + time-filtered posts
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;GET /:subreddit/:memesare/:freq?limit=100&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;👉 Full parameter docs in the &lt;a href="https://github.com/jayantur13/yo-memes-jokes" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🔧 Example Requests
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://your-api.com/memes" rel="noopener noreferrer"&gt;https://your-api.com/memes&lt;/a&gt;&lt;br&gt;
&lt;a href="https://your-api.com/memes/hot" rel="noopener noreferrer"&gt;https://your-api.com/memes/hot&lt;/a&gt;&lt;br&gt;
&lt;a href="https://your-api.com/memes/top/all?limit=100" rel="noopener noreferrer"&gt;https://your-api.com/memes/top/all?limit=100&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And the JSON response looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "error": false,
  "code": 200,
  "type": "Success",
  "data": [
    {
      "author": "reddit_user",
      "title": "This meme made my day 😂",
      "marked_as_nsfw": false,
      "post_hint": "image",
      "url": "https://i.redd.it/someimage.png"
    }
  ]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔌 Node.js Usage
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const { f1, f2, f3 } = require("reddit-memes-api");

(async () =&amp;gt; {
  const memes = await f1("memes");
  const hot = await f2("jokes", "hot", 10);
  const topWeek = await f3("memes", "top", "week", 20);

  console.log(memes.data);
})();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ⚙️ Env Example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;URL=https://reddit.com/r/
PORT=3000

## Rate Limiting
RATE_LIMIT_WINDOW=60000
RATE_LIMIT_MAX=60

## Caching
CACHE_TTL=30
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  💡 Changelog Highlights
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Added NSFW flag in response.&lt;/li&gt;
&lt;li&gt;Added pagination (after, before).&lt;/li&gt;
&lt;li&gt;Added rate limiting + caching.&lt;/li&gt;
&lt;li&gt;Valid subreddit list in src/subredditList.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;As it’s open-source — feel free to fork, improve, or suggest new features!&lt;br&gt;
👉 &lt;a href="https://github.com/jayantur13/yo-memes-jokes/" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I make this type of small projects, if you like my work and this content. Consider giving some motivation by reacting, commenting etc. on my post or follow/star my project on GitHub. Thanks for reading.&lt;/p&gt;

</description>
      <category>node</category>
      <category>reddit</category>
      <category>api</category>
      <category>opensource</category>
    </item>
    <item>
      <title>🚀 Keep Your Dependencies Fresh with Node.js Package Updater for VS Code</title>
      <dc:creator>Jayant Navrange</dc:creator>
      <pubDate>Wed, 30 Jul 2025 14:41:53 +0000</pubDate>
      <link>https://dev.to/jayantur13/keep-your-dependencies-fresh-with-nodejs-package-updater-for-vs-code-593</link>
      <guid>https://dev.to/jayantur13/keep-your-dependencies-fresh-with-nodejs-package-updater-for-vs-code-593</guid>
      <description>&lt;h2&gt;
  
  
  🧩 Node.js Package Updater – VS Code Extension
&lt;/h2&gt;

&lt;p&gt;A simple and effective Visual Studio Code extension to check and update outdated &lt;strong&gt;Node.js (npm)&lt;/strong&gt; dependencies right inside the editor. Stay up-to-date, avoid breaking changes, and keep your code fresh with just a few clicks!&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚠️ Warning
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Please make a backup of your &lt;code&gt;package.json&lt;/code&gt; and lock file.
&lt;/li&gt;
&lt;li&gt;If anything goes wrong, you’ll be able to restore it.
&lt;/li&gt;
&lt;li&gt;Always double-check dependency versions by hovering — it's a handy but simple tool.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ✨ Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;📦 Detect outdated dependencies in your project
&lt;/li&gt;
&lt;li&gt;🚨 Highlights &lt;strong&gt;major version updates&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;📋 View installed, wanted, and latest versions
&lt;/li&gt;
&lt;li&gt;🔄 One-click &lt;strong&gt;update&lt;/strong&gt; for individual packages
&lt;/li&gt;
&lt;li&gt;✅ "Update All" feature with confirmation
&lt;/li&gt;
&lt;li&gt;🔗 Open package changelog on npm
&lt;/li&gt;
&lt;li&gt;🆘 In-app help with version explanation
&lt;/li&gt;
&lt;li&gt;🖼️ Activity bar icon (light/dark theme support)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📸 Screenshots
&lt;/h2&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%2Fjiuc9dfgofsoymtvn7je.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%2Fjiuc9dfgofsoymtvn7je.png" alt="Image Demo" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Options for refresh, update all, help, single update and more&lt;/p&gt;
&lt;/blockquote&gt;




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

&lt;h3&gt;
  
  
  1. Install the extension
&lt;/h3&gt;

&lt;p&gt;Install from the &lt;a href="https://marketplace.visualstudio.com/items?itemName=JayantNavrange.nodejs-package-updater" rel="noopener noreferrer"&gt;VS Code Marketplace&lt;/a&gt; or use this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ext &lt;span class="nb"&gt;install &lt;/span&gt;JayantNavrange.nodejs-package-updater
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Open a Node.js project
&lt;/h3&gt;

&lt;p&gt;Make sure your project has a &lt;code&gt;package.json&lt;/code&gt; and run &lt;code&gt;npm install&lt;/code&gt; once.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Usage - Either from sidebar or using commands
&lt;/h3&gt;

&lt;p&gt;Auto-detection of outdated dependencies (for most cases worked), update one by one or update all at once, ignore update not implemented at this time. There's alot of details for you before updating like:&lt;/p&gt;

&lt;p&gt;Installed: Version currently in &lt;code&gt;node_modules&lt;/code&gt;&lt;br&gt;
Wanted: Version that satisfies your &lt;code&gt;package.json&lt;/code&gt; semver&lt;br&gt;
Latest: Latest available version on npm&lt;br&gt;
⚠️ Major version updates may introduce breaking changes&lt;/p&gt;

&lt;p&gt;Also, there are commands you can use in command palette&lt;/p&gt;

&lt;h3&gt;
  
  
  Why use this?
&lt;/h3&gt;

&lt;p&gt;Don't like terminal stuff? Just few clicks and you are done updating (I like this way more)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Currently in development but works well, there are a few typos and some things you may notice which are twice. I will be updating, adding more and fixing things.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you are interested, download and start using. Contributions are welcome and feedback appreciated.&lt;/p&gt;

&lt;p&gt;Thanks for reading. Follow for more. 😎&lt;/p&gt;

</description>
      <category>node</category>
      <category>npm</category>
      <category>vscode</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Build Your Own Custom Start Page Using Google AI Studio</title>
      <dc:creator>Jayant Navrange</dc:creator>
      <pubDate>Wed, 23 Jul 2025 07:06:43 +0000</pubDate>
      <link>https://dev.to/jayantur13/build-your-own-custom-start-page-using-google-ai-studio-442f</link>
      <guid>https://dev.to/jayantur13/build-your-own-custom-start-page-using-google-ai-studio-442f</guid>
      <description>&lt;p&gt;Here I am again, back with something new and exciting! While exploring &lt;strong&gt;Google AI Studio&lt;/strong&gt;, I ended up creating some really interesting mini-projects—like &lt;strong&gt;P2P file sharing using WebRTC&lt;/strong&gt;, a few frontend UI designs, and even some apps using free public APIs.&lt;/p&gt;

&lt;p&gt;Today, I want to share something I found particularly fun and useful: a &lt;strong&gt;Custom Start Page Generator&lt;/strong&gt; powered by &lt;strong&gt;Google's AI Studio&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  🌟 What Is It?
&lt;/h2&gt;

&lt;p&gt;This tool lets you generate a beautiful and functional &lt;strong&gt;start page&lt;/strong&gt;—like the ones you see on your new tab—with just a prompt.&lt;/p&gt;

&lt;p&gt;Yup, it’s that simple. The more detailed your prompt, the more accurate and tailored the output will be.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔧 How It Works
&lt;/h2&gt;

&lt;p&gt;The tool is divided into two main sections:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Left Panel&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;prompt box&lt;/strong&gt; where you describe your desired layout, features, colors, and vibe.&lt;/li&gt;
&lt;li&gt;An &lt;strong&gt;AI background generator&lt;/strong&gt; powered by &lt;strong&gt;Imagen&lt;/strong&gt; to create a visual that complements your theme.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Right Panel&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;live preview&lt;/strong&gt; of the generated start page.&lt;/li&gt;
&lt;li&gt;Maximize and minimize the preview screen.&lt;/li&gt;
&lt;li&gt;An option to &lt;strong&gt;export/download&lt;/strong&gt; the HTML output.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  🖼️ Preview
&lt;/h2&gt;

&lt;p&gt;Here's a glimpse of what the interface and generated start pages might look like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📝 Prompt section on the left to describe your layout and style
&lt;/li&gt;
&lt;li&gt;🖌️ AI-generated background image using Imagen
&lt;/li&gt;
&lt;li&gt;🖥️ Live responsive preview on the right
&lt;/li&gt;
&lt;li&gt;💾 Download/export button to save the HTML&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;_Note: Since this is generated using Google AI Studio, your results will vary based on your prompt. You have full control over tweaking the exported HTML later. _&lt;/p&gt;
&lt;/blockquote&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%2Fllrx0caelk7ymi2kvxsb.jpeg" 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%2Fllrx0caelk7ymi2kvxsb.jpeg" alt="AIEditor" width="800" height="411"&gt;&lt;/a&gt;&lt;br&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%2Flmte2g1knncrshcy4mmv.jpeg" 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%2Flmte2g1knncrshcy4mmv.jpeg" alt="AIImagegeno" width="800" height="449"&gt;&lt;/a&gt;&lt;br&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%2Fhgx21kiry3gz4wpgpmj8.jpeg" 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%2Fhgx21kiry3gz4wpgpmj8.jpeg" alt="AIImagegent" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  📝 Why It’s Useful
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🚀 Rapid prototyping for landing/start pages.
&lt;/li&gt;
&lt;li&gt;🎨 Creative exploration of UI ideas.
&lt;/li&gt;
&lt;li&gt;🛠️ Exportable HTML that you can &lt;strong&gt;tweak/edit&lt;/strong&gt; to fit your project needs.
&lt;/li&gt;
&lt;li&gt;🤖 Leverages the power of &lt;strong&gt;prompt engineering&lt;/strong&gt;—a rising trend in the AI + dev world.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ⚠️ A Few Caveats
&lt;/h2&gt;

&lt;p&gt;Like most AI-generated tools, the results can vary. Sometimes the layout or styles may not be perfect—but since the output is exportable as HTML, you can easily fine-tune it as needed.&lt;/p&gt;

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

&lt;p&gt;I’m not including a project link here because the beauty of this is—you can make it yourself. All you need is &lt;strong&gt;Google AI Studio&lt;/strong&gt; and a little creativity in your prompt.&lt;/p&gt;

&lt;p&gt;This project gave me a glimpse of what’s possible when you combine &lt;strong&gt;AI + web development&lt;/strong&gt;. If you enjoy rapid frontend prototyping, prompt-driven creativity, or just want a cool new-tab page, give it a try!&lt;/p&gt;

&lt;p&gt;Would love to hear what you think or if you make something awesome with it—feel free to share!&lt;/p&gt;

&lt;p&gt;Happy building! 💻✨&lt;/p&gt;

</description>
      <category>googleai</category>
      <category>webdev</category>
      <category>promptengineering</category>
      <category>ai</category>
    </item>
    <item>
      <title>Inject Meme Into Your VsCode WorkSpace 🤪</title>
      <dc:creator>Jayant Navrange</dc:creator>
      <pubDate>Thu, 17 Jul 2025 18:42:42 +0000</pubDate>
      <link>https://dev.to/jayantur13/inject-meme-into-your-vscode-workspace-2g62</link>
      <guid>https://dev.to/jayantur13/inject-meme-into-your-vscode-workspace-2g62</guid>
      <description>&lt;h2&gt;
  
  
  I Made a VSCode Extension That Shows You Memes From Reddit 😎
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Because sometimes, code breaks, tests fail, and all you really need is a meme.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  💡 The Idea
&lt;/h3&gt;

&lt;p&gt;It all started with a simple goal:&lt;br&gt;
I wanted to make my own VSCode extension.&lt;/p&gt;

&lt;p&gt;At the time, I was getting deep into Reddit (you know how that goes) and had a serious appreciation for good memes. I thought—what if I combine both? Code and comedy, VSCode and Reddit.&lt;br&gt;
And just like that, the idea for Just For Laughs was born.&lt;/p&gt;
&lt;h3&gt;
  
  
  🤔 What Does It Do?
&lt;/h3&gt;

&lt;p&gt;Just For Laughs brings memes straight into your VSCode workspace using Reddit as the source.&lt;/p&gt;

&lt;p&gt;Here’s what you can do:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Type &lt;code&gt;Just For Laughs: Meme&lt;/code&gt; in the Command Palette to see a fresh meme (served via WebView)&lt;/li&gt;
&lt;li&gt;Change the subreddit by running:&lt;code&gt;Just For Laughs: Set current URL&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Want to check which subreddit you’re using?
Run: &lt;code&gt;Just For Laughs: Get current URL&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Bonus: Set a keybinding (like &lt;code&gt;Ctrl+P&lt;/code&gt;) to fetch a meme with one tap🔥&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's a quick demo:&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%2Fi.ibb.co%2FdGjh04B%2Fdemo.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.ibb.co%2FdGjh04B%2Fdemo.gif" alt="My cool logo" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⚙️ How It Works&lt;/p&gt;

&lt;p&gt;This extension uses a minimal backend to fetch Reddit posts (check out my other repo yo-memes-jokes), and displays them inside a WebView in VSCode.&lt;/p&gt;

&lt;p&gt;You can set your favorite meme subreddits like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;r/ProgrammerHumor&lt;/li&gt;
&lt;li&gt;r/dankmemes&lt;/li&gt;
&lt;li&gt;r/memes&lt;/li&gt;
&lt;li&gt;r/wholesomememes
… or any subreddit that brings a smile to your face&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Settings are available via your &lt;code&gt;settings.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"justforlaughs.ext.subredditURL": "https://www.reddit.com/r/ProgrammerHumor/"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And yes, make sure to reload the extension (or hit Developer: Reload Window) for changes to take effect.&lt;/p&gt;

&lt;p&gt;🧪 What's Missing?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Like any meme, this extension isn’t perfect (yet).&lt;/li&gt;
&lt;li&gt;The tests? Let's just say they sometimes fail.&lt;/li&gt;
&lt;li&gt;A better error handler is definitely on the roadmap.&lt;/li&gt;
&lt;li&gt;Got suggestions or feature ideas? I’d love contributions! Check 
out &lt;a href="https://github.com/jayantur13/just-for-laughs-vsc-extension/blob/master/CONTRIBUTING.md" rel="noopener noreferrer"&gt;Contributing.md&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🚀 The Real Win
&lt;/h3&gt;

&lt;p&gt;This was less about memes and more about learning &lt;strong&gt;how to build and publish a real-world VSCode extension.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I explored:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VSCode's Extension API&lt;/li&gt;
&lt;li&gt;WebViews&lt;/li&gt;
&lt;li&gt;Command Palette interactions&lt;/li&gt;
&lt;li&gt;Extension Settings&lt;/li&gt;
&lt;li&gt;Using a remote API inside an editor&lt;/li&gt;
&lt;li&gt;Packaging and publishing to the marketplace&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But the coolest part? I now have a tool that makes my editor laugh with me.&lt;/p&gt;

&lt;h3&gt;
  
  
  🧠 Lessons I Learned
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Start small. A silly idea is still a valid one.&lt;/li&gt;
&lt;li&gt;Reddit APIs and extensions don’t always play nice—expect some scraping headaches.&lt;/li&gt;
&lt;li&gt;The VSCode community is awesome. You learn a lot just by reading open-source extension code.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  📦 The Project
&lt;/h3&gt;

&lt;p&gt;Here’s everything bundled together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VSCode Extension → &lt;a href="https://marketplace.visualstudio.com/items?itemName=JayantNavrange.justforlaughs" rel="noopener noreferrer"&gt;just-for-laughs-vsc-extension&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub Repo → &lt;a href="https://github.com/jayantur13/yo-memes-jokes" rel="noopener noreferrer"&gt;yo-memes-jokes&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you enjoy coding and memes (who doesn't?), try it out—or better yet, contribute!&lt;/p&gt;

&lt;h3&gt;
  
  
  🧡 Support the Project
&lt;/h3&gt;

&lt;p&gt;Want to help out? Star the repo, send a PR, or &lt;a href="https://github.com/sponsors/jayantur13" rel="noopener noreferrer"&gt;sponsor me&lt;/a&gt; if you’re feeling generous.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Logo credits: u/RamenFish195&lt;br&gt;
License: &lt;a href="https://github.com/jayantur13/just-for-laughs-vsc-extension/blob/master/LICENSE" rel="noopener noreferrer"&gt;MIT&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  TL;DR
&lt;/h3&gt;

&lt;p&gt;I made a VSCode extension that fetches memes from Reddit and shows them inside your code editor.&lt;br&gt;
It was fun, silly, and surprisingly educational.&lt;br&gt;
Hope it makes your debugging sessions a little more bearable 💻💥😂&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;br&gt;
Drop a comment if you have any feature ideas or fun subreddit suggestions. 🙌&lt;/p&gt;

</description>
      <category>api</category>
      <category>programming</category>
      <category>vscode</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Build Apps with Indian Holidays &amp; Festivals — Using JSON from calendar-bharat</title>
      <dc:creator>Jayant Navrange</dc:creator>
      <pubDate>Wed, 16 Jul 2025 19:25:18 +0000</pubDate>
      <link>https://dev.to/jayantur13/build-apps-with-indian-holidays-festivals-using-json-from-calendar-bharat-leb</link>
      <guid>https://dev.to/jayantur13/build-apps-with-indian-holidays-festivals-using-json-from-calendar-bharat-leb</guid>
      <description>&lt;h2&gt;
  
  
  📅 How I Built &lt;em&gt;calendar-bharat&lt;/em&gt;: An Open Indian Calendar in JSON Format
&lt;/h2&gt;

&lt;p&gt;It all began with a simple frustration:&lt;br&gt;&lt;br&gt;
Every year, I found myself hunting down reliable sources for Indian festival dates, government holidays, and culturally significant days like &lt;em&gt;National Youth Day&lt;/em&gt; etc. for my android app. There was no good resource out there, so I made one myself&lt;/p&gt;

&lt;p&gt;I thought to myself, &lt;em&gt;"Why isn’t this data easily available as a JSON file?"&lt;/em&gt;&lt;br&gt;&lt;br&gt;
That’s when the idea for &lt;strong&gt;calendar-bharat&lt;/strong&gt; was born.&lt;/p&gt;


&lt;h2&gt;
  
  
  🌟 The Vision
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;calendar-bharat&lt;/strong&gt; is my humble attempt to make Indian calendar data—across religions, languages, and regions—accessible to &lt;strong&gt;everyone&lt;/strong&gt;, especially developers.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What if you could just fetch &lt;code&gt;https://jayantur13.github.io/calendar-bharat/calendar/2025.json&lt;/code&gt; and have everything you need?&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  🔍 What You’ll Find Inside
&lt;/h2&gt;

&lt;p&gt;Whether you’re building a desktop app, a mobile widget, or a CLI tool, the JSON file gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Government holidays
&lt;/li&gt;
&lt;li&gt;🎉 All major festivals (marked with &lt;code&gt;"type": "Festival"&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;📌 Noteworthy days like &lt;strong&gt;National Youth Day&lt;/strong&gt;, &lt;strong&gt;Engineer's Day&lt;/strong&gt;, and more&lt;/li&gt;
&lt;li&gt;🔄 Year-wise JSON files (2024, 2025… 2030)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All served via &lt;strong&gt;a simple GitHub Pages site&lt;/strong&gt;, because distribution should be easy.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;👉 Try it: &lt;a href="https://jayantur13.github.io/calendar-bharat/" rel="noopener noreferrer"&gt;calendar-bharat website&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;👉 JSON Direct Link: &lt;a href="https://jayantur13.github.io/calendar-bharat/calendar/2025.json" rel="noopener noreferrer"&gt;2025 Calendar&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  🔧 How to Use It?
&lt;/h2&gt;

&lt;p&gt;That’s the best part. It’s just a plain JSON file.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use it in your &lt;strong&gt;JavaScript frontend&lt;/strong&gt; to show upcoming festivals
&lt;/li&gt;
&lt;li&gt;Pull it into your &lt;strong&gt;Python script&lt;/strong&gt; to generate monthly reminders
&lt;/li&gt;
&lt;li&gt;Make a Telegram or WhatsApp bot (why not?)&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Basically, &lt;em&gt;"You know it, right?"&lt;/em&gt; — use &lt;strong&gt;any language&lt;/strong&gt; or platform you like.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  🛠️ Made with Simplicity in Mind
&lt;/h2&gt;

&lt;p&gt;The structure is clean, easy to parse, and meant to be future-proof.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;json{
  "2025": {
    "January 2025": {
      "January 1, 2025, Monday": {
        "event": "English New Year",
        "type": "Religional Festival",
        "extras": "first day of Gregorian calendar"
      },
      "January 12, 2025, Friday": {
        "event": "National Youth Day",
        "type": "Good to know",
        "extras": "fixed day in Gregorian calendar"
      }
}
}
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🧑‍💻 Open Source, Always
&lt;/h3&gt;

&lt;p&gt;I truly believe in the power of community. So, if you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Want to add support for other regional calendars (Gujarati, Tamil, Odia, etc.)&lt;/li&gt;
&lt;li&gt;Spot an error or missing date&lt;/li&gt;
&lt;li&gt;Wish to add historical years&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;→ Open an issue or submit a PR.&lt;br&gt;
Every contribution counts. 🙏&lt;/p&gt;

&lt;p&gt;Check out the contributing guidelines before you start.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚠️ A Note of Caution
&lt;/h3&gt;

&lt;p&gt;While I’ve tried my best to keep the data accurate,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I will not be held responsible for any inaccuracy or wrong data.&lt;br&gt;
So always cross-check before using it for official or critical applications.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;💖 Show Some Love&lt;br&gt;
If this project helps you or sparks ideas, consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⭐ Giving it a star on GitHub&lt;/li&gt;
&lt;li&gt;☕ Donating (any amount helps!)&lt;/li&gt;
&lt;li&gt;📬 Opening an issue for a calendar you'd like to see next&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🏷️ License&lt;br&gt;
Released under &lt;a href="https://github.com/jayantur13/calendar-bharat/blob/master/LICENSE.md" rel="noopener noreferrer"&gt;CC BY-SA 4.0&lt;/a&gt; —&lt;br&gt;
meaning you're free to use and remix it, as long as you give credit and share alike.&lt;/p&gt;

&lt;p&gt;📚 हिंदी में पढ़ना चाहते हैं?&lt;br&gt;
Click &lt;a href="https://github.com/jayantur13/calendar-bharat/blob/master/README-hi.md" rel="noopener noreferrer"&gt;Hindi README&lt;/a&gt; for the full guide in Hindi.&lt;/p&gt;

&lt;p&gt;Thanks for reading! Let’s build tools that celebrate the diversity of Bharat, one JSON file at a time. 🇮🇳&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/jayantur13/calendar-bharat" rel="noopener noreferrer"&gt;calendar-bharat&lt;/a&gt; on GitHub&lt;/p&gt;

</description>
      <category>json</category>
      <category>api</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Spin the wheel - News Spin</title>
      <dc:creator>Jayant Navrange</dc:creator>
      <pubDate>Sat, 05 Jul 2025 12:04:08 +0000</pubDate>
      <link>https://dev.to/jayantur13/spin-the-wheel-news-spin-2l52</link>
      <guid>https://dev.to/jayantur13/spin-the-wheel-news-spin-2l52</guid>
      <description>&lt;p&gt;&lt;em&gt;This post is my submission for &lt;a href="https://dev.to/deved/build-apps-with-google-ai-studio"&gt;DEV Education Track: Build Apps with Google AI Studio&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I have made a news generator using "spin the wheel" game concept. Player first selects their country and spins the wheel. Wheel stops pointing to category and some news is then tailored from top sources with a news image (using imagen) and description.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prompts
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Build "spin the wheel" game for news. Wheel must have a pointer to point to a category and at least 14 sections in the wheel using emoji. Give sections different background color. At game start allow player to select a country, then player can spin, wheel pointer lands on a category, inform the player about it then get news from top news sources and use imagen for news image and description from source.&lt;/li&gt;
&lt;li&gt;Fix Issue: 1. Wheel have 2 plates for section. 2. Wheel pointer points to airplane emoji and the category on news is displayed as "🔬Science"&lt;/li&gt;
&lt;li&gt;Edit: Do not ask player to select after every spin. Allow him to change it using a button.&lt;/li&gt;
&lt;li&gt;Make this game compatible for different screen sizes.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&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%2F3nnmehbp9qsut121i1jm.jpeg" 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%2F3nnmehbp9qsut121i1jm.jpeg" alt=" " width="800" height="433"&gt;&lt;/a&gt;&lt;br&gt;
Try here- &lt;a href="https://aistudio.google.com/app/prompts?state=%7B%22ids%22:%5B%221DkIOQSWIIjmgakLj_Lb0gqj2I-cANxVv%22%5D,%22action%22:%22open%22,%22userId%22:%22113233941325313362024%22,%22resourceKeys%22:%7B%7D%7D&amp;amp;usp=sharing" rel="noopener noreferrer"&gt;https://aistudio.google.com/app/prompts?state=%7B%22ids%22:%5B%221DkIOQSWIIjmgakLj_Lb0gqj2I-cANxVv%22%5D,%22action%22:%22open%22,%22userId%22:%22113233941325313362024%22,%22resourceKeys%22:%7B%7D%7D&amp;amp;usp=sharing&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;It took me some time to get understanding of Google AI Studio works.&lt;/li&gt;
&lt;li&gt;And after understanding the concept of how this works, the outputs where according to my requirements and project went well.&lt;/li&gt;
&lt;li&gt;There are different things that can be improved using the studio itself but for something built in minutes, this is the best working version.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you for the opportunity and reading this.&lt;/p&gt;

</description>
      <category>deved</category>
      <category>learngoogleaistudio</category>
      <category>ai</category>
      <category>gemini</category>
    </item>
    <item>
      <title>🧪 Validate and Format JSON in Style — With Downloads, XML, and More!</title>
      <dc:creator>Jayant Navrange</dc:creator>
      <pubDate>Sat, 05 Jul 2025 06:42:11 +0000</pubDate>
      <link>https://dev.to/jayantur13/validate-and-format-json-in-style-with-downloads-xml-and-more-3o14</link>
      <guid>https://dev.to/jayantur13/validate-and-format-json-in-style-with-downloads-xml-and-more-3o14</guid>
      <description>&lt;h2&gt;
  
  
  Validate and Format JSON in Style with json.validator
&lt;/h2&gt;

&lt;p&gt;TL;DR&lt;br&gt;
I built a lightweight JSON validation tool that’s colorful, clear, and downloadable.&lt;br&gt;
🔗 &lt;a href="https://github.com/jayantur13/json.validator" rel="noopener noreferrer"&gt;Github Repo&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🧰 Features at a Glance
&lt;/h3&gt;

&lt;p&gt;✅ Real-time validation (Green = OK, Red = Error)&lt;br&gt;
🧾 Error message display&lt;br&gt;
💾 Download as .json or .xml&lt;br&gt;
⏳ Auto-reset after 1 min of textarea focus loss&lt;br&gt;
🧹 Manual clear/reset&lt;br&gt;
📜 Planned: Line numbers for better readability&lt;/p&gt;

&lt;h3&gt;
  
  
  📦 Latest Changes (14 June 2024)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Basic JSON formatting implemented&lt;/li&gt;
&lt;li&gt;Download options for .json and .xml files&lt;/li&gt;
&lt;li&gt;Auto data reset on inactivity&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔧 Under the Hood
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Uses &lt;a href="https://github.com/nashwaan/xml-js" rel="noopener noreferrer"&gt;xml-js&lt;/a&gt; for converting JSON to XML&lt;/li&gt;
&lt;li&gt;Built as a simple web tool with a clean interface&lt;/li&gt;
&lt;li&gt;Designed to help both beginners and power users of JSON&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🚀 What’s Next
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Add line numbering for better navigation&lt;/li&gt;
&lt;li&gt;Possibly enable multi-format output or clipboard copy&lt;/li&gt;
&lt;li&gt;More robust error messages (in progress)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🤝 Want to Help?
&lt;/h3&gt;

&lt;p&gt;PRs and stars are welcome!&lt;/p&gt;

&lt;h3&gt;
  
  
  Sponsorships help keep the lights on ☕
&lt;/h3&gt;

&lt;p&gt;→ &lt;a href="https://github.com/sponsors/jayantur13" rel="noopener noreferrer"&gt;Github Sponsor&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📜 License
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/jayantur13/json.validator/blob/master/LICENSE.md" rel="noopener noreferrer"&gt;MIT License&lt;/a&gt; — do what you want, just give credit 😊&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Try on &lt;a href="https://jayantur13.github.io/json.validator/" rel="noopener noreferrer"&gt;https://jayantur13.github.io/json.validator/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let me know your thoughts, feedback, or ideas in the comments below!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>json</category>
      <category>javascript</category>
      <category>code</category>
    </item>
    <item>
      <title>Minecraft server status in readme/signature</title>
      <dc:creator>Jayant Navrange</dc:creator>
      <pubDate>Tue, 01 Jul 2025 07:07:51 +0000</pubDate>
      <link>https://dev.to/jayantur13/minecraft-server-status-in-readmesignature-48bm</link>
      <guid>https://dev.to/jayantur13/minecraft-server-status-in-readmesignature-48bm</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%2Fi.postimg.cc%2FmDjCTfyJ%2Fminecraft.png" class="article-body-image-wrapper"&gt;&lt;img alt="Logo" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.postimg.cc%2FmDjCTfyJ%2Fminecraft.png" width="499" height="29"&gt;&lt;/a&gt;
  &lt;/p&gt;

&lt;h3&gt;&lt;b&gt;Minecraft server state in your readme/signature.&lt;/b&gt;&lt;/h3&gt;
  
  &lt;p&gt;Setup Guide • Examples • Valid format • Theme demo • Contributing&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Easy to setup and use&lt;/li&gt;
&lt;li&gt;Full customistaion&lt;/li&gt;
&lt;li&gt;Variety of themes&lt;/li&gt;
&lt;li&gt;Supports java and bedrock edition&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Setup Guide
&lt;/h2&gt;

&lt;p&gt;Please read the following for an easy setup -&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mandatory parameters for banner:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These below,two parameters are must -&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;srvAddress - Pass server address i.e &lt;em&gt;hostname&lt;/em&gt;,&lt;em&gt;ip&lt;/em&gt;,&lt;em&gt;ip:port&lt;/em&gt; or &lt;em&gt;name with domain&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;srvType - Pass server type &lt;em&gt;java&lt;/em&gt; for Java Edition and &lt;em&gt;bedrock&lt;/em&gt; for Bedrock edition.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Optional parameters for banner:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Following parameters can be used for customisation -&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;borderColor - pass a border color (or transparent)&lt;/li&gt;
&lt;li&gt;fontWeight - pass normal/bold/bolder/lighter or 100-900&lt;/li&gt;
&lt;li&gt;bgColor - pass background color&lt;/li&gt;
&lt;li&gt;txtColor - pass text color&lt;/li&gt;
&lt;li&gt;headingColor - pass heading color&lt;/li&gt;
&lt;li&gt;iconColor - pass an icon color (or transparent)&lt;/li&gt;
&lt;li&gt;themeval - pass an available theme name&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Note1: Color must be passed starting with %23 (encoded value for #)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note2: Customise all parameters or use theme instead (i.e themeval)&lt;/p&gt;

&lt;p&gt;Note3: There is &lt;strong&gt;1 min. cache time&lt;/strong&gt; for now,set by default&lt;/p&gt;

&lt;p&gt;Note4: Possible to skip some optional parameters&lt;/p&gt;

&lt;p&gt;Note5: API data maybe inaccurate sometimes&lt;/p&gt;

&lt;p&gt;Note6: You can view full info. of a server,example at end&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Examples
&lt;/h2&gt;

&lt;p&gt;You can use &lt;strong&gt;markdown&lt;/strong&gt; or &lt;strong&gt;img&lt;/strong&gt; to render minecraft server state&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!-- Markdown --&amp;gt;

![ServerState Minecraft](https://serverstate-minecraft.vercel.app/api?srvAddress=play.craftersmc.net&amp;amp;srvType=bedrock)

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

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!-- HTML --&amp;gt;

&amp;lt;img src="https://serverstate-minecraft.vercel.app/api?srvAddress=play.craftersmc.net&amp;amp;srvType=bedrock alt="ServerState Minecraft"/&amp;gt;

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

&lt;/div&gt;



&lt;h4&gt;Valid Format&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;If you don't want icon (iconColor),border (borderColor) and fontWeight just don't pass them in query&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Default usage (i.e with &lt;em&gt;random themes&lt;/em&gt;)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://serverstate-minecraft.vercel.app/api?srvAddress=play.craftersmc.net&amp;amp;srvType=bedrock
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With a theme&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://serverstate-minecraft.vercel.app/api?srvAddress=play.craftersmc.net&amp;amp;srvType=bedrock&amp;amp;themeval=omni
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Full customisation&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://serverstate-minecraft.vercel.app/api?srvAddress=play.craftersmc.net&amp;amp;srvType=bedrock&amp;amp;borderColor=%23000000&amp;amp;fontWeight=bold&amp;amp;bgColor=%23ffffff&amp;amp;txtColor=%23000000&amp;amp;headingColor=%23000000&amp;amp;iconColor=%23000000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Customise theme with borderColor and fontWeight&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://serverstate-minecraft.vercel.app/api?srvAddress=pokecentral.org&amp;amp;srvType=java&amp;amp;themeval=cobalt&amp;amp;borderColor=%23ffffff&amp;amp;fontWeight=bold
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;Themes Demo (Click link for live preview)&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://serverstate-minecraft.vercel.app/api?srvAddress=play.craftersmc.net&amp;amp;srvType=bedrock&amp;amp;themeval=yeblu" rel="noopener noreferrer"&gt;ServerState Minecraft1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://serverstate-minecraft.vercel.app/api?srvAddress=ms.pixelmonrealms.com&amp;amp;srvType=java&amp;amp;themeval=panda" rel="noopener noreferrer"&gt;ServerState Minecraft2&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Checkout themes in &lt;a href="https://github.com/jayantur13/tree/main/src/themes.json" rel="noopener noreferrer"&gt;All themes&lt;/a&gt; or you can get an idea of how themes may look &lt;a href="https://github.com/anuraghazra/github-readme-stats/tree/master/themes" rel="noopener noreferrer"&gt;Theme Demo courtesy Anurag Hazra&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Changelog
&lt;/h2&gt;

&lt;p&gt;For all the important changelog vist &lt;a href="https://github.com/jayantur13/serverstate-minecraft/blob/main/CHANGELOG.md" rel="noopener noreferrer"&gt;Changelog&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/anuraghazra/github-readme-stats" rel="noopener noreferrer"&gt;anuraghazra/github-readme-stats&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ABSphreak/readme-jokes" rel="noopener noreferrer"&gt;ABSphreak/readme-jokes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/DenverCoder1/github-readme-streak-stats" rel="noopener noreferrer"&gt;DenverCoder1/github-readme-streak-stats&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mcstatus.io/" rel="noopener noreferrer"&gt;Minecraft API by Jacob Gunther&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Contributing
&lt;/h2&gt;

&lt;p&gt;Contributions are always welcome!&lt;/p&gt;

&lt;p&gt;See &lt;a href="https://github.com/jayantur13/serverstate-minecraft/blob/main/CONTRIBUTING.md" rel="noopener noreferrer"&gt;Contributing&lt;/a&gt; for ways to get started.&lt;/p&gt;

&lt;p&gt;Please adhere to this project's &lt;a href="https://github.com/jayantur13/serverstate-minecraft/blob/main/CODE_OF_CONDUCT.md" rel="noopener noreferrer"&gt;Code Of Conduct&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Support
&lt;/h2&gt;

&lt;p&gt;For issues, open a new issue or use discussion.&lt;/p&gt;

&lt;h2&gt;
  
  
  License
&lt;/h2&gt;

&lt;p&gt;This project is licensed under the &lt;a href="https://github.com/jayantur13/serverstate-minecraft/blob/main/LICENSE" rel="noopener noreferrer"&gt;MIT License&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Follow for more such posts. Feedbacks are welcome.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>opensource</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Wallpy: A Wallpaper Changer for Linux Desktops 🌄</title>
      <dc:creator>Jayant Navrange</dc:creator>
      <pubDate>Tue, 01 Jul 2025 06:16:53 +0000</pubDate>
      <link>https://dev.to/jayantur13/wallpy-a-wallpaper-changer-for-linux-desktops-1khj</link>
      <guid>https://dev.to/jayantur13/wallpy-a-wallpaper-changer-for-linux-desktops-1khj</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Tired of staring at the same desktop wallpaper every day? Let &lt;strong&gt;Wallpy&lt;/strong&gt; breathe new life into your Linux desktop — automatically, intelligently, and beautifully.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🧠 Why I Built Wallpy
&lt;/h2&gt;

&lt;p&gt;As a Linux user and developer, I enjoy customizing my desktop. But changing wallpapers manually is tedious, and most existing solutions either lacked features, weren’t DE-agnostic, or required too much setup.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;Wallpy&lt;/strong&gt; — a smart, simple, and flexible wallpaper changer made just for Linux desktops.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚙️ Features at a Glance
&lt;/h2&gt;

&lt;p&gt;✅ &lt;strong&gt;Desktop Environment Detection&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Works across &lt;strong&gt;GNOME&lt;/strong&gt;, &lt;strong&gt;KDE&lt;/strong&gt;, &lt;strong&gt;XFCE&lt;/strong&gt;, and others — Wallpy uses the right backend for your setup.&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Dark/Light Wallpaper Matching (Planned)&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Assign different folders for light and dark themes. Wallpy adapts to your system’s current appearance.&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Automatic Wallpaper Cycling&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Choose your interval (e.g. every 15 minutes), and Wallpy will handle the rest.&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Autostart on Login&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
One-click toggle to add Wallpy to your startup apps via a &lt;code&gt;.desktop&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;System Tray Support&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Minimize to tray — right-click the icon for &lt;em&gt;Show&lt;/em&gt; or &lt;em&gt;Quit&lt;/em&gt;. It's non-intrusive and lightweight.&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Modern GTK Interface&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Built with &lt;code&gt;PyGObject&lt;/code&gt; — it looks and feels native on most modern Linux distros.&lt;/p&gt;




&lt;h2&gt;
  
  
  🖥️ Screenshots
&lt;/h2&gt;

&lt;h2&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%2Fin74dvcf6l2w55h96bfh.png" alt=" " width="800" height="449"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  🔧 Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🐍 &lt;strong&gt;Python 3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🖼️ &lt;strong&gt;GTK via PyGObject&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🛠️ &lt;strong&gt;PyInstaller&lt;/strong&gt; for packaging&lt;/li&gt;
&lt;li&gt;📂 &lt;code&gt;.desktop&lt;/code&gt; autostart entries&lt;/li&gt;
&lt;li&gt;⚙️ Config saved locally (JSON or INI)&lt;/li&gt;
&lt;li&gt;🖥️ Tray icon support with theme awareness&lt;/li&gt;
&lt;li&gt;🧪 Tested on Ubuntu (Mate)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📦 Download &amp;amp; Install
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;You can build it from source or use pre-built packages.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;📁 &lt;strong&gt;GitHub Repo&lt;/strong&gt;: &lt;a href="https://github.com/jayantur13/wallpy" rel="noopener noreferrer"&gt;https://github.com/jayantur13/wallpy/releases&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🔽 Pre-Built Releases
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/jayantur13/wallpy/releases/download/v1.0/Wallpy-x86_64.AppImage" rel="noopener noreferrer"&gt;Wallpy.AppImage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jayantur13/wallpy/releases/download/v1.0/wallpy_1.0_amd64.deb" rel="noopener noreferrer"&gt;Wallpy.deb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jayantur13/wallpy/releases/download/v1.0/wallpy-1.0-1.x86_64.rpm" rel="noopener noreferrer"&gt;Wallpy.rpm&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 Tip: For AppImage, run &lt;code&gt;chmod +x Wallpy.AppImage&lt;/code&gt; and double-click to launch.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🤝 Contribute
&lt;/h2&gt;

&lt;p&gt;Wallpy is open-source and actively maintained. PRs, issues, and feedback are welcome!&lt;/p&gt;

&lt;p&gt;👉 Read more on GitHub: &lt;a href="https://github.com/jayantur13/wallpy" rel="noopener noreferrer"&gt;github.com/jayantur13/wallpy&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  💬 Final Words
&lt;/h2&gt;

&lt;p&gt;Wallpy started as a small utility to scratch my own itch — but it’s become something I use every day.&lt;/p&gt;

&lt;p&gt;If you’re a Linux user who values a beautiful, dynamic desktop, Wallpy might be just what you’re looking for.&lt;/p&gt;




&lt;p&gt;📬 &lt;em&gt;Follow me for more Linux apps, open-source tools, and Python projects.&lt;/em&gt;&lt;br&gt;&lt;br&gt;
❤️ Star the repo if you find it useful!&lt;/p&gt;




</description>
      <category>linux</category>
      <category>opensource</category>
      <category>python</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
