<?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: Somu Parida</title>
    <description>The latest articles on DEV Community by Somu Parida (@sagarsonu24).</description>
    <link>https://dev.to/sagarsonu24</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3161879%2F0ebc32de-0d0c-4460-9eb8-9d87807eee5f.png</url>
      <title>DEV Community: Somu Parida</title>
      <link>https://dev.to/sagarsonu24</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sagarsonu24"/>
    <language>en</language>
    <item>
      <title>When Should Screenshots Live in Git, and When Should They Be Hosted Elsewhere?</title>
      <dc:creator>Somu Parida</dc:creator>
      <pubDate>Fri, 25 Sep 2026 13:54:25 +0000</pubDate>
      <link>https://dev.to/sagarsonu24/when-should-screenshots-live-in-git-and-when-should-they-be-hosted-elsewhere-1050</link>
      <guid>https://dev.to/sagarsonu24/when-should-screenshots-live-in-git-and-when-should-they-be-hosted-elsewhere-1050</guid>
      <description>&lt;p&gt;A screenshot can turn a vague bug report into something you can act on. But once you capture it, where should it live: in the repository, attached to the issue, or at a separate URL? The right choice depends on whether the image is part of the project, evidence for one discussion, or an asset other people need to reuse.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep it in Git when it belongs to the project
&lt;/h2&gt;

&lt;p&gt;Commit an image when it explains the product or documentation and should change alongside the code. That might be a screenshot showing the expected output of a documented command, or a diagram that a pull request updates with an architecture change. A stable path also makes the image easy to reference from a README or docs page.&lt;/p&gt;

&lt;p&gt;Use a descriptive filename, add useful alt text, and export only the dimensions and quality the page needs. Large binaries can add weight to repository history even after you replace them. GitHub’s &lt;a href="https://docs.github.com/en/repositories/working-with-files/managing-large-files/about-large-files-on-github" rel="noopener noreferrer"&gt;large-file guidance&lt;/a&gt; explains the file and repository size limits to keep in mind.&lt;/p&gt;

&lt;h2&gt;
  
  
  Attach it when it is evidence for one conversation
&lt;/h2&gt;

&lt;p&gt;A screenshot of a one-off layout bug usually belongs with the issue or pull request where the fix is discussed. The image stays beside the reproduction steps and reviewer comments, but it does not become a permanent project asset after the conversation is resolved.&lt;/p&gt;

&lt;p&gt;Check the visibility of the issue before sharing. An attachment that only teammates can open will not help a reader following a public tutorial. Redact access tokens, email addresses, customer data, and unrelated browser tabs before uploading; cropping or marking up the image itself is safer than relying on a note in the surrounding thread.&lt;/p&gt;

&lt;h2&gt;
  
  
  Host it separately when it needs to be reused
&lt;/h2&gt;

&lt;p&gt;A hosted image makes sense when several repositories or a content system need the same asset, or when the destination accepts a URL but cannot store the file in your repository. This adds a dependency: the page now relies on another service keeping the image available to the intended readers.&lt;/p&gt;

&lt;p&gt;For a Markdown image, the URL should return the image itself. For example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;![Menu overlapping at a narrow viewport](https://example.com/screenshots/menu-overlap.png)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;A share or preview page may open perfectly in a browser tab but still fail inside an image embed, because the embed expects image data rather than a webpage. Use a share page when someone should open a normal page to inspect the file; use the direct media URL when the document needs to render the image inline.&lt;/p&gt;

&lt;p&gt;Disclosure: Media2URL is my project. Its &lt;a href="https://media2url.com/image-to-link" rel="noopener noreferrer"&gt;Image to Link tool&lt;/a&gt; returns a direct media URL for embeds and a separate share page for browser viewing. It is one possible way to host a local screenshot; whichever service you use, check its access and expiry settings before you make the link part of documentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  A quick decision check
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Will the image change with the code or docs? Keep it in the repository.&lt;/li&gt;
&lt;li&gt;Is it evidence for one bug report or review? Attach it to that discussion.&lt;/li&gt;
&lt;li&gt;Does it need the same address in several public places? A separate host may fit.&lt;/li&gt;
&lt;li&gt;Can a reader open the image without your account, and will it stay available as long as the page needs it?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My default is to commit stable project documentation, attach temporary evidence to its discussion, and host reusable public assets only when the URL’s lifetime and access rules are clear. Keep the original file somewhere you control, then open the final URL in a private browser window before you rely on it.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>git</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How I Built TextToPDF.net: A Minimalist Tool for Clean Document Conversion and OCR</title>
      <dc:creator>Somu Parida</dc:creator>
      <pubDate>Mon, 06 Apr 2026 19:10:28 +0000</pubDate>
      <link>https://dev.to/sagarsonu24/how-i-built-texttopdfnet-a-minimalist-tool-for-clean-document-conversion-and-ocr-5fpg</link>
      <guid>https://dev.to/sagarsonu24/how-i-built-texttopdfnet-a-minimalist-tool-for-clean-document-conversion-and-ocr-5fpg</guid>
      <description>&lt;p&gt;If you’ve ever tried to &lt;a href="https://texttopdf.net/" rel="noopener noreferrer"&gt;convert a simple text file to a PDF&lt;/a&gt; or extract text from a grainy scan, you’ve probably dealt with bloated "all-in-one" PDF suites. Most of them are filled with ads, require account sign-ups, or have confusing interfaces.&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%2Fbn2i3k8c6m5amda5xu2h.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%2Fbn2i3k8c6m5amda5xu2h.png" alt="TEXT to PDF" width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s why I built TextToPDF.net—a focused document tool designed for speed, clarity, and a distraction-free workflow.&lt;/p&gt;

&lt;p&gt;The Problem&lt;br&gt;
Traditional PDF tools often overcomplicate simple tasks. If you just need a clean PDF from a text draft or need to pull text out of a document to edit it, you shouldn't have to navigate a heavy UI.&lt;/p&gt;

&lt;p&gt;What TextToPDF.net Does&lt;br&gt;
I built this tool to follow a "do one task properly" philosophy. Here’s what it handles:&lt;/p&gt;

&lt;p&gt;Text to PDF: Paste text or upload files to get a structured, readable PDF instantly.&lt;/p&gt;

&lt;p&gt;PDF to Text: High-speed extraction to make your documents editable again.&lt;/p&gt;

&lt;p&gt;AI-Powered OCR: Converts scanned images and non-selectable PDFs into readable text using advanced character recognition.&lt;/p&gt;

&lt;p&gt;Privacy-First: We use temporary file processing. Your data isn't stored long-term, which is a major friction point with other online converters.&lt;/p&gt;

&lt;p&gt;The Workflow&lt;br&gt;
The tool follows a simple 3-step process:&lt;/p&gt;

&lt;p&gt;Upload/Paste your content.&lt;/p&gt;

&lt;p&gt;Process (Formatting or OCR).&lt;/p&gt;

&lt;p&gt;Download your result.&lt;/p&gt;

&lt;p&gt;Why I’m Sharing This&lt;br&gt;
I wanted to create something for students, writers, and developers who value their time. Whether you're converting logs, notes, or old scans, it should be a 10-second task, not a 10-minute one.&lt;/p&gt;

&lt;p&gt;I’d love for the DEV community to check it out and let me know what you think!&lt;/p&gt;

&lt;p&gt;👉 Try it here: TextToPDF.net&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Launch: Free Gift Card API to Convert Points into ₹INR + Trends (No Auth Needed)</title>
      <dc:creator>Somu Parida</dc:creator>
      <pubDate>Wed, 14 May 2025 09:57:32 +0000</pubDate>
      <link>https://dev.to/sagarsonu24/launch-free-gift-card-api-to-convert-points-into-inr-trends-no-auth-needed-16pj</link>
      <guid>https://dev.to/sagarsonu24/launch-free-gift-card-api-to-convert-points-into-inr-trends-no-auth-needed-16pj</guid>
      <description>&lt;h1&gt;
  
  
  ✨ Launching: Free Gift Card Estimation &amp;amp; Trends API (No Auth Needed)
&lt;/h1&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%2Ftwt4ydfbccnv8uqg5ifg.jpg" 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%2Ftwt4ydfbccnv8uqg5ifg.jpg" alt="Image description" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We're excited to launch a simple and fast API that lets you &lt;strong&gt;convert reward points into estimated INR value&lt;/strong&gt; and view &lt;strong&gt;trending gift card types&lt;/strong&gt; — all with just a POST request.&lt;/p&gt;

&lt;p&gt;This is perfect for developers building &lt;strong&gt;reward apps, survey platforms, gamified systems, or personal finance dashboards&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔧 What Does This API Do?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🟢 &lt;strong&gt;Estimates the INR value&lt;/strong&gt; of gift cards based on collected points&lt;/li&gt;
&lt;li&gt;📈 &lt;strong&gt;Returns trending gift card types&lt;/strong&gt; with popularity scores&lt;/li&gt;
&lt;li&gt;⚡ Fully deployed on &lt;strong&gt;Vercel&lt;/strong&gt; for fast global performance&lt;/li&gt;
&lt;li&gt;🛡️ &lt;strong&gt;No authentication required&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🔄 Returns a clean JSON response ready to use in your frontend or backend&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧪 Sample API Usage
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Endpoint:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;POST https://gift-card-xxxxx.vercel.app/api
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Example Request Body:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"estimate"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Amazon"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"points"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1500&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"estimated_value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"₹150"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  📊 Trends Mode
&lt;/h2&gt;

&lt;p&gt;Want to see which gift cards are trending?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Request:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"trends"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Response:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"trends"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Amazon"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"popularity_score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;95&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Flipkart"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"popularity_score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;85&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔗 Live Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🌍 &lt;strong&gt;Live API:&lt;/strong&gt; [&lt;a href="https://gift-card-6h130hufo-sagarsonu24s-projects.vercel.app/api" rel="noopener noreferrer"&gt;https://gift-card-6h130hufo-sagarsonu24s-projects.vercel.app/api&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&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%2Fs83slhs2ya8axhazm111.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%2Fs83slhs2ya8axhazm111.png" alt="Image description" width="800" height="533"&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%2Ftqyv03yq5li0cieq57wi.jpg" 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%2Ftqyv03yq5li0cieq57wi.jpg" alt="Image description" width="800" height="533"&gt;&lt;/a&gt;* 🔗 &lt;strong&gt;Official Website:&lt;/strong&gt; &lt;a href="https://www.FreeGiftZone.com" rel="noopener noreferrer"&gt;https://www.FreeGiftZone.com&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Who Is It For?
&lt;/h2&gt;

&lt;p&gt;This is made for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reward-based app creators&lt;/li&gt;
&lt;li&gt;Game and quiz platforms&lt;/li&gt;
&lt;li&gt;Task completion platforms (survey, watch &amp;amp; earn, etc.)&lt;/li&gt;
&lt;li&gt;Developers needing INR-based point conversions&lt;/li&gt;
&lt;li&gt;Anyone building gamification around gift cards&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 Why We Built This
&lt;/h2&gt;

&lt;p&gt;This API is part of our platform at &lt;a href="https://www.FreeGiftZone.com" rel="noopener noreferrer"&gt;FreeGiftZone.com&lt;/a&gt;, where users earn points by watching ads, completing surveys, playing games, and redeeming them for gift cards. We needed a way to convert these points into ₹INR in real-time for the app and web interface.&lt;/p&gt;

&lt;p&gt;So we built this API and made it public — for anyone to use without auth or payment.&lt;/p&gt;




&lt;h2&gt;
  
  
  🙌 Let’s Collaborate
&lt;/h2&gt;

&lt;p&gt;If you're building something similar or want to use this API in your own platform, feel free to integrate it. You can even fork the repo or request a feature.&lt;/p&gt;

&lt;p&gt;Leave your thoughts, feedback, or use-cases in the comments — we'd love to see what you’re building with it.&lt;/p&gt;




&lt;p&gt;💬 &lt;em&gt;Made with 💙 in India by the team at &lt;a href="https://www.FreeGiftZone.com" rel="noopener noreferrer"&gt;FreeGiftZone.com&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
📩 &lt;em&gt;Contact: &lt;a href="//mailto:sourav@freegiftzone.com"&gt;sourav@freegiftzone.com&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
🏷️ &lt;em&gt;Tags: #api #giftcards #rewards #nodejs #vercel #openapi #developers #india&lt;/em&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>api</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
