NestJS middleware service for integrating with Blue Dart's Push API, handling shipment status updates and delivery notifications.
- Node.js 18 or higher
- Docker and Docker Compose (for containerized deployment)
- Git
- Clone the repository and install dependencies:
npm install- Create environment file:
cp .env.example .envConfigure the following variables in .env:
UAT_AUTH_USERNAME=bluedart_uat
UAT_AUTH_PASSWORD=uat_password
PROD_AUTH_USERNAME=bluedart_prod
PROD_AUTH_PASSWORD=prod_password
API_KEY=your_api_key
ENVIRONMENT=uat
- Start development server:
npm run start:devThe API will be available at http://localhost:3000
Swagger documentation is available at /api endpoint when the server is running.
POST /api/bluedart/status-tracking: Handle shipment status updates- Requires Basic Authentication
- Accepts JSON payload with shipment tracking details
Run the test suite:
npm testWatch mode for development:
npm run test:watch- Build and run using Docker Compose:
docker-compose up --build- Or build and run manually:
npm run docker:build
npm run docker:run- Docker registry access
- Cloud platform CLI tools configured
- Build and tag the Docker image:
docker build -t your-registry/bluedart-middleware:latest .- Push to container registry:
docker push your-registry/bluedart-middleware:latest- Initialize Elastic Beanstalk application:
eb init bluedart-middleware --platform docker- Create environment and deploy:
eb create production- Build and push to Google Container Registry:
gcloud builds submit --tag gcr.io/your-project/bluedart-middleware- Deploy to Cloud Run:
gcloud run deploy bluedart-middleware \
--image gcr.io/your-project/bluedart-middleware \
--platform managed- Create Azure Container Registry:
az acr create --name bluedartmiddleware --resource-group mygroup --sku Basic- Build and push:
az acr build --registry bluedartmiddleware --image bluedart-middleware:latest .- Deploy to Container Apps:
az containerapp create \
--name bluedart-middleware \
--resource-group mygroup \
--image bluedartmiddleware.azurecr.io/bluedart-middleware:latest| Variable | Description | Required |
|---|---|---|
| UAT_AUTH_USERNAME | Username for UAT environment | Yes |
| UAT_AUTH_PASSWORD | Password for UAT environment | Yes |
| PROD_AUTH_USERNAME | Username for production environment | Yes |
| PROD_AUTH_PASSWORD | Password for production environment | Yes |
| API_KEY | API key for external services | Yes |
| ENVIRONMENT | Current environment (uat/prod) | Yes |
- Always use HTTPS in production
- Rotate credentials regularly
- Monitor API access logs
- Set up rate limiting in production
- Configure proper CORS settings
curl -X POST http://localhost:3000/api/bluedart/status-tracking \
-H "Authorization: Basic $(echo -n 'bluedart_uat:uat_password' | base64)" \
-H "Content-Type: application/json" \
-d '{
"statustracking": [
{
"Shipment": {
"WaybillNo": "69679343790",
"Origin": "NEW DELHI",
"Destination": "MUMBAI",
"Scans": {
"ScanDetail": [
{
"Scan": "SHIPMENT DELIVERED",
"ScanCode": "000",
"ScanDate": "28-05-2019",
"ScanTime": "1425",
"ScannedLocation": "GOREGAON",
"ScanType": "DL"
}
]
}
}
}
]
}'
The above curl command sends a minimal payload to test the status tracking endpoint. For full payload examples, refer to the Blue Dart API documentation.