Skip to content

About

Self-hosted, open source GIS portal: web maps, PostGIS data layers, forms, an app builder with dashboards, an offline field PWA, OGC APIs, and a QGIS plugin. PostGIS + MapLibre + Keycloak on Docker Compose.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

31 stars

Watchers

1 watching

Forks

Latest commit

 

History

2,280 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

GratisGIS

CI License: AGPL v3 TypeScript PostgreSQL + PostGIS

A self-hosted GIS portal, field PWA, and QGIS plugin. Built for teams that want data on their own hardware and want out of ArcGIS Online seat licenses. What is credible today is the portal (items, groups, sharing), field collection, and QGIS. It is not a full ArcGIS Online replacement, and it is not a drop-in for Experience Builder, Survey123, Field Maps, or enterprise identity depth.

Status: v1.2.0. The public surface follows semantic versioning. For what ships today, see docs/walkthrough.md and the changelog. Store-listed native mobile apps are not part of 1.0; the field PWA is the supported field client.

Try it: gratisgis.org is a public demo (test credentials and a daily reset on the landing page). Same sample workspace as in-app "Load sample data." Bugs and chat: Issues · Discussions.

Contribute: Issues and PRs welcome. See CONTRIBUTING.md for branch naming, Conventional Commits, and how reviews work (the maintainer is the final reviewer).

Stack

Layer Project
Language TypeScript
API Node.js + NestJS
Database PostgreSQL + PostGIS
ORM Prisma
Auth Keycloak (OIDC)
Authorization Cedar
Object storage MinIO
Edge Caddy
Tiles pg_tileserv + PostGIS MVT
Web Next.js + React
Maps MapLibre GL + Terra Draw
Tile bundles PMTiles
Raster / vector I/O GDAL (gdal-async)
UI shadcn/ui, Tailwind, lucide
Monorepo pnpm + Turborepo
CI GitHub Actions

Repo layout

gratis-gis/
├── apps/
│   ├── portal-api/        NestJS backend
│   ├── portal-web/        Next.js portal (field PWA, app builder)
│   └── portal-mcp/        MCP server
├── packages/              engine, shared-types, form-schema, ui
├── tools/pointcloud-worker/
├── docs/
├── infra/                 Docker Compose, install, deploy
└── .github/workflows/

Deploy

Single-host Docker Compose. A 4-core / 8 GB VPS is enough for a small org (the public demo runs on that).

curl -fsSL https://raw.githubusercontent.com/palavido-dev/gratis-gis/main/infra/install.sh | bash

Or by hand:

git clone https://github.com/palavido-dev/gratis-gis /opt/gratis-gis
cd /opt/gratis-gis
./infra/setup.sh
./infra/deploy.sh
./infra/doctor.sh

Installs track the latest release tag (GG_REF to pin). See docs/deployment.md and docs/UPGRADING.md.

Home NAS (TrueNAS or Dockge), one paste, no domain name: docs/truenas.md.

Developer quick start

Prereqs: Node 24.9+, pnpm 9+, Docker, git.

git clone https://github.com/palavido-dev/gratis-gis.git
cd gratis-gis
pnpm install
cp .env.example apps/portal-api/.env
cp .env.example apps/portal-web/.env
pnpm infra:up
pnpm --filter @gratis-gis/portal-api db:migrate
pnpm --filter @gratis-gis/portal-api db:seed
pnpm dev
# portal-api  :4000  ·  portal-web  :3000  ·  keycloak  :8080

Docs

Start here:

Deeper references live under docs/ (architecture, data model, sharing, auth, design system, sample data, discoverability). Roadmap: ROADMAP.md. Architecture overview: ARCHITECTURE.md.

License

Copyright (C) 2026 Matt Palavido

GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later). See LICENSE.

You may use, modify, self-host, and redistribute, including commercially. Hosting it as a network service (or running modified versions on a network) requires offering corresponding source under the same license. Selling support, hosting, training, or custom work around it is fine; wrapping it in a closed-source product is not.

Trademarks

GratisGIS is independent and not affiliated with or endorsed by any commercial GIS vendor. Third-party names appear only for descriptive interoperability.

About

Self-hosted, open source GIS portal: web maps, PostGIS data layers, forms, an app builder with dashboards, an offline field PWA, OGC APIs, and a QGIS plugin. PostGIS + MapLibre + Keycloak on Docker Compose.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

31 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages