Skip to main content

GISPulse Portal

Open-source web UI for the GISPulse geospatial engine.

License: AGPL v3

What's here

React + Vite + TailwindCSS portal — the public, AGPL-licensed companion to the gispulse Python engine. Provides:

  • Map workspace — MapLibre + DeckGL, layer tree, basemap switcher, style editor
  • Workflows workspace — visual node editor (React Flow) for building rule pipelines
  • Datasets / Catalog / Schema workspaces — browse, query, upload, inspect
  • Marketplace — browse capability plugins (read-only)
  • Local login — single-user authentication via API key

What's NOT here (lives in private gispulse-portal-pro)

  • Admin / RBAC pages (Users, ApiKeys, Audit, Schedules, Settings, Usage, Queue)
  • SSO OIDC callback page
  • Billing pages (Pricing, Subscription)
  • AdminGuard component, AdminLayout, admin API client + store

These are extended at app composition time when gispulse-portal-pro is installed alongside this package.

Install paths

This repo dual-publishes. Pick the install path that fits your workflow:

Install What you get Typical user
pip install gispulse CLI + runtime ESB + API only (no UI) servers, CI/CD, headless, power users
pip install gispulse-portal Same as above plus the bundled SPA, served same-origin users who want the local workbench
Hosted SPA on GH Pages Marketing site + Try-it demo against demo.gispulse.dev backend drive-by visitors

The PyPI wheel ships the pre-built SPA inside the Python package and exposes it via:

from gispulse_portal import PORTAL_DIST_PATH
# -> Path to the bundled SPA, ready to mount with FastAPI StaticFiles

The gispulse portal CLI command (in the gispulse package) detects gispulse_portal and mounts it at /portal automatically. If the package is not installed, it prints a helpful install hint instead of failing.

Frontend dev

pnpm install
pnpm dev      # → http://localhost:5173
pnpm build    # → ./dist
pnpm test

By default the portal expects the engine at http://localhost:8000. Override with VITE_API_BASE_URL env var.

# Run the engine separately
pip install gispulse[postgis,api,raster,network]
uvicorn gispulse.adapters.http.app:create_app --factory --port 8000

Build & publish (maintainers)

This repo dual-publishes on every v*.*.* tag:

  1. GH Pages SPA — deploy.yml runs on every main push, builds via pnpm build, and force-pushes the result to the deploy branch (served by GitHub Pages).
  2. PyPI wheel — release.yml runs on tag push:
    • pnpm install && pnpm build (produces ./dist)
    • copies ./dist → gispulse_portal/dist/ (so it gets included as package_data)
    • python -m build --outdir python-dist (produces wheel + sdist)
    • smoke-tests the wheel in a clean venv
    • publishes to PyPI via trusted publisher (OIDC) — no token in repo

Local wheel build

pnpm install
pnpm build
rm -rf gispulse_portal/dist
cp -r dist gispulse_portal/dist
python -m build --outdir python-dist
ls -la python-dist/
# gispulse_portal-1.5.1-py3-none-any.whl
# gispulse_portal-1.5.1.tar.gz

Local install smoke test

python -m venv /tmp/smoke && /tmp/smoke/bin/pip install --upgrade pip
/tmp/smoke/bin/pip install python-dist/gispulse_portal-*.whl
/tmp/smoke/bin/python -c "
from gispulse_portal import PORTAL_DIST_PATH
print(PORTAL_DIST_PATH)
assert PORTAL_DIST_PATH.is_dir()
assert (PORTAL_DIST_PATH / 'index.html').is_file()
print('ok')
"

Version policy

The git tag is the single source of truth. The release workflow asserts that the tag, pyproject.toml, and gispulse_portal/__init__.py __version__ all match before publishing — a mismatch fails the build.

License

AGPL-3.0-or-later. Network use = source disclosure obligation. See LICENSE.

For self-hosted or SaaS deployment with proprietary modifications, contact ImagoData about the commercial dual-license at contact@imagodata.com.

Metadata

Release files for gispulse-portal 2.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gispulse-portal 2.0.0
File Size Uploaded
gispulse_portal-2.0.0.tar.gz 918.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gispulse-portal 2.0.0
File Interpreter ABI Platform
gispulse_portal-2.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.9 MB

Release files / gispulse_portal-2.0.0.tar.gz

Download URL gispulse_portal-2.0.0.tar.gz
Size 918.7 kB
Tags Source
SHA-256 checksum
How to use checksums
5399fc138ed06046be4b3f5e9e946e3d69c4451929440e13292e2216f917d073
BLAKE2b-256 checksum
How to use checksums
77e62c434cfd3566c42485d1f10b53c74a64097a2fde0686352efbe940807363
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 23, 2026.

Transparency log

Release files / gispulse_portal-2.0.0-py3-none-any.whl

Download URL gispulse_portal-2.0.0-py3-none-any.whl
Size 931.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0bb2ec4327fd0227ef6220339fc55d251c0c4b5051ec81b082f730c15254bc73
BLAKE2b-256 checksum
How to use checksums
bfb0a5d682787a29a085194d2f27bcbab795c4b3740e189045ea8001001fa860
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 23, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.0.0 This release

2 release files

1.5.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page