goat
A tool capable of modeling walking and cycling accessibility.
https://github.com/plan4better/goat
Category: Consumption
Sub Category: Mobility and Transportation
Keywords
accessibility-analysis accessiblity-scenarios cycling isochrones mobility walking webgis
Keywords from Contributors
goat
Last synced: about 20 hours ago
JSON representation
Repository metadata
WebGIS with Planning Intelligence
- Host: GitHub
- URL: https://github.com/plan4better/goat
- Owner: plan4better
- License: gpl-3.0
- Created: 2018-09-30T11:09:17.000Z (about 8 years ago)
- Default Branch: main
- Last Pushed: 2026-11-01T09:27:32.000Z (about 23 hours ago)
- Last Synced: 2026-11-01T12:02:54.466Z (about 20 hours ago)
- Topics: accessibility-analysis, accessiblity-scenarios, cycling, isochrones, mobility, walking, webgis
- Language: Python
- Homepage: https://goat.plan4better.de
- Size: 1.53 GB
- Stars: 174
- Watchers: 4
- Forks: 71
- Open Issues: 9
- Releases: 127
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Agents: AGENTS.md
- Claude: CLAUDE.md
- Copilot: .github/copilot-instructions.md
README.md
β¨ About GOAT
GOAT is a free and open source WebGIS platform. It is an all-in-one solution for integrated planning, with powerful GIS tools, integrated data, and comprehensive accessibility analyses for efficient planning and fact-based decision-making.
Try it out in the cloud at goat.plan4better.de
For more information check out:
GOAT Docs
Follow GOAT on LinkedIn
Follow GOAT on Twitter
Built on Open Source
GOAT is a monorepo project leveraging a modern, full-stack architecture.
Frontend & Shared UI Components
-
π» Typescript
-
π Next.js
-
βοΈ React
-
πΊοΈ Maplibre GL JS
-
π¨ MUI
-
π React Flow
-
π Auth.js
-
π§ββοΈ Zod
Backend & API Services
-
π Python
-
β‘οΈ FastAPI
-
π¦ Pydantic
-
ποΈ SQLAlchemy
-
π PostgreSQL
-
π Keycloak
Geospatial & Analytics
-
π¦ DuckDB
-
πΆ DuckLake
-
βοΈ Windmill
-
π GDAL
-
ποΈ PMTiles
-
π°οΈ STAC
π Getting started
βοΈ Cloud Version
GOAT is also available as a fully hosted cloud service. If you prefer not to manage your own infrastructure, you can get started instantly with our trial version and choose from one of our available subscription tiers. Get started at goat.plan4better.de.
π₯οΈ Self-hosting
GOAT runs on your own infrastructure in two ways:
| Docker Compose | Kubernetes (Helm) | |
|---|---|---|
| For | A single Linux server | An existing Kubernetes cluster |
| Includes | Everything: web app and APIs, login (Keycloak), object storage, PostgreSQL/PostGIS, the Windmill job engine and HTTPS | GOAT's services, PostgreSQL, Redis and Windmill; you provide S3 storage and, for login, Keycloak |
| Guide | Installation | Kubernetes |
Docker Compose. Every GOAT release ships the bundle as
goat-compose-<version>.tar.gz on its
release page. With Docker
Engine 24+ and Docker Compose 2.23+ installed:
tar xzf goat-compose-<version>.tar.gz && cd goat-compose
./setup.sh # public URL, HTTPS mode, admin email -> .env with generated passwords
docker compose up -d
./smoke.sh # checks the installation end to end
Kubernetes. The Helm chart is published as
oci://ghcr.io/plan4better/charts/goat:
helm install goat oci://ghcr.io/plan4better/charts/goat \
--namespace goat --create-namespace --values your-values.yaml --wait --timeout 25m
The self-hosting guide compares the two and covers the
configuration, HTTPS, external services, backups and upgrades. The files
behind both live in deploy/: the Compose bundle in
deploy/compose, the chart in
deploy/helm/goat.
Help with self-hosting: questions and bug reports are welcome in
GitHub issues, answered as time
allows. Plan4Better also offers managed on-premise deployment, running GOAT
on your own servers for you: get in touch.
π©ββοΈ License
GOAT is a commercial openβsource project. The core platform is licensed under the
GNU General Public License v3.0 (GPLv3),
which allows anyone to use, modify, and distribute the software under the terms of the GPL.
The full platform β including user management, teams, and organizations β is part
of the open-source core. Optional commercial services (hosting, support, and
enterprise capabilities) are available for organizations that need them.
βοΈ Contributing
We welcome contributions of all kinds, bug reports, documentation improvements, new features, and feedback that helps strengthen the platform. Please see our contributing guide.
Local development
The compose.yaml in the repository root runs the infrastructure for local
development (PostgreSQL, Garage for S3, Redis, Windmill); the apps run on your
machine. Fill in the Garage secrets and key in .env first (the comments there
say how to generate them):
cp .env.example .env
docker compose up -d # infrastructure; --profile auth adds Keycloak
pnpm install && pnpm web # web app on http://localhost:3000
uv sync --all-packages # Python services, then for example:
cd apps/core && uv run uvicorn core.main:app --reload --port 8000
It is not a way to run GOAT in production; use the self-hosting options above.
Owner metadata
- Name: Plan4Better
- Login: plan4better
- Email: info@plan4better.de
- Kind: organization
- Description:
- Website: https://plan4better.de
- Location: Germany
- Twitter: plan4better
- Company:
- Icon url: https://avatars.githubusercontent.com/u/58163984?v=4
- Repositories: 41
- Last ynced at: 2026-10-25T08:42:45.482Z
- Profile URL: https://github.com/plan4better
GitHub Events
Total
- Create event: 19
- Delete event: 23
- Fork event: 1
- Issue comment event: 31
- Issues event: 65
- Pull request event: 90
- Pull request review comment event: 104
- Pull request review event: 35
- Push event: 248
- Release event: 17
- Watch event: 7
Last Year
- Create event: 13
- Delete event: 8
- Fork event: 1
- Issue comment event: 20
- Issues event: 18
- Pull request event: 81
- Pull request review comment event: 88
- Pull request review event: 28
- Push event: 229
- Release event: 15
- Watch event: 5
Committers metadata
Last synced: 2 days ago
Total Commits: 7,415
Total Committers: 38
Avg Commits per committer: 195.132
Development Distribution Score (DDS): 0.604
Commits in past year: 1,867
Committers in past year: 11
Avg Commits per committer in past year: 169.727
Development Distribution Score (DDS) in past year: 0.404
| Name | Commits | |
|---|---|---|
| Majk Shkurti | m****i@o****m | 2939 |
| Elias Pajares | e****s@t****e | 2178 |
| UJehle | u****e@t****e | 507 |
| Mohammad Etemaddar | m****r@g****m | 451 |
| Rafael | r****o@t****e | 217 |
| Nihar Thakkar | n****r@g****m | 211 |
| Ebubeker Rexha | 6****r | 129 |
| EPajares | e****s@p****e | 113 |
| Cyrine Kamoun | c****n@p****e | 106 |
| Gokul Gopan | g****n@p****e | 87 |
| Tarek Elsamni | t****i@g****m | 86 |
| EPajares | e****e | 73 |
| 96hoshi | m****o@p****e | 36 |
| Jehle | g****v@m****e | 33 |
| Camila Narbaitz Sarsur | c****r@g****m | 27 |
| dependabot[bot] | 4****] | 27 |
| Pajares | g****y@m****e | 24 |
| Camila Narbaitz | c****z@p****e | 23 |
| Moritz Schott | m****t@t****e | 22 |
| Noemi Nagy | n****y@p****e | 20 |
| SViertler | s****n@v****e | 12 |
| Ebubeker | e****a@g****m | 12 |
| Sina Farhadi | s****r@g****m | 11 |
| Pankaj | p****5@g****m | 10 |
| Fernando Ribeiro | f****d@g****m | 9 |
| Alexey Grachev | a****h@y****u | 9 |
| copilot-swe-agent[bot] | 1****t | 6 |
| Alex Grachev | a****h@p****h | 6 |
| Tarek N. Elsamni | t****i@g****m | 6 |
| gregoriiv | g****v@t****e | 5 |
| and 8 more... | ||
Committer domains:
- plan4better.de: 6
- tum.de: 4
- mytum.de: 2
- gu.se: 1
- deinemudda.org: 1
- gmail.comm: 1
- vmi233276.contaboserver.net: 1
- ge.com: 1
- protonmail.ch: 1
- yandex.ru: 1
- viertlers.de: 1
- t-online.de: 1
Issue and Pull Request metadata
Last synced: 1 day ago
Total issues: 58
Total pull requests: 266
Average time to close issues: 6 months
Average time to close pull requests: 15 days
Total issue authors: 7
Total pull request authors: 10
Average comments per issue: 0.09
Average comments per pull request: 0.53
Merged pull request: 212
Bot issues: 1
Bot pull requests: 23
Past year issues: 5
Past year pull requests: 250
Past year average time to close issues: about 1 month
Past year average time to close pull requests: 8 days
Past year issue authors: 3
Past year pull request authors: 9
Past year average comments per issue: 0.4
Past year average comments per pull request: 0.5
Past year merged pull request: 204
Past year bot issues: 1
Past year bot pull requests: 17
Top Issue Authors
- majkshkurti (27)
- EPajares (14)
- cnarbaitzsarsur (7)
- nihar1024 (7)
- gokulgpn (1)
- github-actions[bot] (1)
- CyrineKamoun (1)
Top Pull Request Authors
- majkshkurti (79)
- EPajares (61)
- CyrineKamoun (35)
- nihar1024 (35)
- dependabot[bot] (23)
- gokulgpn (13)
- cnarbaitzsarsur (10)
- NNoemi1 (4)
- 96hoshi (3)
- alierguney1 (3)
Top Issue Labels
- bug (15)
- web (6)
- core (5)
- enhancement (4)
- new-feature (4)
- docs (4)
- frontend (3)
- database (2)
- geoapi (1)
- research (1)
- epic (1)
- routing (1)
Top Pull Request Labels
- dependencies (23)
- javascript (15)
- python (6)
- python:uv (1)
- github_actions (1)
Dependencies
- actions/checkout v4 composite
- actions/upload-artifact v4 composite
- astral-sh/setup-uv v7 composite
- ataylorme/eslint-annotate-action v3 composite
- plan4better/.github/.github/actions/pnpm-install main composite
- plan4better/.github/.github/actions/pr-git-checkout main composite
- actions/checkout v4 composite
- actions/download-artifact v4 composite
- actions/upload-artifact v4 composite
- docker/build-push-action v5 composite
- docker/login-action v2 composite
- docker/metadata-action v5 composite
- docker/setup-buildx-action v3 composite
- docker/setup-qemu-action v3 composite
- peter-evans/create-or-update-comment v3 composite
- peter-evans/find-comment v2 composite
- @docusaurus/module-type-aliases 2.4.0 development
- @docusaurus/theme-classic 2.4.0 development
- @docusaurus/types 2.4.0 development
- @tsconfig/docusaurus ^1.0.7 development
- @types/node 20.4.6 development
- typescript ^4.9.5 development
- @docusaurus/core 2.4.0
- @docusaurus/plugin-client-redirects ^2.4.1
- @docusaurus/preset-classic 2.4.0
- @mdx-js/react ^1.6.22
- chart.js ^4.4.9
- clsx ^1.2.1
- maplibre-gl ^4.5.2
- prism-react-renderer ^1.3.5
- react ^17.0.2
- react-chartjs-2 ^5.3.0
- react-dom ^17.0.2
- react-iframe ^1.8.5
- react-mathjax ^1.0.1
- redocusaurus ^1.6.3
- actions/checkout v4 composite
- dorny/paths-filter v2 composite
- plan4better/.github/.github/actions/pr-git-checkout main composite
- nginx stable-alpine build
- node 20-alpine build
- debian bookworm-slim build
- linux-base latest build
- python 3.11.12-bookworm build
- aiofiles ==24.1.0
- aiohttp ==3.11.2
- alembic ==1.14.0
- alembic-utils >=0.8.5
- asyncpg ==0.30.0
- boto3 ==1.38.23
- cairosvg ==2.7.1
- celery ==5.4.0
- duckdb >=1.4.3
- fastapi [standard]==0.115.12
- fastapi-pagination ==0.13.1
- geoalchemy2 ==0.17.1
- geojson ==3.1.0
- geopandas ==1.0.1
- goatlib *
- h3 ==4.1.2
- httpx ==0.27.2
- matplotlib ==3.9.2
- numba ==0.61.2
- numpy ==2.2.6
- openpyxl ==3.1.5
- polars ==1.31.0
- psycopg ==3.2.3
- psycopg-binary ==3.2.3
- pyarrow >=20.0.0
- pycountry ==23.12.11
- pydantic ==2.11.5
- pydantic-settings ==2.9.1
- pygeofilter ==0.2.4
- pymgl ==0.5.0
- pytest >=8.3.5
- python-jose [cryptography]==3.4.0
- redis ==5.2.0
- requests ==2.32.3
- rich ==13.9.4
- scipy >=1.15.3
- sentry-sdk ==2.18.0
- shapely ==2.0.6
- sqlalchemy [asyncio]==2.0.41
- sqlmodel ==0.0.24
- types-requests >=2.32.4.20250611
- ./.github/actions/pnpm-cache-build * composite
- actions/checkout v4 composite
- plan4better/.github/.github/actions/pnpm-install main composite
- plan4better/.github/.github/actions/pr-git-checkout main composite
- actions/cache v4 composite
- actions/checkout v4 composite
- astral-sh/setup-uv v7 composite
- plan4better/.github/.github/actions/pnpm-install main composite
- plan4better/.github/.github/actions/pr-git-checkout main composite
- postgis/postgis 16-3.4 docker
- duckdb >=1.5.4
- fastapi >=0.115
- goatlib *
- goatobs *
- mcp >=1.2
- pydantic-settings >=2.4
- pygeofilter >=0.2.0
- uvicorn [standard]>=0.30
- debian bookworm-slim build
- linux-base latest build
- azure/setup-helm v5.0.0 composite
- actions/cache v6 composite
- actions/setup-node v7 composite
- ./.github/actions/helm-tools * composite
- actions/checkout v7 composite
- azure/setup-helm v5.0.0 composite
- docker/login-action v4 composite
- sigstore/cosign-installer v3 composite
- actions/checkout v7 composite
- lycheeverse/lychee-action e7477775783ea5526144ba13e8db5eec57747ce8 composite
- ./.github/actions/pnpm-install * composite
- actions/cache v6 composite
- actions/cache/restore v6 composite
- actions/cache/save v6 composite
- actions/checkout v7 composite
- actions/upload-artifact v7 composite
- astral-sh/setup-uv c18668ad3cf93ea998bef934396af7bb5c839dc7 composite
- debian bookworm-slim build
- linux-base latest build
- debian bookworm-slim build
- linux-base latest build
- debian bookworm-slim build
- ghcr.io/astral-sh/uv ${UV_VERSION} build
- ghcr.io/windmill-labs/windmill ${WINDMILL_IMAGE_TAG} build
- linux-base latest build
- worker-base latest build
- base latest build
- nginx stable-alpine build
- node 22-alpine build
- base latest build
- node 22-alpine build
- @p4b/tsconfig workspace:* development
- @storybook/addon-a11y ^7.4.0 development
- @storybook/addon-actions ^7.4.0 development
- @storybook/addon-designs 7.0.4 development
- @storybook/addon-docs ^7.4.0 development
- @storybook/addon-essentials ^7.4.0 development
- @storybook/addon-interactions ^7.4.0 development
- @storybook/addon-links ^7.4.0 development
- @storybook/blocks ^7.4.0 development
- @storybook/manager-api ^7.4.0 development
- @storybook/nextjs ^7.4.0 development
- @storybook/node-logger ^7.4.0 development
- @storybook/react ^7.4.0 development
- @storybook/testing-library ^0.1.0 development
- @storybook/theming ^7.4.0 development
- @types/node ^20.1.5 development
- @types/react ^18.3.27 development
- @types/react-dom ^18.3.7 development
- eslint-config-p4b workspace:* development
- eslint-plugin-storybook ^0.6.12 development
- file-system-cache 2.0.0 development
- storybook ^7.4.0 development
- storybook-dark-mode ^3.0.0 development
- @p4b/keycloak-theme workspace:*
- @p4b/types workspace:*
- @p4b/ui workspace:*
- next 14.2.35
- react ^18.3.1
- react-dom ^18.3.1
- asyncpg >=0.29.0
- cachetools *
- duckdb >=1.5.4
- fastapi [standard-no-fastapi-cloud-cli]>=0.115.0
- goatlib *
- goatobs *
- pmtiles >=3.5.0
- pydantic >=2.0.0
- pydantic-settings >=2.0.0
- pygeofilter >=0.2.0
- pyproj >=3.6.0
- python-jose [cryptography]>=3.3.0
- redis >=5.0.0
- requests >=2.25.0
- shapely >=2.0.0
- sqlglot >=26.0.0
- asyncpg >=0.29.0
- boto3 >=1.35.0
- cachetools *
- duckdb >=1.5.4
- fastapi [standard-no-fastapi-cloud-cli]>=0.115.0
- geopandas >=1.0.0
- goatlib *
- goatobs *
- httpx >=0.27.0
- numba >=0.60.0
- pandas >=2.0.0,<3.0.0
- pyarrow >=20.0.0
- pydantic >=2.0.0
- pydantic-settings >=2.0.0
- pygeofilter >=0.2.0
- pyproj >=3.6.0
- python-jose [cryptography]>=3.3.0
- pytz >=2024.1
- requests >=2.25.0
- shapely >=2.0.0
- sqlglot >=26.0.0
- wmill >=1.0.0
Score: 8.847072312567807