Geoflip Open is the open-source backend of Geoflip — a modern, self-hostable spatial API for transforming geospatial files like Shapefile, DXF, GeoJSON, and GeoPackage.
It supports transformations such as buffering, clipping, appending, and CRS conversion — all accessible via a simple HTTP API. Built with Flask, Celery, and designed for developers who want geoprocessing power without requiring enterprise tools.
📚 View the API documentation: docs.geoflip.io
📺 Check out the YouTube channel: video tutorials
- Upload and transform spatial files via API
- Supports GeoJSON, SHP, GPKG, and DXF formats
- Handles buffering, clipping, merging, appending, reprojection, and more
- Asynchronous processing powered by Celery + Redis
- Stateless — no auth, no billing
Spin up the full backend stack locally.
git clone https://github.com/yourusername/geoflip-open.git
cd geoflip-opencp .env.example .envdocker-compose up --build -dUse Postman, Insomnia, curl, or your frontend app
- The base url will be
http://localhost:8000/if you use the example env - Then just review the Docs: https://docs.geoflip.io
- You can also import the postman collection
- look for
GeoFlip Open.postman_collection.jsonin the root of the project
- look for
- example payload to:
http://localhost:8000/v1/transform/geojson
{
"input_geojson":{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {"id": 1, "group": "A"},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[-73.981, 40.768],
[-73.981, 40.769],
[-73.982, 40.769],
[-73.982, 40.768],
[-73.981, 40.768]
]
]
}
},
{
"type": "Feature",
"properties": {"id": 2, "group": "A"},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[-73.983, 40.768],
[-73.983, 40.769],
[-73.984, 40.769],
[-73.984, 40.768],
[-73.983, 40.768]
]
]
}
},
{
"type": "Feature",
"properties": {"id": 3, "group": "B"},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[-73.985, 40.768],
[-73.985, 40.769],
[-73.986, 40.769],
[-73.986, 40.768],
[-73.985, 40.768]
]
]
}
}
]
},
"output_format": "shp",
"output_crs": "EPSG:4326",
"transformations":[
{
"type":"buffer",
"distance": 100,
"units": "meters"
},
{
"type":"union"
}
]
}This is more involved but if you are editing the code this is what you want to do.
git clone https://github.com/intelligis-io/geoflip-open
cd geoflip-open
cp .env.example .env
# Modify it with the below - or something similar
# API_URL=http://localhost:5000
# UPLOADS_PATH=./uploads
# OUTPUT_PATH=./outputpython -m venv .venvand activate it in your environment (ie set it as your python environment)
pip install -r requirements.txtcelery -A make_celery.celery_app worker --pool=solo --loglevel=INFOflask runOr if you want to use Gunicorn:
gunicorn --workers 3 --bind 0.0.0.0:8000 'app:create_app()'Looking for authentication, usage tracking, billing, or enhanced enterprise features?
Head to geoflip.io to try the full hosted version.
or checkout our youtube for video tutorials
BSL — free to use, fork, and extend.