Bloodline is a centralized blood bank management solution designed to simplify and modernize blood donation workflows. From donor registration and appointment booking to blood stock tracking and donation camp scheduling, Bloodline offers a seamless and secure experience for hospitals, donors, blood camp organizers and administrators.
π https://bloodlinesrilanka.com/
bloodline/
βββ frontend/ # React + TypeScript + Vite + Tailwind-based UI
βββ backend/ # Node.js + Express + MongoDB API server
- Language: TypeScript
- Framework: React 18, Vite
- Styling: Tailwind CSS, Flowbite, Styled Components
- Routing: React Router DOM
- Authentication: Asgardeo Auth
- Visualization: Chart.js, React-Chartjs-2
- Calendar & Forms: React Calendar, Formik, Yup
- Maps: Google Maps API (
@react-google-maps/api
) - Misc: Axios, React Tooltip, JSBarcode, React Datepicker
- Runtime: Node.js, Express
- Language: TypeScript
- Database: Azure Cosmos DB with MongoDB API
- Cloud: Azure Web Apps, Azure Blob Storage
- Authentication: JWT, JWKS-RSA
- Chatbot: Azure OpenAI, Azure AI Foundry
- Utilities: Multer, Nodemailer, UUID, CORS
- Testing: Jest, Supertest
- Node.js β₯ 18.x
- npm or yarn
- Azure Cosmos DB or MongoDB (local or hosted on MongoDB Atlas)
- Azure credentials (for CosmosDB & Blob Storage)
- Google Maps API Key
git clone https://github.com/OnaliyVinukiy/bloodline.git
cd bloodline
Create .env
files in both frontend/
and backend/
directories.
PORT=5000
COSMOS_DB_CONNECTION_STRING=your_mongodb_connection_string
ASGARDEO_TENANT=your_asgardeo_tenant
AZURE_COSMOS_DB_URI=your_cosmosdb_connection_string
AZURE_BLOB_CONNECTION_STRING=your_blob_storage_key
VITE_CLIENT_ADMIN_ID=your_asgardeo_admin_id
VITE_CLIENT_SECRET=your_asgardeo_client_secret
EMAIL_USER=your_email@example.com
EMAIL_PASS=your_email_password
AZURE_OPENAI_API_KEY=your_azure_openai_key
AZURE_OPENAI_API_VERSION=your_azure_openai_api_version
AZURE_OPENAI_DEPLOYMENT_NAME=your_openai_deployment_name
AZURE_OPENAI_ENDPOINT=https://your-openai-resource.openai.azure.com/
REACT_APP_API_URL=https://your-frontend-api-url.com/
VITE_GOOGLE_MAPS_API_KEY=your_api_key
VITE_BASE_URL=your_asgardeo_base_url
VITE_BACKEND_URL=your_backend_url
VITE_ASGARDEO_CLIENT_ID=your_asgardeo_client_id
VITE_ASGARDEO_ORGANIZATION=your_organization_url
PORT=5173
cd frontend
npm install
cd ../backend
npm install
npm run dev
cd ../frontend
npm run dev
Visit http://localhost:5173
to view the app.
npm run test
- β Donor & Organization Registration
- π Appointment Booking
- π©Έ Blood Stock Management
- π₯ Blood Camp Scheduling & Search
- π©Έ Blood Processing Management
- π©Έ Blood Testing Management
- π§Ύ Barcode Generation for Blood Units
- π Map-based Camp Locator
- π Secure JWT Authentication
- π§ Email Notifications
Command | Description |
---|---|
npm run dev |
Start Vite dev server |
npm run build |
Build for production |
npm run lint |
Lint the code |
npm run preview |
Preview production build |
Command | Description |
---|---|
npm run dev |
Start server with nodemon |
npm run build |
Transpile TypeScript to JavaScript |
npm run test |
Run tests with Jest |
npm run lint |
Lint backend code |
If you find this project useful, feel free to give it a β on GitHub or share it with others!