README.md

July 26, 2026 · View on GitHub

GOAT Frontend Alternative Logo

GOAT

Intelligent software for modern web mapping and integrated planning
Website

License Commits-per-month


✨ About GOAT

GOAT Screenshot


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

Backend & API Services

Geospatial & Analytics


🚀 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 (Docker)

Official support: We provide a maintained compose.yaml for running the full GOAT stack in a production‑like environment.

Important: While we provide Docker resources, self‑hosted deployments are community‑supported. We do not offer official support for managing your infrastructure.

The images for each GOAT service are published on GitHub Container Registry.

Requirements

Make sure the following are installed on your server or local machine:

  • Docker
  • Docker Compose (plugin syntax: docker compose)
  • At least 12 GB RAM recommended

Docker Compose Profiles

The compose.yaml uses profiles to control which services start:

ProfileDescription
(none)Infrastructure only: PostgreSQL, MinIO, Redis, RabbitMQ, Windmill server/worker
devInfrastructure + devcontainer with local code mounts for development
prodInfrastructure + all production services (core, geoapi, web, processes, workers)

The prod profile provisions:

  • PostgreSQL with PostGIS
  • MinIO (S3 compatible storage)
  • Redis & RabbitMQ
  • Windmill (workflow engine for analytics tools)
  • GOAT Core (FastAPI backend)
  • GOAT GeoAPI (FastAPI backend for geodata)
  • GOAT Processes (OGC API Processes)
  • GOAT Web (Next.js frontend)

1. Clone the repository

git clone https://github.com/plan4better/goat.git
cd goat

2. Create your configuration file

Copy .env.example to .env:

cp .env.example .env

Update environment variables as needed (see "Environment Variables" section below).

3. Start the GOAT stack

docker compose --profile prod up -d

This will automatically pull the latest images and start all services.

4. Access GOAT

ServiceURL
Web UIhttp://localhost:3000
Core APIhttp://localhost:8000/api
GeoAPIhttp://localhost:8100
Processes APIhttp://localhost:8300
Windmill UIhttp://localhost:8110
MinIO Consolehttp://localhost:9001

Updating GOAT

To update an existing installation:

docker compose --profile prod down
docker compose --profile prod pull
docker compose --profile prod up -d

Clean Restart (reset all data)

To completely reset the installation including all data:

docker compose --profile prod down
docker volume rm goat_goat-data
docker compose --profile prod up -d

Build Images Locally

If you are developing the GOAT codebase or making changes to apps/core, apps/geoapi, or apps/web, you may need to build images manually.

docker compose --profile prod up -d --build

Only use this if you're modifying the GOAT source code.

Required Environment Variables

VariableDescription
POSTGRES_USERUsername for PostgreSQL authentication
POSTGRES_PASSWORDPassword for PostgreSQL authentication
POSTGRES_SERVERHostname of the Postgres service (usually db)
POSTGRES_DBName of the PostgreSQL database
S3_PROVIDERStorage provider (e.g., minio)
S3_ACCESS_KEY_IDAccess key for S3 / MinIO
S3_SECRET_ACCESS_KEYSecret key for S3 / MinIO
S3_ENDPOINT_URLInternal S3 endpoint (http://minio:9000)
S3_BUCKET_NAMEName of the S3 bucket to create/use
S3_REGIONRegion (may remain empty for MinIO)
S3_PUBLIC_ENDPOINT_URLPublic URL for accessing S3 objects
AUTHAuth switch for all services and the web app (True/False). With False, the Keycloak variables are not needed and a default user/organization is seeded
NEXT_PUBLIC_API_URLPublic URL of the Core API
NEXT_PUBLIC_GEOAPI_URLPublic URL of the GeoAPI (tiles/features)
NEXT_PUBLIC_PROCESSES_URLPublic URL of the Processes API
NEXT_PUBLIC_DOCS_URLURL for documentation
NEXT_PUBLIC_MAPBOX_TOKENMapbox token for the map search control (geocoding)
KEYCLOAK_SERVER_URLBase URL of the Keycloak server (derives the issuer together with REALM_NAME)
REALM_NAMEKeycloak realm
KEYCLOAK_CLIENT_IDKeycloak client (web login, core admin, print worker)
KEYCLOAK_CLIENT_SECRETKeycloak client secret
WINDMILL_TOKENToken for the Windmill workflow engine (analytics tools)
NEXTAUTH_URLPublic URL of the Web UI (also drives NEXT_PUBLIC_APP_URL)
NEXTAUTH_SECRETSecret key for Auth.js sessions

See .env.example for the full list, including optional settings such as the AUTH=False default identity (DEFAULT_USER_*, DEFAULT_ORGANIZATION_NAME, DEFAULT_QUOTA_*), SMTP, and Stripe.

👩‍⚖️ 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.

This structure makes GOAT accessible for everyone, while providing extended functionalities through optional commercial services.

GPLv3Commercial
Self‑host the core platform
Use for commercial purposes
Teams & organizations
Clone privately
Fork publicly
Modify and redistribute❌ (commercial components excluded)
Keep derivative work private✅ (commercial components only)
Authentication integrations
Hosted SaaS version
Official support

✍️ 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.