A private, permissioned blockchain MVP for secure digital land titles using Hyperledger Fabric.
┌─────────────────────────────────────────────────────────────┐
│ Clerk Web Interface │
│ (React + TailwindCSS + shadcn/ui) │
└───────────────────────┬─────────────────────────────────────┘
│ HTTPS/JWT
┌───────────────────────▼─────────────────────────────────────┐
│ Backend API Server │
│ (Node.js + Express + Fabric SDK) │
└───────────────────────┬─────────────────────────────────────┘
│ gRPC
┌───────────────────────▼─────────────────────────────────────┐
│ Hyperledger Fabric Network │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Registry │ │ Surveyor │ │ Auditor │ │
│ │ Authority │ │ Node │ │ Node │ │
│ │ (Peer+CA) │ │ (Peer+CA) │ │ (Peer+CA) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ TitleContract Smart Contract │ │
│ │ - mintTitle() │ │
│ │ - updateStatus() │ │
│ │ - viewTitle() │ │
│ │ - transferTitle() │ │
│ └──────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
- Private Permissioned Network: Hyperledger Fabric 2.5
- Role-Based Access Control (RBAC):
- Registry Authority: Mint and manage titles
- Surveyor: Verify GPS coordinates
- Auditor: Read-only access
- Smart Contract: TitleContract with complete CRUD operations
- Immutable Ledger: Tamper-proof record storage
{
"propertyID": "UUID",
"gpsCoordinates": {
"lat": "12.9716",
"long": "77.5946"
},
"ownerID": "verifiedID",
"ownerName": "John Doe",
"area": "2500 sqft",
"status": "Active | Under_Transfer | Revoked",
"timestamp": "2025-11-01T11:25:53+05:30",
"signature": "hash",
"surveyorVerified": true,
"documents": []
}- Secure Authentication: JWT-based with role management
- Dashboard: Overview of all titles and recent activity
- Title Management: Create, view, update, and transfer titles
- GPS Verification: Interactive map with coordinate validation
- Search & Filter: Advanced querying capabilities
- Audit Trail: Complete transaction history
- Docker 20.10+
- Docker Compose 2.0+
- Node.js 18+
- npm or yarn
- Clone and Navigate
cd c:\Users\Dev Patel\Desktop\INTER_R2- Install Dependencies
# Backend
cd backend
npm install
# Frontend
cd ../frontend
npm install- Start Blockchain Network
cd ../blockchain
./network.sh up- Deploy Smart Contract
./network.sh deployCC- Start Backend API
cd ../backend
npm run dev- Start Frontend
cd ../frontend
npm run dev- Access Application
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
- API Docs: http://localhost:5000/api-docs
Registry Authority:
Username: admin@registry.vault
Password: admin123
Surveyor:
Username: surveyor@vault.com
Password: surveyor123
Auditor:
Username: auditor@vault.com
Password: auditor123
INTER_R2/
├── blockchain/ # Hyperledger Fabric network
│ ├── network.sh # Network management script
│ ├── docker-compose.yml # Container orchestration
│ ├── configtx.yaml # Channel configuration
│ ├── crypto-config.yaml # Certificate generation
│ ├── chaincode/ # Smart contracts
│ │ └── title-contract/ # TitleContract implementation
│ └── organizations/ # Network organizations
├── backend/ # Node.js API server
│ ├── src/
│ │ ├── controllers/ # Request handlers
│ │ ├── middleware/ # Auth, validation
│ │ ├── routes/ # API endpoints
│ │ ├── services/ # Blockchain interaction
│ │ └── utils/ # Helpers
│ ├── tests/ # Unit & integration tests
│ ├── package.json
│ └── .env.example
├── frontend/ # React web interface
│ ├── src/
│ │ ├── components/ # UI components
│ │ ├── pages/ # Route pages
│ │ ├── services/ # API clients
│ │ ├── hooks/ # Custom hooks
│ │ └── utils/ # Utilities
│ ├── public/
│ ├── package.json
│ └── tailwind.config.js
├── kubernetes/ # K8s deployment configs
│ ├── namespace.yaml
│ ├── blockchain-deployment.yaml
│ ├── backend-deployment.yaml
│ └── frontend-deployment.yaml
├── docs/ # Documentation
│ ├── ARCHITECTURE.md
│ ├── API.md
│ ├── SMART_CONTRACT.md
│ └── DEPLOYMENT.md
├── scripts/ # Utility scripts
│ ├── setup.sh
│ ├── demo-transaction.js
│ └── test-all.sh
└── README.md
npm run test:all# Backend
cd backend
npm test
# Smart Contract
cd ../blockchain/chaincode/title-contract
npm testcd backend
npm run test:integrationnode scripts/demo-transaction.js- TLS Encryption: All network communication encrypted
- JWT Authentication: Secure API access with token expiration
- Role-Based Access Control: Granular permissions
- Digital Signatures: All transactions cryptographically signed
- Immutable Audit Log: Complete transaction history
- Environment Variables: Sensitive data in .env files
- Certificate-Based Identity: Fabric CA for identity management
POST /api/auth/login
Content-Type: application/json
{
"email": "admin@registry.vault",
"password": "admin123"
}POST /api/titles
Authorization: Bearer <token>
Content-Type: application/json
{
"gpsCoordinates": {"lat": "12.9716", "long": "77.5946"},
"ownerID": "OWNER123",
"ownerName": "John Doe",
"area": "2500 sqft"
}GET /api/titles/:propertyID
Authorization: Bearer <token>PATCH /api/titles/:propertyID/status
Authorization: Bearer <token>
Content-Type: application/json
{
"status": "Under_Transfer"
}Full API documentation: docs/API.md
docker-compose up -dkubectl apply -f kubernetes/docker logs -f peer0.registry.vault.comdocker logs -f digital-vault-backenddocker-compose logs -fCreate .env files in backend and frontend directories:
backend/.env
PORT=5000
NODE_ENV=development
JWT_SECRET=your-secret-key-change-in-production
JWT_EXPIRE=24h
FABRIC_NETWORK_PATH=../blockchain/network
CHANNEL_NAME=landregistry
CHAINCODE_NAME=titlecontractfrontend/.env
VITE_API_URL=http://localhost:5000
VITE_MAP_API_KEY=your-map-api-keyThis is an MVP for Phase 1. Future phases will include:
- Public blockchain integration
- Mobile application
- Advanced analytics
- Multi-signature approvals
- Document storage (IPFS)
MIT License - See LICENSE file for details
cd blockchain
./network.sh down
docker system prune -a
./network.sh up./network.sh deployCC -ccn titlecontract -ccp ./chaincode/title-contract -ccl javascript# Change ports in docker-compose.yml and .env filesFor issues and questions, please refer to the documentation in the docs/ directory.
Built with ❤️ for secure land registry management