The Problem
A community blood donation initiative needed a system to actually manage the full donor lifecycle — recruiting and tracking donors by blood group, handling requests from people who need blood, and giving staff visibility into who's currently available to donate — rather than relying on informal contact lists with no way to see real-time availability across all 8 blood groups.
The Solution
I built the Blood Donation Management System on ASP.NET MVC and ASP.NET Web API with a SQL Server backend, giving the organization a role-based platform covering admins, staff, donors, and requesters. Donors sign up with their blood group, city, and last-donated date, and the system tracks their active/inactive and available/unavailable status so staff always know who can realistically be contacted for a given blood type — instead of working from an outdated list.
Key Features
Manage Admin & Manage Staff — role-based access so administrators and staff each have appropriate control over the system, from adding new staff to managing existing accounts.
Manage Donors — full donor records including blood group, current and permanent city, and last-donated date, with status tracking across active, inactive, available, and unavailable donors.
Manage Requesters — tracking the people and organizations requesting blood, separate from the donor pool.
Manage Blood Requests — a full request pipeline (new, in-process, completed, rejected) so every blood request is tracked from submission to fulfillment.
Live blood-group dashboard — real-time counts broken out across all 8 blood groups (A+, A−, B+, B−, O+, O−, AB+, AB−), plus donor and staff statistics, so anyone managing the system can see availability at a glance.
Technical Highlights
Built on ASP.NET MVC and ASP.NET Web API over the .NET Framework, with SQL Server handling the relational donor, staff, and request data. The dashboard aggregates live counts across donors (total, active, inactive, available, unavailable), staff (total, current, old), and requests (total, new, in-process, completed) broken out by blood group, giving a single-page operational view rather than requiring separate reports for each category.
Results
The organization now runs its entire blood donation operation — donor sign-up, availability tracking by blood group, staff management, and blood request fulfillment — through one system with a live dashboard, replacing informal donor lists with structured, queryable records staff can actually rely on when a request comes in.
FAQ
How does the system know which donors are actually available right now?
Every donor has an active/inactive and available/unavailable status, tracked alongside their last-donated date, so staff can filter to donors who are both currently active and eligible to donate again rather than contacting everyone on the full list.
Why track requesters separately from donors?
Requesters (people or organizations asking for blood) and donors (people giving blood) have different data and workflows — a requester's blood request moves through its own pipeline (new, in-process, completed, rejected), while a donor's record tracks availability and donation history.
What information does a donor provide when signing up?
Name, phone, email, age, current and permanent city, blood group, and last-donated date — giving staff enough detail to match a donor to a specific request by blood group and location.
Does the dashboard show real-time numbers, or does it need to be manually refreshed/reported?
The dashboard pulls live counts directly from the same donor, staff, and request data used throughout the system — total and available donors by blood group, staff counts, and request status counts — so it reflects current state rather than a periodically generated report.
How are blood requests tracked from submission to completion?
Each request moves through a defined pipeline — new, in-process, completed, or rejected — so staff and the requester both have visibility into where a specific request currently stands rather than it existing only as an email or phone call with no status tracking.