Finding accurate, granular information about villages in India isnβt as straightforward as it should be.
Whether youβre a developer building a logistics platform, a researcher analyzing demographic data, an organization coordinating rural outreach, or simply someone trying to locate a ancestral hometown, the workflow is often the same: navigating clunky legacy portals, bypassing captchas, downloading fragmented spreadsheets, or relying on outdated datasets.
I wanted to fix that.
So, I built India Village Finder an open-source project designed to turn raw, official government administrative registries into a fast, searchable, and interactive web application.
- π Live Demo: Explore the Map
- π¦ GitHub Repository: mchittineni/india-village-finder
π― Why I Built It
The Government of Indiaβs Local Government Directory (LGD) is the absolute authoritative registry of administrative areas. However, consuming its data feeds isn't particularly developer-friendly or visually intuitive.
I wanted to build a platform that:
- Transforms dense spreadsheets into clean, interactive map visualizations.
- Makes over 50,000+ rural locations instantly searchable by name or postal code.
- Operates entirely on a serverless, automated pipeline that keeps the data fresh.
- Maintains a fully reproducible, open-source codebase that can eventually scale to cover every state in India.
The goal wasnβt just to throw together a static web page it was to build a highly maintainable data engineering pipeline backed by automated testing, continuous integration, and transparent updates.
π Current Coverage & Scale
The current release provides full District -> Mandal/Taluk -> Village hierarchical coverage for four major southern states: Andhra Pradesh, Telangana, Karnataka, and Tamil Nadu.
| Metric | Regional Scale |
|---|---|
| Districts | 130 |
| Mandals / Taluks | 1,866 |
| Villages | ~50,000+ |
(Note: Sub-districts are dynamically mapped to their regional names Taluks in Karnataka/Tamil Nadu and Mandals in AP/Telangana).
β¨ Key Features
- πΊοΈ Interactive Maps: A fluid UI featuring shaded district-level choropleths. Click a district to zoom into its sub-districts, list its villages, or drop precise pins.
- β‘ Instant Search: Fuzzy, client-side matching across districts, mandals, villages, and PIN codes.
- π£οΈ Multilingual & Script-Aware UI: Full localized interface support for English, Telugu, Kannada, Tamil, Hindi, and Urdu (with native RTL layout parsing).
- π Authoritative Local Names: Village names automatically display in their native scripts, mapped from official LGD spelling and fallback offline neural transliteration models (AI4Bharat IndicXlit).
- π Hyper-Local Points of Interest: On-demand lookup of nearby civic infrastructure (hospitals, police stations, government offices, post offices) powered by live OpenStreetMap Overpass queries.
- π¦ Flat-File Downloads: Every automated build generates clean, versioned
.csvand.jsondata dumps available directly in the GitHub Releases tab.
π οΈ The Tech Stack
To keep hosting costs at exactly $0, the entire project is built with a serverless, static architecture:
-
Backend & Data Pipeline: Python 3.10+ (Data processing,
pytestvalidation suites). - Frontend Mapping & UI: Vanilla JavaScript, Leaflet.js, Fuse.js (Fuzzy search engine), and custom CSS grid structures.
- Geospatial Formats: GeoJSON and localized coordinate mappings (GeoNames + OSM integrations).
- Automation Infrastructure: GitHub Actions (Pipelines & CI/CD) and GitHub Pages for web hosting.
βοΈ Architecture & Automated Pipeline
Instead of manually modifying static files, the repository implements a decoupled, state-code-driven architecture. A shared Python pipeline handles the heavy lifting, generating independent, production-ready web apps for each state from a single web_template/ directory.
.
βββ scraper/ # Shared data engineering pipeline
β βββ pipeline.py # LGD Data acquisition & normalization
β βββ build_boundaries.py # Simplifies administrative map polygons
β βββ tests/ # Data integrity and join validation (pytest)
βββ andhra_pradesh/ # Self-contained web app & localized datasets
βββ telangana/ # Identical decoupled structure
βββ karnataka/
βββ tamil_nadu/
The Automated Data Review Flow
Data integrity is protected by a strict CI/CD loop. Data is never pushed directly to the main branch:
-
Scheduled Fetch: GitHub Actions trigger a daily query to the official
data.gov.inLGD API. -
Validation Check: The script runs
pytestto ensure internal consistency (valid codes, precise JSON-to-CSV symmetry, non-empty shapes). - Automated PRs: If changes are detected upstream, the runner automatically spins up a Pull Request featuring an auto-generated changelog detailing exactly which villages were added, removed, or reclassified.
-
Green-to-Deploy: Once tests pass and code owners review the structural diff, merging to
maininstantly triggers a GitHub Pages deployment.
π₯ What Makes This Different?
Most open government data projects end at a static cloud drive link full of stale CSVs. This project bridges the gap between data accessibility and user experience:
π‘ It is an end-to-end data product. It wraps raw government registries in a beautiful, responsive interface with robust localization, provides reproducible pipelines for developers, and commits to version-controlled, auditable dataset histories via semantic releases.
πΊοΈ The Roadmap
We are just getting started. Future milestones include:
- [ ] Expanding coverage to all remaining Indian states and union territories.
- [ ] Implementing a public, read-only REST API for rapid village and PIN code lookups.
- [ ] Enhancing coordinate coverage for deeper rural village centers.
- [ ] Deep accessibility (a11y) pass for screen-reader and high-contrast compliance.
π€ Looking for Contributors!
This project is completely open source (Dual-licensed: MIT for code, GODL-India for data). Whether you're a GIS developer, an open-data advocate, or someone who notices a missing village in your local district, contributions are incredibly welcome!
Here is how you can jump in:
- Submit bug reports or feature ideas.
- Help test localized translation engines or regional scripts.
- Contribute boundary optimization tweaks to improve rendering performance.
- Flag data or coordinate corrections by opening an issue.
π Get Involved: Open an Issue or Pull Request
If this project helps you, saves you development time, or makes open data a bit easier to interact with, please head over to the repository and drop a Star (β). It helps others discover the project and keeps the momentum going!
Happy coding!
Top comments (0)