A modern, real-time blood donation platform connecting donors with hospitals in need. Built with Next.js 14, TypeScript, and Parse Server.
- ✅ Quick registration with blood type and location
- ✅ Real-time notifications for matching blood requests
- ✅ One-click accept/decline for donation requests
- ✅ View donation history and statistics
- ✅ Update availability status
- ✅ Privacy-focused profile management
- ✅ Secure hospital registration with verification process
- ✅ Create urgent blood requests with details
- ✅ View matching donors in proximity
- ✅ Track request status (Active/Fulfilled/Cancelled)
- ✅ Manage multiple blood requests simultaneously
- ✅ View accepted donors and contact information
- ✅ Approve/reject hospital registrations
- ✅ View platform statistics and analytics
- ✅ Monitor all blood requests and responses
- ✅ Manage user accounts and permissions
- ✅ Access comprehensive dashboard
Frontend:
- Next.js 14 (App Router)
- TypeScript
- Tailwind CSS
- shadcn/ui components
- Zustand (state management)
- React Hook Form + Zod (form validation)
- Leaflet (maps - future integration)
Backend:
- Parse Server (Back4App)
- Cloud Code for business logic
- MongoDB database
- RESTful API
Deployment:
- Vercel (frontend hosting)
- Back4App (backend & database)
- Node.js 18+
- npm or yarn
- Back4App account (free tier available)
- Git
-
Clone the repository
git clone https://github.com/adityashirsatrao007/LifeLink.git cd LifeLink -
Install dependencies
npm install
-
Set up environment variables
- Copy
.env.exampleto.env.local
cp .env.example .env.local
- Update with your Back4App credentials:
NEXT_PUBLIC_PARSE_APP_ID=your_app_id NEXT_PUBLIC_PARSE_JS_KEY=your_js_key NEXT_PUBLIC_PARSE_SERVER_URL=https://parseapi.back4app.com
- Copy
-
Deploy Cloud Code to Back4App
cd cloud # Upload main.js to Back4App via Dashboard or CLI
-
Run development server
npm run dev
-
Seed database (optional)
node scripts/seed-data.js
Open http://localhost:3000 to see the application.
See DEPLOYMENT.md for detailed Vercel deployment instructions.
Quick Deploy:
- Push code to GitHub
- Connect repository to Vercel
- Add environment variables
- Deploy!
LifeLink/
├── app/ # Next.js app directory
│ ├── admin/ # Admin dashboard
│ ├── donor/ # Donor dashboard
│ ├── hospital/ # Hospital dashboard
│ ├── login/ # Login page
│ └── register/ # Registration pages
├── components/ # Reusable UI components
│ └── ui/ # shadcn/ui components
├── lib/ # Utility functions
│ └── parse.ts # Parse SDK initialization
├── stores/ # Zustand state stores
│ ├── authStore.ts # Authentication state
│ ├── requestStore.ts # Blood requests state
│ └── notificationStore.ts
├── types/ # TypeScript type definitions
├── cloud/ # Parse Cloud Code
│ └── main.js # Cloud functions
├── scripts/ # Database scripts
│ ├── seed-data.js # Seed dummy data
│ └── run-backfill.js # Data backfill utility
└── public/ # Static assets
Admin:
- Username:
admin - Password:
admin123
Hospital (Approved):
- Username:
apollo_mumbai - Password:
hospital123
Donor:
- Username:
rahul_sharma - Password:
password123
Classes:
_User- Base user authenticationDonorProfile- Donor information and preferencesHospitalProfile- Hospital details and verificationBloodRequest- Blood requests from hospitalsDonorResponse- Donor responses to requestsNotification- User notificationsDonationHistory- Past donation records
- Role-based access control (RBAC)
- Parse ACLs for data protection
- Hospital verification workflow
- Secure password hashing
- Environment-based configuration
- No sensitive data in client code
Manual Testing:
- Run
npm run dev - Test donor registration and login
- Test hospital registration (requires admin approval)
- Admin approves hospital
- Hospital creates blood request
- Donor accepts/declines request
See ADMIN_TESTING.md for detailed test scenarios.
- Real-time push notifications (Firebase)
- SMS notifications (Twilio)
- Email notifications (SendGrid/Resend)
- Interactive map view with Leaflet
- Advanced analytics dashboard
- Blood bank inventory management
- Mobile app (React Native)
- Multi-language support
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License.
Aditya Shirsat Rao
- GitHub: @adityashirsatrao007
For issues or questions:
- Check existing documentation
- Open an issue on GitHub
- Contact via email: [email protected]
Made with ❤️ to save lives