A revolutionary blockchain-based land registry system ensuring transparent, tamper-proof property ownership records.
Developed for SunHacks 2025 by Sandip University
- Overview
- Features
- System Architecture
- Technology Stack
- Team Contributors
- Prerequisites
- Installation & Setup
- Project Structure
- Smart Contracts
- API Documentation
- Frontend Features
- Development Workflow
- Testing
- Deployment
- Contributing
- License
LandLedger is a comprehensive blockchain-based land registry system that revolutionizes property ownership management through distributed ledger technology. The platform provides transparent, immutable, and secure land record management with real-time verification capabilities.
Traditional land registry systems suffer from:
- Manual processes leading to inefficiencies
- Data tampering and fraudulent activities
- Lack of transparency in ownership transfers
- Centralized control creating single points of failure
- Paper-based documentation prone to loss and damage
LandLedger addresses these challenges by:
- Blockchain immutability ensuring tamper-proof records
- Smart contracts automating transfer processes
- Decentralized storage eliminating single points of failure
- Real-time verification through cryptographic proofs
- Role-based access control for secure operations
- Property Registration: Register new land properties on blockchain
- Transfer Approval: Approve ownership transfer requests
- Document Verification: Verify property documents and certificates
- Administrative Dashboard: Monitor system-wide activities
- Portfolio Management: View and manage owned properties
- Ownership Transfer: Initiate property transfer to new owners
- Document Generation: Generate QR codes and digital certificates
- Transaction History: Complete audit trail of property activities
- Property Search: Search and explore land registry database
- Ownership Verification: Verify property ownership and authenticity
- Document Validation: Validate property documents against blockchain
- Public Access: Transparent access to public land records
- MetaMask Integration: Secure wallet-based authentication
- Smart Contract Automation: Automated property transfer workflows
- IPFS Storage: Decentralized document storage and retrieval
- Real-time Analytics: Live dashboard with system metrics
- Multi-role Access: Role-based permissions and interfaces
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Frontend β β Backend β β Blockchain β
β (Next.js) βββββΊβ (Node.js/API) βββββΊβ (Ethereum) β
β β β β β β
β β’ Web Interface β β β’ REST APIs β β β’ Smart β
β β’ MetaMask β β β’ Authenticationβ β Contracts β
β β’ Role-based UI β β β’ Business Logicβ β β’ Land Registry β
β β’ Real-time β β β’ Data Layer β β β’ Document β
β Updates β β β’ File Handling β β Verification β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β β β
β βββββββββββββββββββ β
β β Database β β
ββββββββββββββββ€ (MongoDB) βββββββββββββββ
β β
β β’ User Data β
β β’ Metadata β
β β’ Cache Layer β
βββββββββββββββββββ
β
βββββββββββββββββββ
β IPFS Storage β
β (Decentralized) β
β β
β β’ Documents β
β β’ Images β
β β’ Certificates β
βββββββββββββββββββ
- Framework: Next.js 15.x with TypeScript
- Styling: Tailwind CSS + shadcn/ui components
- Web3: ethers.js v6 for blockchain interaction
- State Management: React Context + Custom Hooks
- Animations: Framer Motion
- Build Tool: Webpack 5 with SWC
- Runtime: Node.js 18.x with Express.js
- Database: MongoDB with Mongoose ODM
- Authentication: JWT with Role-Based Access Control
- File Upload: Multer + IPFS integration
- API Documentation: Swagger/OpenAPI
- Validation: Joi schema validation
- Smart Contracts: Solidity 0.8.20+
- Development: Hardhat framework
- Network: Ethereum (Local/Testnet/Mainnet)
- Standards: ERC-721 for property NFTs
- Testing: Mocha + Chai test suite
- Deployment: Hardhat Ignition
- Decentralized Storage: IPFS with Pinata Gateway
- Cloud Database: MongoDB Atlas
- Version Control: Git with conventional commits
- CI/CD: GitHub Actions
- Containerization: Docker with multi-stage builds
|
π Deployment & DevOps Sejal Sonar Cloud Infrastructure, CI/CD, Production Deployment Docker | AWS | Kubernetes | GitHub Actions
|
π Deployment & DevOps Chinmay Chavan Network Configuration, Security, Monitoring Nginx | SSL/TLS | Monitoring | Load Balancing
|
|
βοΈ Backend Development Yashodip More API Development, Database Design, Smart Contract Integration Node.js | MongoDB | Web3 | REST APIs
|
π¨ Frontend Development Komal Kumavat UI/UX Implementation, Blockchain Integration, Component Development Next.js | TypeScript | Web3 | Responsive Design
|
Sandip University - SunHacks 2025
Computer Science & Engineering Department
- Node.js: v18.x or higher
- npm: v8.x or higher
- Git: Latest version
- MetaMask: Browser extension
- MongoDB: v6.x (local or cloud)
- Code Editor: VS Code (recommended)
- Browser: Chrome/Firefox with MetaMask
- Terminal: PowerShell/Bash/Zsh
- Postman: For API testing (optional)
git clone https://github.com/yashodipmore/LandLedger.git
cd LandLedgercd frontend
npm installCreate .env.local:
NEXT_PUBLIC_API_URL=http://localhost:3001/api
NEXT_PUBLIC_IPFS_GATEWAY=https://gateway.pinata.cloud/ipfs/
NEXT_PUBLIC_CONTRACT_ADDRESS=YOUR_CONTRACT_ADDRESScd backend
npm installCreate .env:
PORT=3001
MONGODB_URI=mongodb://localhost:27017/landledger
JWT_SECRET=your-super-secret-jwt-key
IPFS_PROJECT_ID=your-ipfs-project-id
IPFS_PROJECT_SECRET=your-ipfs-secret
ETHEREUM_RPC_URL=http://127.0.0.1:8545
PRIVATE_KEY=your-deployment-private-keycd blockchain
npm installCreate .env:
ETHEREUM_RPC_URL=http://127.0.0.1:8545
PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
ETHERSCAN_API_KEY=your-etherscan-api-keycd blockchain
# Compile contracts
npx hardhat compile
# Start local blockchain
npx hardhat node
# Deploy contracts (new terminal)
npx hardhat run scripts/deploy.js --network localhost# Start MongoDB (if local)
mongod
# Import initial data (optional)
cd backend
npm run seedcd blockchain
npx hardhat nodecd backend
npm run devcd frontend
npm run dev- Install MetaMask browser extension
- Add Local Network:
- Network Name:
Hardhat Local - RPC URL:
http://127.0.0.1:8545 - Chain ID:
31337 - Currency:
ETH
- Network Name:
- Import Test Account (optional):
- Private Key:
0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
- Private Key:
- Frontend: http://localhost:3000
- Backend API: http://localhost:3001
- API Docs: http://localhost:3001/api-docs
LandLedger/
βββ frontend/ # Next.js Frontend Application
β βββ app/ # App Router pages
β βββ components/ # Reusable UI components
β βββ context/ # React Context providers
β βββ hooks/ # Custom React hooks
β βββ services/ # API and Web3 services
β βββ utils/ # Utility functions
β βββ styles/ # Global styles
β
βββ backend/ # Node.js Backend API
β βββ src/
β β βββ controllers/ # Route controllers
β β βββ models/ # Database models
β β βββ routes/ # Express routes
β β βββ middleware/ # Custom middleware
β β βββ services/ # Business logic
β β βββ utils/ # Backend utilities
β βββ tests/ # Backend tests
β βββ docs/ # API documentation
β
βββ blockchain/ # Smart Contracts & Scripts
β βββ contracts/ # Solidity smart contracts
β βββ scripts/ # Deployment scripts
β βββ test/ # Contract tests
β βββ ignition/ # Hardhat Ignition modules
β βββ artifacts/ # Compiled contracts
β
βββ docs/ # Project documentation
β βββ API.md # API documentation
β βββ SETUP.md # Setup instructions
β βββ ARCHITECTURE.md # System architecture
β
βββ deployment/ # Production deployment
βββ docker/ # Docker configurations
βββ k8s/ # Kubernetes manifests
βββ scripts/ # Deployment scripts
Primary contract managing land ownership records.
contract LandRegistry {
struct Land {
uint256 id;
string landId;
address owner;
string ipfsHash;
string documentHash;
uint256 area;
bool isActive;
uint256 registeredAt;
}
function registerLand(
string memory _landId,
address _owner,
string memory _ipfsHash,
string memory _documentHash,
uint256 _area
) public onlyGovernment;
function transferOwnership(
uint256 _landId,
address _newOwner
) public;
}Handles document authentication and verification.
contract DocumentVerification {
function verifyDocument(
string memory _documentHash
) public view returns (bool);
function storeDocumentHash(
string memory _documentHash,
uint256 _landId
) public onlyAuthorized;
}- Access Control: Role-based permissions
- Event Emission: Comprehensive logging
- Gas Optimization: Efficient storage patterns
- Upgrade Safety: Proxy pattern implementation
POST /api/auth/login # User authentication
POST /api/auth/logout # User logout
GET /api/auth/profile # Get user profile
PUT /api/auth/profile # Update user profile
GET /api/lands # Get all lands
GET /api/lands/:id # Get specific land
POST /api/lands # Register new land
PUT /api/lands/:id # Update land details
DELETE /api/lands/:id # Delete land record
GET /api/transfers # Get transfer requests
POST /api/transfers # Create transfer request
PUT /api/transfers/:id # Update transfer status
GET /api/transfers/pending # Get pending transfers
POST /api/documents/upload # Upload documents
GET /api/documents/:hash # Get document by hash
POST /api/documents/verify # Verify document authenticity
GET /api/analytics/dashboard # Dashboard statistics
GET /api/analytics/activity # System activity feed
GET /api/reports/ownership # Ownership reports
- Atomic Design: Organized component hierarchy
- TypeScript: Full type safety
- Responsive Design: Mobile-first approach
- Accessibility: WCAG 2.1 compliance
- Performance: Optimized rendering
- Dashboard: Real-time analytics and metrics
- Property Management: CRUD operations for properties
- Transfer Workflow: Step-by-step transfer process
- Document Viewer: IPFS-based document display
- Notification System: Real-time updates
- Dark/Light Theme: System preference detection
- Loading States: Skeleton loaders and spinners
- Error Boundaries: Graceful error handling
- Form Validation: Real-time validation feedback
- Interactive Maps: Property location visualization
# Feature development
git checkout -b feature/land-registration
git add .
git commit -m "feat: implement land registration API"
git push origin feature/land-registration
# Create pull request for review- ESLint: Code linting and formatting
- Prettier: Consistent code formatting
- Husky: Pre-commit hooks
- Conventional Commits: Standardized commit messages
- main: Production-ready code
- develop: Integration branch
- feature/*: Feature development
- hotfix/*: Critical bug fixes
cd frontend
# Unit tests
npm run test
# Integration tests
npm run test:integration
# E2E tests
npm run test:e2e
# Coverage report
npm run test:coveragecd backend
# Unit tests
npm run test
# API tests
npm run test:api
# Integration tests
npm run test:integrationcd blockchain
# Contract tests
npx hardhat test
# Coverage analysis
npx hardhat coverage
# Gas analysis
npx hardhat test --gas-reporter- Unit Tests: 90%+ coverage target
- Integration Tests: Critical user flows
- E2E Tests: Complete user journeys
- Performance Tests: Load and stress testing
# Start all services
npm run dev:all
# Individual services
npm run dev:frontend
npm run dev:backend
npm run dev:blockchain# Build all services
docker-compose build
# Start production stack
docker-compose up -d
# View logs
docker-compose logs -f# Frontend to Vercel
cd frontend
vercel --prod
# Backend to AWS
cd backend
npm run deploy:aws
# Database migration
npm run migrate:prod- Development: Local with hot reload
- Staging: Cloud environment for testing
- Production: Optimized for performance and security
- Performance Metrics: Response times and throughput
- Error Tracking: Real-time error monitoring
- User Analytics: Usage patterns and behavior
- System Health: Uptime and availability
- Transaction Status: Success/failure rates
- Gas Usage: Optimization opportunities
- Contract Events: Real-time event tracking
- Network Health: Node synchronization status
- Content Security Policy: XSS prevention
- HTTPS Enforcement: Secure data transmission
- Input Validation: Client-side sanitization
- Authentication: Secure token management
- JWT Authentication: Stateless authentication
- Rate Limiting: API abuse prevention
- CORS Configuration: Cross-origin security
- Data Encryption: Sensitive data protection
- Access Control: Role-based permissions
- Input Validation: Parameter sanitization
- Reentrancy Guards: Attack prevention
- Gas Limits: DoS attack mitigation
- Fork the repository
- Clone your fork locally
- Create a feature branch
- Implement your changes
- Add tests for new functionality
- Submit a pull request
- Code Style: Follow established patterns
- Documentation: Update relevant docs
- Testing: Maintain test coverage
- Commit Messages: Use conventional commits
- Bug Reports: Use issue templates
- Feature Requests: Detailed requirements
- Security Issues: Use security contact
This project is licensed under the MIT License - see the LICENSE file for details.
- Technical Lead: Yashodip More - yashodip.more@example.com
- Frontend Lead: Komal Kumavat - komal.kumavat@example.com
- DevOps Lead: Sejal Sonar - sejal.sonar@example.com
- Infrastructure: Chinmay Chavan - chinmay.chavan@example.com
Sandip University
Computer Science & Engineering Department
SunHacks 2025 Project
- Documentation: GitHub Wiki
- Issues: GitHub Issues
- Discussions: GitHub Discussions