DEV Community

Cover image for πŸ—ΊοΈ Open-Source Interactive Village Finder for India
Manideep Chittineni
Manideep Chittineni

Posted on • Edited on

πŸ—ΊοΈ Open-Source Interactive Village Finder for India

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.


🎯 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 .csv and .json data 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, pytest validation 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/           

Enter fullscreen mode Exit fullscreen mode

The Automated Data Review Flow

Data integrity is protected by a strict CI/CD loop. Data is never pushed directly to the main branch:

  1. Scheduled Fetch: GitHub Actions trigger a daily query to the official data.gov.in LGD API.
  2. Validation Check: The script runs pytest to ensure internal consistency (valid codes, precise JSON-to-CSV symmetry, non-empty shapes).
  3. 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.
  4. Green-to-Deploy: Once tests pass and code owners review the structural diff, merging to main instantly 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)