<?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: Ayush kumar Mahapatra</title>
    <description>The latest articles on DEV Community by Ayush kumar Mahapatra (@alexyak06).</description>
    <link>https://dev.to/alexyak06</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%2F4016166%2Fe162e8da-2cbc-47f5-850e-f23e18056897.png</url>
      <title>DEV Community: Ayush kumar Mahapatra</title>
      <link>https://dev.to/alexyak06</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alexyak06"/>
    <language>en</language>
    <item>
      <title>Building a Production-Grade Pizza Delivery App — My OIBSIP Level 3 Experience</title>
      <dc:creator>Ayush kumar Mahapatra</dc:creator>
      <pubDate>Sun, 05 Jul 2026 12:40:13 +0000</pubDate>
      <link>https://dev.to/alexyak06/building-a-production-grade-pizza-delivery-app-my-oibsip-level-3-experience-87j</link>
      <guid>https://dev.to/alexyak06/building-a-production-grade-pizza-delivery-app-my-oibsip-level-3-experience-87j</guid>
      <description>&lt;p&gt;"Not recommended for beginners."&lt;br&gt;
That's what the task sheet said about Level 3 of the Oasis Infobyte Web Development &amp;amp; Design internship. Naturally, that's the one I picked.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Task
&lt;/h2&gt;

&lt;p&gt;Level 3 has exactly one task — build a full-stack Pizza Delivery Application. Not a landing page, not a CRUD demo. A real platform: user authentication with email verification, a custom pizza builder, live payments, inventory management, an admin system, and real-time order tracking.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Stack
&lt;/h2&gt;

&lt;p&gt;React + Vite + Tailwind on the frontend, Node.js + Express on the backend, MongoDB Atlas for the database, Socket.IO for real-time updates, Razorpay for payments. Deployed across Vercel (frontend) and Railway (backend).&lt;/p&gt;

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

&lt;p&gt;The user journey: register → verify email (Nodemailer) → log in (JWT) → build a pizza in 4 steps (base, sauce, cheese, veggies) with dynamic pricing → pay through Razorpay's checkout → track the order live on a progress bar.&lt;br&gt;
The admin side: a separate authenticated dashboard managing a 20-item inventory with low-stock indicators and inline editing, plus order status management. When an admin updates an order's status, the customer's screen updates instantly — no refresh — via Socket.IO rooms per order.&lt;br&gt;
Behind the scenes: stock auto-decrements on every successful payment, a node-cron job emails hourly low-stock alerts, and Razorpay payments are verified server-side with HMAC-SHA256 signatures — never trusting the client.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Actually Taught Me Things
&lt;/h2&gt;

&lt;p&gt;The features were the syllabus. The debugging was the education.&lt;br&gt;
MongoDB Atlas DNS failures — my local machine couldn't resolve mongodb+srv:// connection strings because a VPN was interfering with DNS SRV lookups. Solution: the legacy non-SRV connection string format. Lesson: know what your connection string actually does.&lt;br&gt;
Railway's SMTP block — my deployed backend couldn't send verification emails because Railway's free tier blocks outbound SMTP ports entirely. No code fixes this — it's a platform-level restriction. I documented it transparently in the README instead of hiding it. Lesson: hosting platforms have opinions, and honest documentation beats pretending.&lt;br&gt;
Payment signature verification — getting HMAC verification right means understanding exactly what Razorpay signs and in what order. One string concatenation mistake and every legitimate payment fails verification. Lesson: read the docs character-by-character when money is involved.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Result
&lt;/h2&gt;

&lt;p&gt;A deployed, working platform — live payment flow tested end-to-end with a real bank OTP in Razorpay test mode, real-time updates proven across two browser windows.&lt;br&gt;
Code: &lt;a href="https://github.com/Alexy-ak06/OIBSIP" rel="noopener noreferrer"&gt;github.com/Alexy-ak06/OIBSIP&lt;/a&gt;&lt;br&gt;
Live: &lt;a href="https://oibsip-kappa-five.vercel.app" rel="noopener noreferrer"&gt;oibsip-kappa-five.vercel.app&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Thanks to &lt;a href="https://oasisinfobyte.com" rel="noopener noreferrer"&gt;Oasis Infobyte&lt;/a&gt; for structuring an internship where the advanced task is genuinely advanced. If you're an OIBSIP intern reading this and deciding between levels: pick the one that scares you slightly. The debugging you'll do is the résumé you're actually building.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>node</category>
      <category>internship</category>
      <category>react</category>
    </item>
  </channel>
</rss>
