<?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: Gajendra Paliwal</title>
    <description>The latest articles on DEV Community by Gajendra Paliwal (@gajendra_paliwal_278ab8aa).</description>
    <link>https://dev.to/gajendra_paliwal_278ab8aa</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%2F4030434%2Feaba6795-0c26-40d1-8466-ebbbc9ebac39.png</url>
      <title>DEV Community: Gajendra Paliwal</title>
      <link>https://dev.to/gajendra_paliwal_278ab8aa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gajendra_paliwal_278ab8aa"/>
    <language>en</language>
    <item>
      <title>How to Reconcile Nested ePOS and ERP Data Arrays Natively in the Browser</title>
      <dc:creator>Gajendra Paliwal</dc:creator>
      <pubDate>Fri, 18 Sep 2026 13:00:09 +0000</pubDate>
      <link>https://dev.to/gajendra_paliwal_278ab8aa/how-to-reconcile-nested-epos-and-erp-data-arrays-natively-in-the-browser-3j63</link>
      <guid>https://dev.to/gajendra_paliwal_278ab8aa/how-to-reconcile-nested-epos-and-erp-data-arrays-natively-in-the-browser-3j63</guid>
      <description>&lt;p&gt;As a data engineer or developer working with retail or enterprise architectures, you’ve likely faced the classic reconciliation headache: matching sales records from an &lt;strong&gt;electronic Point of Sale (ePOS)&lt;/strong&gt; system against entries in a massive &lt;strong&gt;Enterprise Resource Planning (ERP)&lt;/strong&gt; database (like SAP or Oracle).&lt;br&gt;
The data formats rarely align out of the box. ePOS logs are often flat, high-volume JSON streams or CSVs, while ERP exports come as deeply nested arrays containing multiple layers of procurement, tax, and inventory metadata.&lt;br&gt;
When you need to match these files to find discrepancies, missing values, or quantity gaps, the traditional approach is to build a custom Python script or upload the files to an online utility.&lt;br&gt;
But uploading sensitive corporate transaction records to a random, remote server is a compliance nightmare.&lt;br&gt;
Here is how you can handle deep, nested array reconciliation natively in the client-side browser using JavaScript—keeping your business data private while eliminating server infrastructure bottlenecks.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The Problem: The Nested Structure Bottleneck&lt;/strong&gt;&lt;br&gt;
When you try to map flat transaction data against a nested ERP structure, standard array lookup methods like .find() or .filter() scale terribly ((O(N \times M)) time complexity). If you drop a 50MB file into the browser, it will instantly freeze the main UI thread.&lt;br&gt;
Consider this common ERP nested array structure:&lt;br&gt;
json&lt;br&gt;
[&lt;br&gt;
  {&lt;br&gt;
    "order_id": "ERP_99812",&lt;br&gt;
    "metadata": {&lt;br&gt;
      "store_id": "ST_04",&lt;br&gt;
      "line_items": [&lt;br&gt;
        { "sku": "SKU-882", "quantity": 10, "unit_price": 15.00 },&lt;br&gt;
        { "sku": "SKU-104", "quantity": 2, "unit_price": 5.50 }&lt;br&gt;
      ]&lt;br&gt;
    }&lt;br&gt;
  }&lt;br&gt;
]&lt;br&gt;
Use code with caution.&lt;br&gt;
To reconcile this efficiently on the client side, we must flatten the data structure into a single-pass lookup index (O(1) lookup time) using an in-memory Map before running our matching loops.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The Solution: A High-Performance Browser Flattener&lt;/strong&gt;&lt;br&gt;
By extracting the nested items into a normalized key structure, we can easily process tens of thousands of rows locally. Here is a clean, dependency-free JavaScript function to flatten nested records for instant reconciliation:&lt;br&gt;
javascript&lt;br&gt;
function flattenNestedData(erpOrders) {&lt;br&gt;
  const flattenedIndex = new Map();&lt;/p&gt;

&lt;p&gt;for (const order of erpOrders) {&lt;br&gt;
    const orderId = order.order_id;&lt;br&gt;
    const storeId = order.metadata?.store_id;&lt;br&gt;
    const items = order.metadata?.line_items || [];&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for (const item of items) {
  // Create a unique composite key for precise matching
  const compositeKey = `${orderId}_${item.sku}`;

  flattenedIndex.set(compositeKey, {
    orderId,
    storeId,
    sku: item.sku,
    quantity: item.quantity,
    totalValue: item.quantity * item.unit_price
  });
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;br&gt;
  return flattenedIndex;&lt;br&gt;
}&lt;br&gt;
Use code with caution.&lt;br&gt;
Once your data is indexed into a standard map, your reconciliation loop can run through your ePOS file in a single pass (O(N)), comparing values, flagging missing entries, and calculating variances instantly without any server roundtrips.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Why Local Browser Processing Changes the Game&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Absolute Privacy&lt;/strong&gt;: Enterprise invoices, procurement data, and POS transactions never leave the client device. This completely eliminates data exposure risks and complies with strict corporate data governance rules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Upload Penalties&lt;/strong&gt;: Moving large text payloads over the network takes time. Local array manipulation reads raw text straight from a file input element, executing formatting scripts at the machine's native processing speed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No Infrastructure Overhead&lt;/strong&gt;: Client-side computation runs on the user's processor. As a developer, this allows you to scale a utility tool to thousands of concurrent users with effectively $0/month in backend server or cloud function costs.
________________________________________
&lt;strong&gt;Try it Live (100% Offline)&lt;/strong&gt;
I am currently building &lt;a href="https://formatforge.org/" rel="noopener noreferrer"&gt;https://formatforge.org/&lt;/a&gt;  around these exact architecture patterns—creating high-utility, browser-first tools for data engineers and developers.
If you want to validate payloads, cross-reference records, or format complex datasets without exposing internal company code to external databases, you can try out our collection of local utilities:
• &lt;strong&gt;Try the Live Tool: FormatForge Data and Invoice Reconciliation Workspace&lt;/strong&gt; (&lt;a href="https://formatforge.org/" rel="noopener noreferrer"&gt;https://formatforge.org/&lt;/a&gt; )
• &lt;strong&gt;Privacy Model&lt;/strong&gt;: Your payloads, scripts, and data arrays remain strictly in-browser and are never transmitted to a backend network.
Have you built local processing pipelines for large datasets? What framework bottlenecks do you run into when handling file parsing entirely inside client-side web workers? Let's discuss in the comments below!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;FormatForge.org &lt;/p&gt;




</description>
      <category>webdev</category>
      <category>dataengineering</category>
      <category>privacy</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Why I’m Building FormatForge.org as a Browser-First Data Tools Platform</title>
      <dc:creator>Gajendra Paliwal</dc:creator>
      <pubDate>Fri, 14 Aug 2026 17:41:48 +0000</pubDate>
      <link>https://dev.to/gajendra_paliwal_278ab8aa/why-im-building-formatforgeorg-as-a-browser-first-data-tools-platform-3emo</link>
      <guid>https://dev.to/gajendra_paliwal_278ab8aa/why-im-building-formatforgeorg-as-a-browser-first-data-tools-platform-3emo</guid>
      <description>&lt;p&gt;As developers and data engineers, we regularly use online tools to convert, validate, compare, reconcile, and inspect data.&lt;/p&gt;

&lt;p&gt;JSON to Excel.&lt;br&gt;
CSV transformations.&lt;br&gt;
PDF utilities.&lt;br&gt;
Diff and comparison tools.&lt;br&gt;
Invoice reconciliation.&lt;br&gt;
Data validators.&lt;/p&gt;

&lt;p&gt;These tools are convenient.&lt;/p&gt;

&lt;p&gt;But there is a question I think we should ask more often:&lt;/p&gt;

&lt;p&gt;Where is the data actually being processed?&lt;/p&gt;

&lt;p&gt;The usual online-tool workflow&lt;/p&gt;

&lt;p&gt;A typical online utility can work like this:&lt;/p&gt;

&lt;p&gt;Your File → Upload → Remote Server → Processing → Download Result&lt;/p&gt;

&lt;p&gt;For many tasks, that architecture is unnecessary.&lt;/p&gt;

&lt;p&gt;Modern browsers are capable of doing a surprising amount of processing locally using JavaScript, Web APIs, Web Workers, and client-side libraries.&lt;/p&gt;

&lt;p&gt;That led to one of the principles I’m following while building FormatForge.org:&lt;/p&gt;

&lt;p&gt;If a task can reasonably be completed in the browser, process it in the browser.&lt;/p&gt;

&lt;p&gt;The workflow becomes:&lt;/p&gt;

&lt;p&gt;Your Data → Your Browser → Your Result&lt;/p&gt;

&lt;p&gt;Why does this matter?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Privacy&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Consider the kinds of data we regularly work with:&lt;/p&gt;

&lt;p&gt;Excel and CSV exports&lt;br&gt;
JSON API responses&lt;br&gt;
invoices&lt;br&gt;
procurement data&lt;br&gt;
PDFs&lt;br&gt;
images&lt;br&gt;
API payloads&lt;br&gt;
reconciliation files&lt;br&gt;
business reports&lt;/p&gt;

&lt;p&gt;Even when a file doesn't contain passwords or obviously sensitive information, it may still contain internal business data.&lt;/p&gt;

&lt;p&gt;If the transformation can happen locally, there is no reason to unnecessarily send that data somewhere else.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Reduced data exposure&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Browser-side processing reduces the number of places through which the data has to travel.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;/p&gt;

&lt;p&gt;Browser → Network → Server → Storage/Memory → Network → Browser&lt;/p&gt;

&lt;p&gt;a local utility can often perform:&lt;/p&gt;

&lt;p&gt;Browser → Process → Result&lt;/p&gt;

&lt;p&gt;That's a much simpler data path.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Performance&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Local processing can also remove the upload/download cycle.&lt;/p&gt;

&lt;p&gt;For relatively small and medium-sized datasets, that can make tools feel almost instant.&lt;/p&gt;

&lt;p&gt;This is particularly useful for utilities such as:&lt;/p&gt;

&lt;p&gt;JSON ↔ CSV/Excel conversion&lt;br&gt;
text comparison&lt;br&gt;
format validation&lt;br&gt;
calculations&lt;br&gt;
data cleanup&lt;br&gt;
image transformations&lt;br&gt;
reconciliation and matching&lt;br&gt;
developer utilities&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Simpler infrastructure&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There is another benefit from the developer's perspective.&lt;/p&gt;

&lt;p&gt;If processing happens client-side, I don't necessarily need to build:&lt;/p&gt;

&lt;p&gt;upload endpoints&lt;br&gt;
temporary file storage&lt;br&gt;
file cleanup jobs&lt;br&gt;
processing queues&lt;br&gt;
additional database storage&lt;br&gt;
scaling infrastructure for every transformation&lt;/p&gt;

&lt;p&gt;That can significantly reduce both infrastructure complexity and operating cost.&lt;/p&gt;

&lt;p&gt;Browser-first doesn't mean building thin tools&lt;/p&gt;

&lt;p&gt;This has been another important lesson while building FormatForge.org.&lt;/p&gt;

&lt;p&gt;Running something in the browser isn't enough.&lt;/p&gt;

&lt;p&gt;A tool still needs to solve the complete user problem.&lt;/p&gt;

&lt;p&gt;For example, a reconciliation tool shouldn't simply tell me that two files are different.&lt;/p&gt;

&lt;p&gt;A useful workflow should help answer:&lt;/p&gt;

&lt;p&gt;What matched?&lt;/p&gt;

&lt;p&gt;What's missing?&lt;/p&gt;

&lt;p&gt;What's extra?&lt;/p&gt;

&lt;p&gt;What quantity is remaining?&lt;/p&gt;

&lt;p&gt;Can I export the reconciliation result?&lt;/p&gt;

&lt;p&gt;Similarly, a JSON-to-Excel tool should do more than dump JSON into a spreadsheet if the real-world data contains nested ERP or ePOS structures.&lt;/p&gt;

&lt;p&gt;This is why I've recently been spending more time improving existing tools instead of simply adding new ones.&lt;/p&gt;

&lt;p&gt;A principle I'm trying to follow&lt;/p&gt;

&lt;p&gt;The architecture is becoming quite simple conceptually:&lt;/p&gt;

&lt;p&gt;Input&lt;br&gt;
  ↓&lt;br&gt;
Validate&lt;br&gt;
  ↓&lt;br&gt;
Process locally&lt;br&gt;
  ↓&lt;br&gt;
Show transparent results&lt;br&gt;
  ↓&lt;br&gt;
Allow export/download&lt;/p&gt;

&lt;p&gt;And the product philosophy behind it is even simpler:&lt;/p&gt;

&lt;p&gt;Don't move user data when the job can be done where the data already is.&lt;/p&gt;

&lt;p&gt;For a utility platform, I think this is a useful default.&lt;/p&gt;

&lt;p&gt;Building FormatForge.org&lt;/p&gt;

&lt;p&gt;I'm building FormatForge.org around practical browser-based utilities for developers, data engineers, business users, procurement teams, and everyday users.&lt;/p&gt;

&lt;p&gt;The focus is increasingly on:&lt;/p&gt;

&lt;p&gt;real problem → complete workflow → local processing → useful result&lt;/p&gt;

&lt;p&gt;rather than:&lt;/p&gt;

&lt;p&gt;keyword → page → another thin tool&lt;/p&gt;

&lt;p&gt;My current approach to growing the project is:&lt;/p&gt;

&lt;p&gt;Quality → Indexing → Traffic → Revenue&lt;/p&gt;

&lt;p&gt;There is still a lot to improve, but browser-first processing is becoming an important part of how I think about the platform.&lt;/p&gt;

&lt;p&gt;Useful tools. Browser-based processing. Privacy by design.&lt;/p&gt;

&lt;p&gt;FormatForge.org&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>dataengineering</category>
      <category>privacy</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How I Built a Privacy-First Image to PDF Converter in Next.js (Without Uploading Files on server)</title>
      <dc:creator>Gajendra Paliwal</dc:creator>
      <pubDate>Mon, 27 Jul 2026 06:11:44 +0000</pubDate>
      <link>https://dev.to/gajendra_paliwal_278ab8aa/how-i-built-a-privacy-first-image-to-pdf-converter-in-nextjs-without-uploading-files-on-server-4ge9</link>
      <guid>https://dev.to/gajendra_paliwal_278ab8aa/how-i-built-a-privacy-first-image-to-pdf-converter-in-nextjs-without-uploading-files-on-server-4ge9</guid>
      <description>&lt;p&gt;When I started building document utilities, I noticed something that bothered me.&lt;/p&gt;

&lt;p&gt;Most online Image to PDF converters require users to upload their personal images to a server before generating a PDF.&lt;/p&gt;

&lt;p&gt;For resumes, passports, certificates, invoices, and other sensitive documents, that isn't always ideal.&lt;/p&gt;

&lt;p&gt;So I decided to build an Image to PDF converter that works entirely in the browser.&lt;/p&gt;

&lt;p&gt;No server-side file processing.&lt;br&gt;
No file uploads.&lt;br&gt;
Just your browser.&lt;/p&gt;

&lt;p&gt;Why Browser-Side Processing?&lt;/p&gt;

&lt;p&gt;Modern browsers are much more powerful than they were a few years ago.&lt;/p&gt;

&lt;p&gt;Instead of sending images to a backend, everything can be processed locally.&lt;/p&gt;

&lt;p&gt;That provides several advantages:&lt;/p&gt;

&lt;p&gt;🔒 Better privacy (files stay on your device)&lt;br&gt;
⚡ Faster processing&lt;br&gt;
💰 Lower hosting costs&lt;br&gt;
🌍 Better scalability&lt;br&gt;
📱 Works well on desktop and mobile&lt;/p&gt;

&lt;p&gt;For utility websites, this approach is often a better user experience.&lt;/p&gt;

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

&lt;p&gt;I built the tool using:&lt;/p&gt;

&lt;p&gt;Next.js&lt;br&gt;
React&lt;br&gt;
TypeScript&lt;br&gt;
Tailwind CSS&lt;br&gt;
Browser File API&lt;br&gt;
Canvas API&lt;br&gt;
pdf-lib&lt;/p&gt;

&lt;p&gt;Everything happens inside the browser.&lt;/p&gt;

&lt;p&gt;Features&lt;/p&gt;

&lt;p&gt;The latest version includes:&lt;/p&gt;

&lt;p&gt;Multiple image upload&lt;br&gt;
Drag &amp;amp; Drop support&lt;br&gt;
Drag-to-reorder pages&lt;br&gt;
Image rotation&lt;br&gt;
A4 &amp;amp; Letter page sizes&lt;br&gt;
Margin settings&lt;br&gt;
Image quality selection&lt;br&gt;
Browser-based PDF generation&lt;br&gt;
Download&lt;br&gt;
Native Share API support (where available)&lt;br&gt;
Biggest Challenges&lt;/p&gt;

&lt;p&gt;Generating the PDF wasn't actually the hardest part.&lt;/p&gt;

&lt;p&gt;The real challenge was creating a smooth experience that works across different browsers and devices.&lt;/p&gt;

&lt;p&gt;Some areas required extra attention:&lt;/p&gt;

&lt;p&gt;Handling large, high-resolution images efficiently&lt;br&gt;
Keeping memory usage under control&lt;br&gt;
Maintaining image quality&lt;br&gt;
Supporting mobile browsers&lt;br&gt;
Creating reusable UI components instead of duplicating logic&lt;/p&gt;

&lt;p&gt;Those improvements made a much bigger difference than simply adding more features.&lt;/p&gt;

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

&lt;p&gt;One lesson became very clear:&lt;/p&gt;

&lt;p&gt;Users value a polished workflow more than a long feature list.&lt;/p&gt;

&lt;p&gt;Simple improvements like:&lt;/p&gt;

&lt;p&gt;consistent buttons&lt;br&gt;
drag-and-drop uploads&lt;br&gt;
progress indicators&lt;br&gt;
printable layouts&lt;br&gt;
native sharing&lt;/p&gt;

&lt;p&gt;can significantly improve the overall experience.&lt;/p&gt;

&lt;p&gt;Live Demo&lt;/p&gt;

&lt;p&gt;If you'd like to try it yourself:&lt;/p&gt;

&lt;p&gt;👉 Image to PDF Tool&lt;br&gt;
&lt;a href="https://formatforge.in/tools/image-to-pdf" rel="noopener noreferrer"&gt;https://formatforge.in/tools/image-to-pdf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also explore the full collection of browser-based utilities here:&lt;/p&gt;

&lt;p&gt;🌐 FormatForge&lt;br&gt;
&lt;a href="https://formatforge.in" rel="noopener noreferrer"&gt;https://formatforge.in&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The platform focuses on browser-based tools for:&lt;/p&gt;

&lt;p&gt;PDF&lt;br&gt;
Images&lt;br&gt;
JSON&lt;br&gt;
YAML&lt;br&gt;
Developer Utilities&lt;br&gt;
Business &amp;amp; Productivity&lt;br&gt;
I'd Love Your Feedback&lt;/p&gt;

&lt;p&gt;I'm continuing to improve FormatForge with a focus on:&lt;/p&gt;

&lt;p&gt;Performance&lt;br&gt;
Privacy&lt;br&gt;
Browser-first processing&lt;br&gt;
Better developer and user experience&lt;/p&gt;

&lt;p&gt;I'm curious:&lt;/p&gt;

&lt;p&gt;Do you prefer browser-side or server-side document processing?&lt;br&gt;
Which PDF library has worked best for your projects?&lt;br&gt;
What's one feature you think every PDF tool should include?&lt;/p&gt;

&lt;p&gt;I'd love to hear your thoughts and suggestions in the comments.&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>javascript</category>
      <category>nextjs</category>
      <category>privacy</category>
    </item>
    <item>
      <title>From Enterprise Procurement Systems to Building Browser-Based Developer Tools</title>
      <dc:creator>Gajendra Paliwal</dc:creator>
      <pubDate>Wed, 22 Jul 2026 06:46:54 +0000</pubDate>
      <link>https://dev.to/gajendra_paliwal_278ab8aa/from-enterprise-procurement-systems-to-building-browser-based-developer-tools-4ke</link>
      <guid>https://dev.to/gajendra_paliwal_278ab8aa/from-enterprise-procurement-systems-to-building-browser-based-developer-tools-4ke</guid>
      <description>&lt;p&gt;Over the last 14+ years, I've been working with the Microsoft technology stack, designing and delivering enterprise applications for procurement, inventory management, warehouse operations, and EPOS systems.&lt;/p&gt;

&lt;p&gt;As a Tech Lead, I've worked on projects involving:&lt;/p&gt;

&lt;p&gt;Procurement &amp;amp; Purchase Order Management&lt;br&gt;
Inventory &amp;amp; Warehouse Management&lt;br&gt;
EPOS integrations&lt;br&gt;
Accounting integrations&lt;br&gt;
REST APIs &amp;amp; Microservices&lt;br&gt;
Azure cloud solutions&lt;br&gt;
Performance optimization and secure application design&lt;/p&gt;

&lt;p&gt;While enterprise software has always been my primary focus, I've recently been expanding my work with Next.js, React, and TypeScript by building browser-based productivity tools.&lt;/p&gt;

&lt;p&gt;One of my goals is to build applications that are fast, privacy-friendly, and solve real business problems directly in the browser whenever possible.&lt;/p&gt;

&lt;p&gt;Some of the tools I've been building include:&lt;/p&gt;

&lt;p&gt;YAML Studio for Kubernetes, Docker Compose, GitHub Actions, Azure DevOps, Helm, Prometheus, and Grafana configuration generation.&lt;br&gt;
JSON ↔ Excel Converter with support for nested JSON, multi-sheet exports, and parent-child relationships.&lt;br&gt;
Multilingual OCR for business documents.&lt;br&gt;
PDF to Excel with structured table extraction.&lt;br&gt;
JSON Formatter &amp;amp; Validator.&lt;br&gt;
CSV, Excel, and other data conversion tools.&lt;/p&gt;

&lt;p&gt;One thing I've learned while building document-processing tools is that file conversion is the easy part.&lt;/p&gt;

&lt;p&gt;The real challenge is preserving document structure—detecting tables, handling multi-line descriptions, reconstructing wrapped product codes, and generating output that users can actually work with instead of spending time cleaning it up.&lt;/p&gt;

&lt;p&gt;My experience in procurement has made this especially interesting because Purchase Orders, Delivery Notes, Goods Receipts, and Invoices all have different layouts and business rules. Building reliable tools requires understanding both the technology and the business process behind the documents.&lt;/p&gt;

&lt;p&gt;Alongside application development, I'm also continuing to strengthen my DevOps knowledge with Docker, Azure DevOps, Azure Container Registry (ACR), YAML Pipelines, and Kubernetes (AKS).&lt;/p&gt;

&lt;p&gt;It's been a rewarding journey moving from enterprise business applications to browser-based developer tools. Although the technologies are different, the objective remains the same:&lt;/p&gt;

&lt;p&gt;Build software that solves real problems in a simple, reliable, and user-friendly way.&lt;/p&gt;

&lt;p&gt;I'm always interested in connecting with developers working on enterprise software, document processing, cloud-native applications, or developer productivity tools.&lt;/p&gt;

&lt;p&gt;What engineering challenge are you currently working on? I'd love to hear about it.&lt;/p&gt;

&lt;p&gt;Technologies&lt;/p&gt;

&lt;p&gt;Instead of hashtags in the body, use a simple section like this:&lt;/p&gt;

&lt;p&gt;Backend: C#, .NET, ASP.NET Core, Web API, SQL Server&lt;/p&gt;

&lt;p&gt;Frontend: Next.js, React, TypeScript, Tailwind CSS&lt;/p&gt;

&lt;p&gt;Cloud &amp;amp; DevOps: Azure, Azure DevOps, Docker, Kubernetes (AKS), Azure Container Registry (ACR), YAML Pipelines&lt;/p&gt;

&lt;p&gt;Document Processing: OCR, PDF Processing, JSON, YAML, Excel, CSV&lt;/p&gt;

&lt;p&gt;Domain Experience: Procurement, Inventory Management, Warehouse Management, EPOS&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>devops</category>
      <category>dotnet</category>
      <category>nextjs</category>
    </item>
  </channel>
</rss>
