Geo Extension
Enhancing the Address Experience in Frappe
- Author: sudopotito
- Repository: https://github.com/sudopotito/geo_extension
- GitHub stars: 5
- Forks: 4
- License: GPL-3.0
- Category: Localization
- Maintenance: Minimally Maintained
- Frappe versions: develop
Install Geo Extension
bench get-app https://github.com/sudopotito/geo_extension
Add the Frappe Gems badge to your README
Maintain Geo Extension? Paste this into your README:
[](https://frappegems.com/gems/apps/sudopotito/geo_extension)
About Geo Extension
---
## Overview
**Geo Extension** is a lightweight **Frappe app** that enhances the frappe Geo module by improving how users encode and manage address information.
It extends the **Address Doctype** to make primary address keys (like _State, City, and County_) filterable and interactive — turning tedious address input into a smooth, guided process.
With country-specific manifests and hierarchical data levels, users can select from real administrative divisions instead of typing free-form text, drastically reducing data entry errors.
---
## Motivation
Encoding addresses in ERPNext or any Frappe app can be repetitive and error-prone — especially for data-heavy workflows like customer registration, delivery setup, or supplier profiling.
**Geo Extension** simplifies this process by making address encoding filtered, intuitive, and contextual.
This project was also a personal challenge: to build something useful and shareable with the **Frappe Community**, demonstrating how modular extensions can improve user experience within the framework.
---
## Key Features
🔍 **Smart Address Fields**
- Auto-adapting fields (State/City/County) based on country
- Turns free-text fields into searchable dropdowns
- Uses real administrative divisions encoded and validated by the community
⚙️ **Zero-Friction Setup**
- Country configurations via simple JSON manifests
- Works with existing Frappe Address doctype
- Automatic fallback to standard fields if no country data
---
## Supported Countries
* 🇮🇳 India
* 🇵🇭 Philippines
Want to add your country? See the [Contribute](#contribute) section below.
---
## Production Setup
### Managed Hosting
You can try **[Frappe Cloud](https://frappecloud.com)** — a simple, open-source, and developer-friendly platform to host Frappe apps with peace of mind.
It handles **installation, setup, upgrades, monitoring, maintenance,** and **support** of your deployments. It’s a fully featured developer platform for managing multiple Frappe instances.
---
### Self-Hosting
Follow these steps to set up **Geo Extension** in production:
#### Step 1: Download the easy install script
```bash
wget https://frappe.io/easy-install.py
```
#### Step 2: Run the deployment command
```bash
python3 ./easy-install.py deploy \
--project=geo_extension_prod_setup \
--email=your_email.example.com \
--image=ghcr.io/sudopotito/geo_extension\
--version=stable \
--app=geo_extension \
--sitename subdomain.domain.tld
```
Replace the following parameters with your own:
- `your_email.example.com`: Your email address
- `subdomain.domain.tld`: Your target domain
The script will spin up a production-ready instance of Geo Extension with all configurations.
---
## Development Setup
### Using Docker
You’ll need **Docker**, **docker-compose**, and **git** installed.
Refer to [Docker’s documentation](https://docs.docker.com/) if needed.
#### Step 1: Prepare the folder and download setup files
```bash
mkdir geo_extension
cd geo_extension
# Download the docker-compose file
wget -O docker-compose.yml https://raw.githubusercontent.com/sudopotito/geo_extension/develop/docker/docker-compose.yml
# Download the setup script
wget -O init.sh https://raw.githubusercontent.com/sudopotito/geo_extension/develop/docker/init.sh
```
#### Step 2: Run and daemonize the container
```bash
docker compose up -d
```
#### Step 3: Access your site
Visit: [http://geo_extension.localhost:8000](http://geo_extension.localhost:8000)
Default credentials:
```
Username: Administrator
Password: admin
```
---
### Bare Metal
1. Install bench and set up a `frappe-bench` directory
→ [Installation Steps](https://frappeframework.com/docs/user/en/installation)
2. Start the server
```bash
bench start
```
3. Create a new site
```bash
bench new-site geo_extension.localhost
```
4. Map to localhost
```bash
bench --site geo_extension.localhost add-to-hosts
```
5. Download the app
```bash
bench get-app https://github.com/sudopotito/geo_extension
```
6. Install the app
```bash
bench --site geo_extension.localhost install-app geo_extension
```
7. Open the app in your browser
→ `http://geo_extension.localhost:8000`
---
## Contribute
We welcome contributions from the community!
Whether you’re adding support for a new country or fixing something small — your help makes Geo Extension better for everyone.
### Adding a New Country
If you want to contribute support for a new country, follow this guide:
👉 [How to Add a New Country](https://github.com/sudopotito/geo_extension/blob/develop/template/README.md)
Even if your country already exists, you can still contribute updates, corrections, or extended datasets via a Pull Request (PR).
### General Fixes or Improvements
For general bug fixes, optimizations, or documentation updates —
you can directly **open a PR**. All contributions are reviewed and appreciated!
Your contribution helps make address encoding smoother and more reliable across the Frappe ecosystem.
---
## License
This project is licensed under the **GNU General Public License v3.0 (GPL-3.0)**.
Related Localization apps for Frappe & ERPNext
- Wiki — Free and Open Source Wiki built on top of Frappe
- India Compliance — Simple, yet powerful compliance solutions for Indian businesses
- Nepal Compliance — Open source ERP for Nepal with HR, Payroll & Accounting compliance, based on ERPNext by Frappe Technologies.
- Erpnextswiss — ERPNext application for Switzerland-specific use cases
- Erpnext Germany — ERPNext customizations for German companies
- Ksa Compliance — KSA Compliance App for KSA E-invoice
- Kamra Pms — Free open-source hotel & short-term rental PMS (AGPL). Front desk, folios, POS, housekeeping, booking engine + governed MCP so Claude can run the property. Built on Frappe v16.
- Zatca Erpgulf — Implementation of Zatca Phase-2 E-Invoicing - for FrappeCLoud