<?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: Bollareddy Pranoy Raj</title>
    <description>The latest articles on DEV Community by Bollareddy Pranoy Raj (@bollareddy_pranoy_ra).</description>
    <link>https://dev.to/bollareddy_pranoy_ra</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%2F3874421%2Fcd645cbb-7cbf-4c0d-b43b-97d1941f323c.jpg</url>
      <title>DEV Community: Bollareddy Pranoy Raj</title>
      <link>https://dev.to/bollareddy_pranoy_ra</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bollareddy_pranoy_ra"/>
    <language>en</language>
    <item>
      <title>How I Built a Full-Stack Blood Donation Management System with React, Node.js &amp; Socket.IO</title>
      <dc:creator>Bollareddy Pranoy Raj</dc:creator>
      <pubDate>Sun, 12 Apr 2026 15:01:57 +0000</pubDate>
      <link>https://dev.to/bollareddy_pranoy_ra/how-i-built-a-full-stack-blood-donation-management-system-with-react-nodejs-socketio-4hbk</link>
      <guid>https://dev.to/bollareddy_pranoy_ra/how-i-built-a-full-stack-blood-donation-management-system-with-react-nodejs-socketio-4hbk</guid>
      <description>&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;A full-stack Blood Donation Management System for Aditya University that handles&lt;br&gt;
camp registration, live dashboards, admin management, and real-time updates.&lt;/p&gt;

&lt;p&gt;🔴 Live Demo: &lt;a href="https://blood-donation-web-gamma.vercel.app" rel="noopener noreferrer"&gt;https://blood-donation-web-gamma.vercel.app&lt;/a&gt;&lt;br&gt;
💻 GitHub: &lt;a href="https://github.com/BollareddyPranoyRaj/BloodDonationWeb" rel="noopener noreferrer"&gt;https://github.com/BollareddyPranoyRaj/BloodDonationWeb&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; React, React Bootstrap, Recharts, Socket.IO Client&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Node.js, Express, MongoDB, Mongoose, Socket.IO&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment:&lt;/strong&gt; Vercel (Frontend) + Render (Backend) + MongoDB Atlas&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;🏕️ Camp-based donor registration flow&lt;/li&gt;
&lt;li&gt;📊 Live dashboard with real-time Socket.IO updates&lt;/li&gt;
&lt;li&gt;🩸 Donation desk for confirming donations&lt;/li&gt;
&lt;li&gt;👨‍💼 Admin panel for managing camps and gallery&lt;/li&gt;
&lt;li&gt;📈 Donor demographics and analytics with Recharts&lt;/li&gt;
&lt;li&gt;📸 Gallery management with image uploads&lt;/li&gt;
&lt;li&gt;📬 Contact form with message inbox&lt;/li&gt;
&lt;li&gt;🔐 OTP verification system&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Complete REST API
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Authentication
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;POST /api/login&lt;/code&gt; — Admin login&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;POST /api/send-otp&lt;/code&gt; — Send OTP for verification&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;POST /api/verify-otp&lt;/code&gt; — Verify OTP&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Donor Registration
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;POST /api/register&lt;/code&gt; — Register as a donor for a camp&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GET /api/registrations&lt;/code&gt; — Get all registrations&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GET /api/registrations/search&lt;/code&gt; — Search donor by roll number/date&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;POST /api/registrations/confirm-donation&lt;/code&gt; — Confirm donation at desk&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Events
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;POST /api/create-event&lt;/code&gt; — Create camp with banner image upload&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GET /api/events&lt;/code&gt; — Get all blood donation camps&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;DELETE /api/event/:id&lt;/code&gt; — Delete an event&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Volunteers &amp;amp; Staff
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;POST /api/add-volunteer&lt;/code&gt; — Add volunteer&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GET /api/volunteers&lt;/code&gt; — Get all volunteers&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;POST /api/add-staff&lt;/code&gt; — Add staff donor manually&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GET /api/staff&lt;/code&gt; — Get all staff donors&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;POST /api/add-guest-management&lt;/code&gt; — Add guest/management donor&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GET /api/guest-management&lt;/code&gt; — Get all guest donors&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Gallery
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;POST /api/upload-gallery&lt;/code&gt; — Upload image to gallery&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GET /api/gallery&lt;/code&gt; — Get all gallery images&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Contact
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;POST /api/contact&lt;/code&gt; — Submit contact form&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GET /api/messages&lt;/code&gt; — Get all contact messages&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Real-time
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Socket.IO&lt;/strong&gt; — Live dashboard updates on every donation confirmation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Biggest Challenge
&lt;/h2&gt;

&lt;p&gt;Deploying a monorepo to Render — the backend folder was accidentally&lt;br&gt;
set as a git submodule which caused build failures. Fixed it by&lt;br&gt;
deinitializing the submodule and re-adding as a regular folder.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Real-time communication with Socket.IO&lt;/li&gt;
&lt;li&gt;Full-stack deployment with Vercel + Render + MongoDB Atlas&lt;/li&gt;
&lt;li&gt;Monorepo structure for full-stack projects&lt;/li&gt;
&lt;li&gt;OTP-based authentication flow&lt;/li&gt;
&lt;li&gt;Image upload handling with Multer&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Cloudinary integration for persistent image uploads&lt;/li&gt;
&lt;li&gt;Donor export/reporting feature&lt;/li&gt;
&lt;li&gt;Automated tests&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;If you have any questions about the project, drop them in the comments!&lt;/p&gt;

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