No description
  • HTML 67.8%
  • Nix 17.2%
  • Rust 15%
Find a file
Christian Lengert 2b775a3a40 init
2026-05-23 14:58:18 +02:00
crates init 2026-05-23 14:58:18 +02:00
modules Add README and NixOS deployment module 2026-05-23 13:57:58 +02:00
.gitignore Fix flake.nix and generate Cargo.lock 2026-05-23 11:55:54 +02:00
Cargo.lock Implement CORS proxy for dataset-service API endpoints 2026-05-23 14:51:03 +02:00
Cargo.toml Add dedicated HTTP server for frontend (gis-server) 2026-05-23 13:54:55 +02:00
flake.lock Get Tauri app building and add dev setup 2026-05-23 12:15:30 +02:00
flake.nix Fix flake.nix variable scoping for packages 2026-05-23 14:03:01 +02:00
README.md Change default port from 9091 to 9011 2026-05-23 14:25:37 +02:00
Rocket.toml Move Rocket.toml to workspace root 2026-05-23 14:33:22 +02:00
rust-toolchain.toml Get Tauri app building and add dev setup 2026-05-23 12:15:30 +02:00

GIS Application

A geographic information system web application built with Rust and Leaflet.

Development

Quick Start

# Enter Nix dev environment
nix develop

# Run the HTTP server (serves frontend + assets)
ROCKET_ADDRESS=0.0.0.0 ROCKET_PORT=9011 cargo run -p gis-server

Open http://localhost:9011 (or your machine's IP:9011) in your browser.

Configuration

The server listens on 0.0.0.0:9011 by default. Customize with environment variables:

ROCKET_ADDRESS=127.0.0.1 ROCKET_PORT=8080 cargo run -p gis-server

Available environment variables:

  • ROCKET_ADDRESS: Interface to bind to (default: 0.0.0.0)
  • ROCKET_PORT: Port to listen on (default: 9011)
  • GIS_FRONTEND_PATH: Path to frontend files (default: ../gis-ui)

Features

  • Map Viewer: Interactive map with Leaflet
  • Configurable Tiles: Change tile sources (OpenStreetMap, Martin, Sentinel, etc.)
  • OGC API Features: Load vector data from OGC API endpoints
  • Settings Panel: Configure data sources, map center, zoom level

Configuration

In the Settings panel (⚙️ button):

  • Tiles: Enter a tile URL template (e.g., https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png)
  • Data: Connect to OGC API Features endpoint
    • Default: http://192.168.178.113:8089 (points to feeder's dataset-service)
    • Enter your dataset-service URL
    • Load collections and features onto the map

Deployment

Host Deployment (NixOS Module)

Add this to your host flake.nix:

{
  inputs = {
    gis.url = "git+file:///path/to/gis";
  };

  outputs = { self, gis, ... }: {
    nixosConfigurations.myhost = nixos.lib.nixosSystem {
      modules = [
        gis.nixosModules.default
        {
          services.gis.server = {
            enable = true;
            port = 9011;
            address = "0.0.0.0";
            frontendPath = "${gis.packages.x86_64-linux.frontend}";
          };
        }
      ];
    };
  };
}

Manual Deployment

Build the binary:

cargo build --release -p gis-server

Copy target/release/gis-server to your server and run:

./gis-server

Server listens on 0.0.0.0:9011

Architecture

  • gis-server: Rocket HTTP server that serves static frontend
  • gis-ui: Tauri desktop app (optional, for native client)
  • Frontend: Pure HTML/CSS/JS (Leaflet-based map)

The frontend is served as static files from gis-server. No API backend needed for basic map viewing—just connect to external data sources (OGC APIs, tile servers, etc.).

Planned Features

  • WFS/WMS layer support
  • Feature drawing and editing
  • Advanced filtering and analysis
  • Integration with feeder geo datasets
  • Real-time satellite imagery updates

Integration with Feeder

The GIS app connects to the feeder project's dataset-service (OGC API Features endpoint) to display vector data. Configure the data source URL in settings to point to your dataset-service instance.