A secure, blockchain-based land registry management system built with Flask and Python. This application leverages blockchain technology to provide immutable, tamper-proof records of land ownership and property transactions with full transaction history tracking.
- Blockchain-Based Records: Cryptographically secure land ownership records using SHA-256 hashing
- Land Registration: Add new land records with owner details and property information
- Record Retrieval: Search and view specific land records by owner ID
- Complete Blockchain Ledger: View the entire blockchain with all records and their hashes
- Transaction History: Trace the complete history of a property by owner ID
- Analytics Dashboard: Monitor key metrics including total records, land area, and property value
- Input Validation: Comprehensive validation for all land record data
- Error Handling: Robust exception handling with user-friendly error messages
- Backend: Python 3.x, Flask (micro web framework)
- Cryptography: SHA-256 hashing for blockchain implementation
- Frontend: HTML5 with Jinja2 templating
- Data Storage: In-memory blockchain (expandable to persistent storage)
- Python 3.6+
- Flask 2.0+
-
Clone or download the project
cd "land-registry-system"
-
Install dependencies
pip install flask
-
Run the application
python app.py
-
Access the web interface
- Open your browser and navigate to
http://localhost:5000
- Open your browser and navigate to
- Navigate to the home page
- Fill in the land record form with:
- Owner Name
- Owner ID (unique identifier)
- Land Location
- Land Area (in square units)
- Land Value (in currency)
- Submit the form - the record will be added to the blockchain
- Individual Record: Use the search function with the owner ID to view a specific record
- Complete Blockchain: Visit the blockchain page to see all records with their cryptographic hashes
- Owner History: View all properties owned by a specific owner ID
- Access the dashboard to view:
- Total number of land records
- Total land area registered
- Total property value in the system
Land Registry System/
├── app.py # Main Flask application
├── README.md # Project documentation
├── LICENSE # License file
└── templates/ # HTML templates
├── base.html # Base template
├── index.html # Home page
├── blockchain.html # Blockchain viewer
├── dashboard.html # Analytics dashboard
├── record_detail.html # Individual record view
└── land_history.html # Owner history view
Each land record is stored as a "block" in the blockchain chain:
-
Record Creation: When a new land record is added, it's converted into a block with:
- Owner information
- Property details
- Timestamp of creation
- SHA-256 hash of the record
-
Chain Linking: Each new block stores the hash of the previous block, creating an immutable chain
- Any modification to previous records will break the chain
- This prevents tampering and fraud
-
Verification: The blockchain can be viewed in its entirety to verify record integrity
For production use, consider implementing:
- Persistent database storage (MySQL, PostgreSQL)
- User authentication and authorization
- Environment-based configuration for secret keys
- HTTPS/SSL encryption
- Backup and disaster recovery mechanisms
- Role-based access control
Owner Name: John Smith
Owner ID: ID123456
Land Location: 123 Oak Street, Downtown
Land Area: 5000.50 (square meters)
Land Value: 500000.00 (currency units)
Contributions are welcome! To contribute:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
PROPRIETARY & CONFIDENTIAL
This project and all its source code, documentation, and associated materials are the exclusive property of the copyright holder.
No permission is granted to copy, modify, distribute, or use this software or any part thereof without explicit written permission from the copyright holder.
Unauthorized copying, reproduction, or use of this software is strictly prohibited and will result in legal action. For licensing inquiries or permission requests, please contact the copyright holder directly.
For issues, questions, or suggestions, please open an issue in the repository or contact the development team.
Last Updated: March 2026
Version: 1.0.0