- π Overview
- β¨ Key Features
- ποΈ Architecture
- π§ Tech Stack
- π Project Structure
- π Getting Started
- π Authentication System
- π₯ User Roles & Permissions
- π Core Modules
- π€ AI Chatbot Integration
- π± API Documentation
- π¨ UI Components
- π§ Utilities & Hooks
- π Deployment
- π€ Contributing
BloodBond is a modern, full-stack blood bank management system designed to streamline blood donation and distribution processes. The platform connects three main stakeholders: Donors, Hospitals, and Blood Banks through an intuitive web interface with real-time notifications, inventory management, and AI-powered assistance.
To create a seamless, efficient, and life-saving blood management ecosystem that reduces the gap between blood availability and medical needs.
- Emergency Blood Requests: Instant blood requests with nearby blood bank notifications
- Request Tracking: Real-time status tracking for all blood requests
- Smart Matching: Automatic blood type compatibility checking with blood compatibility matrix
- Status Updates: Comprehensive request lifecycle management (Pending β Accepted β Fulfilled)
- Hospital Request System: Specialized hospital-to-blood bank request management
- Bulk Request Processing: Handle multiple blood requests efficiently
- JWT-based Authentication: Secure session management with NextAuth.js
- Role-based Access Control: Distinct interfaces for Donors, Hospitals, and Blood Banks
- Protected Routes: Secure access to role-specific functionalities with RoleGuard components
- Session Persistence: Automatic session management and refresh
- Multi-step Registration: Comprehensive registration flow with role-specific profile completion
- Dual Inventory Systems: Separate inventory management for Blood Banks and Hospitals
- Real-time Blood Inventory: Live tracking of blood units by type with expiry monitoring
- Hospital Inventory Management: Independent hospital blood stock control with batch tracking
- Automated Logging: Comprehensive inventory change tracking with audit trails
- Stock Level Indicators: Visual indicators for stock status (Good/Low Stock/Critical)
- Expiry Management: Advanced expiration tracking with automated alerts
- Emergency Requests: Priority handling for urgent blood needs with emergency call interface
- Proximity Search: Location-based blood bank recommendations
- Instant Notifications: Real-time alerts to relevant blood banks
- Guest Access: Emergency requests without mandatory registration
- Emergency Contact Management: Direct communication channels for urgent situations
- Drive Creation: Blood banks can create and manage donation drives
- Registration System: Donors can register for specific drives
- Drive Analytics: Comprehensive statistics and reporting for donation drives
- Automated Notifications: Drive reminders and updates to registered donors
- Multi-location Support: Manage drives across different locations
- Direct Donor Requests: Blood banks can request specific donors for rare blood types
- Donor Contact System: Secure communication between blood banks and donors
- Critical Settings: Donors can set availability for emergency situations
- Response Management: Streamlined donor response tracking and management
- Smart Matching: AI-powered donor-request matching based on location and blood type
- Groq AI Integration: Intelligent assistance for blood-related queries
- Contextual Help: Role-specific guidance and information
- 24/7 Availability: Round-the-clock support for users
- Enhanced Chat Interface: Improved chat UI with message processing and history
- Toast Notifications: Instant feedback for user actions with contextual messaging
- Emergency Alerts: Priority notifications for urgent requests with emergency notification hooks
- Status Updates: Automatic notifications for request status changes
- Inventory Alerts: Low stock and expiry warnings for both blood banks and hospitals
- Cross-platform Sync: Consistent notifications across devices
- Responsive Design: Mobile-first design with seamless desktop experience
- Dark/Light Theme: System-aware theme switching with CSS variables
- Interactive Landing Page: Multi-section home page with feature highlights and statistics
- Role-based Dashboards: Customized dashboards with relevant statistics and quick actions
- Modern UI Components: Clean, accessible interface with Lucide React icons and advanced form components
BloodBond follows a modern JAMstack architecture with enhanced modularity:
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β Frontend β β API Layer β β Database β
β (Next.js) βββββΊβ (Next.js API) βββββΊβ (MongoDB) β
β β β β β β
β β’ React 18 β β β’ RESTful APIs β β β’ Blood Banks β
β β’ TailwindCSS β β β’ Authentication β β β’ Blood Requestsβ
β β’ Lucide Icons β β β’ Role Guards β β β’ Donations β
β β’ Context APIs β β β’ Data Validationβ β β’ Inventory β
β β’ Custom Hooks β β β’ AI Integration β β β’ Drive Managementβ
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
- Framework: Next.js 15.5.2 (App Router)
- UI Library: React 18
- Styling: TailwindCSS with custom CSS variables for theming
- Icons: Lucide React (1,000+ SVG icons)
- State Management: React Context API + Custom Hooks
- Form Management: Advanced form components with validation
- Runtime: Node.js 20+
- Framework: Next.js API Routes
- Database: MongoDB with Mongoose ODM
- Authentication: NextAuth.js with JWT strategy
- Data Processing: Advanced message processing and blood compatibility checking
- AI Chatbot: Groq API for intelligent assistance with enhanced knowledge base
- Authentication: NextAuth.js providers with multi-role support
- Deployment: Vercel platform
- Package Manager: npm
- Linting: ESLint with Next.js configuration
- Build Tool: Next.js with Turbopack (dev mode)
- Environment: .env.local for configuration
bloodbond/
βββ π app/ # Next.js App Router directory
β βββ π layout.js # Root layout with providers
β βββ π page.js # Enhanced landing page with feature sections
β βββ π globals.css # Global styles & CSS variables for theming
β βββ π chatbot.css # Specialized chatbot styling
β βββ π dark-theme.css # Dark theme specific styles
β βββ π api/ # Backend API routes
β β βββ π auth/ # Enhanced authentication with session management
β β βββ π requests/ # Blood request management with tracking
β β βββ π inventory/ # Blood bank inventory APIs with logging
β β βββ π hospital-inventory/ # Hospital inventory management APIs
β β βββ π hospital-requests/ # Hospital-specific request handling
β β βββ π emergency/ # Emergency request handling
β β βββ π chatbot/ # AI chatbot integration
β β βββ π bloodbank/ # Blood bank specific operations
β β βββ π donors/ # Donor management and statistics
β β βββ π donations/ # Donation tracking and management
β β βββ π donation-drives/ # Drive creation and management
β β βββ π donor-contact-request/# Donor-blood bank communication
β β βββ π bloodbank-donor-requests/ # Blood bank to donor requests
β βββ π dashboard/ # Role-based dashboards with enhanced analytics
β β βββ π donor/ # Donor-specific dashboard
β β βββ π hospital/ # Hospital dashboard with inventory overview
β β βββ π bloodbank/ # Blood bank dashboard with drive management
β βββ π hospital-inventory/ # Hospital inventory management interface
β βββ π emergency/ # Emergency request interface
β βββ π emergency-call/ # Emergency call interface
β βββ π track-request/ # Universal request tracking system
β βββ π donor-requests/ # Donor request management
β βββ π hospital-requests/ # Hospital request interface
β βββ π hospital-request-acceptance/ # Hospital request acceptance
β βββ π register/ # Multi-role registration system
β βββ π login/ # Authentication pages
βββ π components/ # Reusable UI components
β βββ π navbar.jsx # Enhanced navigation with role-based menus
β βββ π Login.jsx # Authentication form
β βββ π Chatbot.jsx # AI chatbot interface
β βββ π ChatInput.jsx # Enhanced chat input component
β βββ π ChatMessage.jsx # Message display component
β βββ π RoleGuard.jsx # Role-based access control
β βββ π RoleSelection.jsx # Registration role selection
β βββ π ProtectedRoute.jsx # Route protection wrapper
β βββ π SessionProvider.jsx # Authentication wrapper
β βββ π footer.jsx # Site footer
β βββ π forms/ # Specialized form components
βββ π context/ # React Context providers
β βββ π ToastContext.jsx # Enhanced notification system
β βββ π ThemeContext.jsx # Advanced dark/light theme management
βββ π hooks/ # Custom React hooks
β βββ π useUserRole.js # Enhanced role management hook
β βββ π useEmergencyNotifications.js # Emergency alerts system
β βββ π useEmergencyRequestCheck.js # Emergency request validation
β βββ π useRequestStatus.js # Advanced request tracking
βββ π lib/ # Utility libraries
β βββ π roleAuth.js # Role-based authorization
β βββ π groqClient.js # AI chatbot client
β βββ π knowledgeBase.js # Enhanced chatbot knowledge base
β βββ π messageProcessor.js # Message processing utilities
β βββ π bloodCompatibility.js # Blood type compatibility matrix
βββ π model/ # MongoDB schemas
β βββ π user.js # Enhanced user model with roles
β βββ π BloodRequest.js # Blood request schema with status tracking
β βββ π BloodBank.js # Blood bank information
β βββ π BloodInventory.js # Blood bank inventory management
β βββ π HospitalInventory.js # Hospital inventory schema with batch tracking
β βββ π HospitalInventoryLog.js # Hospital inventory audit trail
β βββ π HospitalProfile.js # Hospital profile management
β βββ π HospitalRequest.js # Hospital-specific requests
β βββ π InventoryLog.js # Blood bank inventory change logs
β βββ π Donation.js # Donation records
β βββ π DonationDrive.js # Donation drive management
β βββ π DriveRegistration.js # Drive registration tracking
β βββ π Doner.js # Donor profile and statistics
β βββ π DonorContactRequest.js # Donor-blood bank communication
βββ π db/ # Database configuration
β βββ π connectDB.mjs # MongoDB connection
βββ π next.config.mjs # Next.js configuration
- Node.js 20+ installed
- MongoDB database (local or cloud)
- Groq API key for chatbot functionality
-
Clone the repository
git clone https://github.com/DevSsChar/BloodBond.git cd BloodBond -
Install dependencies
npm install
-
Environment Setup Create
.env.localfile in the root directory:# Database MONGODB_URI=mongodb://localhost:27017/bloodbond # Authentication NEXTAUTH_SECRET=your-nextauth-secret NEXTAUTH_URL=http://localhost:3000 # AI Chatbot GROQ_API_KEY=your-groq-api-key
-
Run the development server
npm run dev
-
Open your browser Navigate to
http://localhost:3000
// Advanced authentication configuration
providers: [
CredentialsProvider({
async authorize(credentials) {
// Custom authentication logic with role validation
// Multi-step registration support
// Enhanced session management
// JWT token generation and validation
}
})
]- JWT Strategy: Stateless authentication with secure tokens
- Role Persistence: User roles stored in JWT payload with session refresh
- Auto Refresh: Automatic session renewal with auth refresh endpoints
- Secure Storage: HTTP-only cookies for token storage
- Session Update: Dynamic session updates for profile changes
// Enhanced route protection with role-based access
export async function middleware(request) {
// Check authentication status
// Validate user roles with granular permissions
// Redirect unauthorized access
// Handle emergency access exceptions
}- Enhanced Profile Management: Comprehensive donor profile with medical history
- Request Tracking: Monitor blood request status with real-time updates
- Donation History: Track past donations with detailed statistics
- Emergency Requests: Submit urgent blood needs with priority handling
- Drive Participation: Register for and participate in donation drives
- Critical Settings: Configure availability for emergency blood needs
- Contact Responses: Respond to blood bank contact requests
- Patient Management: Handle patient blood requirements with comprehensive tracking
- Hospital Inventory Management: Independent blood stock management with batch tracking
- Inventory Dashboard: Real-time inventory overview with blood type breakdown
- Stock Level Management: Minimum stock level configuration with automated alerts
- Expiry Tracking: Blood unit expiration monitoring with 30-day warnings
- Inventory Logs: Complete audit trail of inventory changes and transactions
- Hospital Requests: Submit and manage hospital-to-blood bank requests
- Request Acceptance: Process incoming blood requests with status management
- Emergency Access: Priority blood request handling with instant notifications
- Advanced Inventory Management: Complete blood stock control with analytics
- Request Processing: Accept/reject blood requests with automated notifications
- Donor Coordination: Manage donor appointments and communication
- Emergency Notifications: Receive urgent request alerts with proximity-based matching
- Donation Drive Management: Create, manage, and track donation drives
- Donor Contact System: Direct communication with registered donors
- Analytics Dashboard: Comprehensive statistics and reporting tools
- Multi-location Management: Handle operations across different locations
// Advanced functionality
- Create new blood requests with automatic blood bank matching
- Track request status with real-time updates (pending/accepted/rejected/fulfilled)
- Update request information with audit trails
- Emergency request processing with priority handling
- Automated blood bank notifications with proximity search
- Hospital-specific request management
- Bulk request processing capabilities// Blood Bank Inventory Operations
- Real-time blood unit tracking with advanced analytics
- Blood type categorization with compatibility matrix
- Expiry date management with automated alerts
- Low stock alerts with configurable thresholds
- Comprehensive inventory transaction logging
- Multi-location inventory support
// Hospital Inventory Operations
- Independent hospital blood stock management
- Batch number tracking with expiration monitoring
- Minimum and maximum stock level configuration
- Complete audit trail with detailed change logs
- Stock level indicators with visual dashboards
- Automated reorder suggestions// Drive management features
- Create and schedule donation drives
- Registration system for donor participation
- Drive analytics and reporting
- Automated notifications and reminders
- Multi-location drive support
- Performance tracking and statistics// Enhanced communication system
- Direct donor contact requests from blood banks
- Secure messaging between parties
- Response tracking and management
- Critical donor availability settings
- Emergency contact protocols
- Communication history and audit trails// Comprehensive emergency features
- Guest access with minimal registration
- Location-based blood bank search with distance calculation
- Priority request processing with immediate notifications
- Emergency contact management with direct communication
- Real-time status tracking with updates
- Emergency call interface for urgent situations// Advanced chatbot capabilities
- Blood-related query assistance with context awareness
- Role-specific guidance and personalized responses
- Emergency procedure information with step-by-step guidance
- Donation process guidance with detailed instructions
- Real-time conversation handling with message processing
- Enhanced knowledge base with blood compatibility informationEnhanced Knowledge Base Topics:
- Blood donation eligibility with detailed criteria
- Blood types and compatibility with visual matrix
- Emergency procedures with immediate actions
- Donation process steps with preparation guidelines
- Health and safety guidelines with best practices
- Drive participation and scheduling assistance
- Contextual Responses: Role-aware assistance with personalized guidance
- Multi-turn Conversations: Advanced conversation context management
- Emergency Guidance: Immediate help for urgent situations with action items
- Educational Content: Comprehensive blood donation awareness and education
POST /api/auth/signin # User login with role validation
POST /api/auth/signout # User logout with session cleanup
GET /api/auth/session # Current session with role information
POST /api/auth/refresh # Session refresh and renewal
POST /api/users/register # Multi-step user registration
POST /api/users/complete-registration # Profile completion after role selection
GET /api/requests # List requests with advanced filtering
POST /api/requests # Create request with automatic matching
PUT /api/requests/:id # Update request status with notifications
DELETE /api/requests/:id # Cancel request with status tracking
GET /api/requests/track # Universal request tracking system
GET /api/hospital-requests # Hospital-specific request management
POST /api/hospital-requests # Create hospital requests
PUT /api/hospital-requests/:id # Update hospital request status
GET /api/hospital-requests/respond # Hospital request response system
GET /api/donation-drives # List available drives with filtering
POST /api/donation-drives/create # Create new donation drive
POST /api/donation-drives/register # Register for drive participation
GET /api/donation-drives/my-drives # User's registered drives
POST /api/donor-contact-request # Create donor contact request
GET /api/donor-contact-request # List contact requests
POST /api/donor-contact-request/respond # Respond to contact requests
GET /api/inventory # Blood bank inventory with analytics
POST /api/inventory # Update inventory with logging
GET /api/inventory/logs # Detailed inventory change history
GET /api/hospital-inventory # Hospital inventory with breakdown
POST /api/hospital-inventory # Add/update hospital inventory
GET /api/hospital-inventory/logs # Hospital inventory audit logs
- Role-based Menus: Dynamically generated navigation based on user roles
- Multi-level Navigation: Hierarchical menu structure for complex workflows
- Authentication State: Advanced login/logout with session management
- Responsive Design: Mobile-optimized with collapsible sections
- Theme Integration: Seamless dark/light mode transitions
- Multi-step Registration: Guided registration with role-specific forms
- Enhanced Validation: Client and server-side validation with real-time feedback
- Role Selection: Interactive role selection with detailed descriptions
- Error Handling: User-friendly error messages with actionable guidance
- Responsive Forms: Mobile-optimized with accessible form controls
- Advanced Chat UI: Modern chat interface with message threading
- Message Processing: Enhanced message handling with context awareness
- Chat History: Persistent conversation history with search functionality
- Typing Indicators: Real-time typing status and response indicators
- File Attachments: Support for sharing relevant documents and images
// Advanced access control
- Granular permission checking
- Role-based component rendering
- Automatic redirection for unauthorized access
- Emergency access exceptions
- Session validation with real-time updates// Specialized form handling
- Blood type selection with compatibility info
- Date/time pickers for scheduling
- Location selection with maps integration
- File upload with validation
- Multi-step form wizards// Comprehensive emergency handling
const { notifications, emergencyCheck, handleEmergency } = useEmergencyNotifications();
// Real-time emergency request validation
// Automated alert distribution
// Priority-based notification routing
// Emergency contact management// Advanced role-based functionality
const { userRole, permissions, checkAccess, hasPermission } = useUserRole();
// Granular permission checking
// Dynamic role updates
// Session-aware role management
// Multi-level authorization// Comprehensive request tracking
const { requests, updateStatus, trackProgress, getHistory } = useRequestStatus();
// Real-time status synchronization
// Request lifecycle management
// Automated status notifications
// Historical tracking and analytics// Advanced compatibility checking
- Complete blood type compatibility matrix
- Donor-recipient matching algorithms
- Emergency compatibility protocols
- Rare blood type handling// Enhanced chatbot integration
- Context-aware message processing
- Multi-turn conversation handling
- Intent recognition and response routing
- Personalized response generation-
Connect Repository
# Push to GitHub with latest changes git push origin main -
Configure Environment Variables
MONGODB_URI=your-production-mongodb-uri NEXTAUTH_SECRET=your-production-secret NEXTAUTH_URL=https://your-domain.vercel.app GROQ_API_KEY=your-groq-api-key
-
Deploy
- Connect GitHub repository to Vercel
- Add environment variables
- Configure build settings for optimal performance
- Deploy automatically on push with preview deployments
- Code Standards: Follow ESLint configuration with Prettier formatting
- Component Architecture: Modular components with custom hooks
- API Design: RESTful endpoints with comprehensive error handling
- Database Design: Optimized schemas with proper indexing
- Authentication: Multi-layered security with role-based access
- Testing: Unit and integration tests for critical components
- Documentation: Comprehensive inline documentation
- Performance: Optimized queries and component rendering
Built with β€οΈ for saving lives through technology
BloodBond - Connecting blood donors, hospitals, and blood banks for a healthier tomorrow
- β Donation Drive Management: Complete drive creation and participation system
- β Advanced Donor-Blood Bank Communication: Direct contact and request system
- β Enhanced Emergency System: Improved emergency call interface and handling
- β Hospital Request Management: Specialized hospital-to-blood bank request system
- β Blood Compatibility Matrix: Advanced blood type compatibility checking
- β Enhanced Chatbot: Improved AI assistance with message processing
- β Role Guard System: Comprehensive role-based access control
- β Multi-step Registration: Enhanced user onboarding experience
- β Advanced Analytics: Comprehensive statistics and reporting
- β Enhanced UI/UX: Improved interface with better navigation and theming