- HTML 67.8%
- Nix 17.2%
- Rust 15%
| crates | ||
| modules | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| flake.lock | ||
| flake.nix | ||
| README.md | ||
| Rocket.toml | ||
| rust-toolchain.toml | ||
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
- Default:
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.