How to Set Up the GeoLibre Development Environment from Source
Setting up GeoLibre from source requires Node.js 22+, the Rust toolchain, and Linux build dependencies, followed by cloning the repository, running npm install at the root, and launching either the web UI with npm run dev or the desktop client with npm run tauri:dev.
GeoLibre is an open-source geospatial visualization platform organized as a single npm workspaces monorepo containing a web application, Tauri-based desktop client, TypeScript libraries, and an optional Python FastAPI sidecar. To contribute features, fix bugs, or customize the application, you must set up the development environment from source. This guide walks through the exact commands and configuration files located in the opengeos/GeoLibre repository.
Prerequisites
System Requirements
Before cloning the repository, ensure your system meets the baseline requirements defined in docs/getting-started.md【/cache/repos/github.com/opengeos/GeoLibre/main/docs/getting-started.md#L68-L73】.
- Node.js version 22 or newer.
- Rust toolchain installed via rustup.rs (required for compiling the Tauri desktop client).
- Linux dependencies for Tauri v2, including
libwebkit2gtk,libsoup, andgtkdevelopment packages.
Clone and Install Dependencies
Fork the repository on GitHub, then clone your fork locally. The contributing guidelines in CONTRIBUTING.md【/cache/repos/github.com/opengeos/GeoLibre/main/CONTRIBUTING.md#L11-L19】 recommend this workflow for all contributors.
git clone https://github.com/YOUR_GITHUB_USERNAME/GeoLibre.git
cd GeoLibre
Install JavaScript dependencies across all workspaces by running the following command at the repository root. This resolves dependencies declared in the root package.json【/cache/repos/github.com/opengeos/GeoLibre/main/package.json】.
npm install
# Alternative: bun install
Launch Development Servers
Web UI Development
To start the browser-based development server, run:
npm run dev
This executes a Vite dev server configured in apps/geolibre-desktop/vite.config.ts, making the application available at http://localhost:5173【/cache/repos/github.com/opengeos/GeoLibre/main/docs/getting-started.md#L96-L100】.
Desktop Client Development
To launch the Tauri-based native application, use:
npm run tauri:dev
This command requires the Rust toolchain and compiles the desktop shell while hot-reloading the TypeScript frontend. See the Run the desktop app section in docs/getting-started.md【/cache/repos/github.com/opengeos/GeoLibre/main/docs/getting-started.md#L62-L66】 for platform-specific notes.
Optional Components
Python Sidecar Setup
The Python sidecar provides heavy raster processing and optional vector tools. It lives in backend/geolibre_server and follows the bootstrap process documented in backend/geolibre_server/README.md【/cache/repos/github.com/opengeos/GeoLibre/main/backend/geolibre_server/README.md】.
cd backend/geolibre_server
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -e .
uvicorn geolibre_server.app.main:app --host 127.0.0.1 --port 8765
Install selective extras for specific workflows using the syntax documented in the Optional extras section【/cache/repos/github.com/opengeos/GeoLibre/main/docs/getting-started.md#L95-L114】:
pip install -e ".[conversion]" # or [vector], [raster], [ml]
Docker Container
The repository includes a Dockerfile that builds the web UI and serves it with Nginx. To build and run locally【/cache/repos/github.com/opengeos/GeoLibre/main/docs/getting-started.md#L106-L122】:
docker build -t geolibre .
docker run --rm -p 8080:80 geolibre
For a pre-built image from the GitHub Container Registry:
docker pull ghcr.io/opengeos/geolibre:latest
docker run --rm -p 8080:80 ghcr.io/opengeos/geolibre:latest
Production Builds
When ready to create distributable artifacts, use the build scripts defined in the root package.json:
npm run build: Compiles the web version intoapps/geolibre-desktop/dist/.npm run tauri:build: Generates native installers for Windows, macOS, and Linux.npm run tauri:build:native-duckdb: Builds the desktop client with a native DuckDB binary for enhanced local database support.
Output locations and build flags are documented in the Build section of docs/getting-started.md【/cache/repos/github.com/opengeos/GeoLibre/main/docs/getting-started.md#L84-L88】.
Environment Configuration
External imagery services and the 3-D globe view require API credentials configured via environment variables.
Create a .env.local file in apps/geolibre-desktop to store Google Maps, Mapillary, Protomaps, and other imagery API keys【/cache/repos/github.com/opengeos/GeoLibre/main/docs/getting-started.md#L90-L115】. For Cesium Ion integration, set either VITE_CESIUM_TOKEN or CESIUM_TOKEN【/cache/repos/github.com/opengeos/GeoLibre/main/docs/getting-started.md#L51-L57】.
These variables are read at build time and can also be injected at runtime via the Settings → Environment Variables UI.
Pre-Submission Checks
Before opening a pull request, run the quality gates outlined in CONTRIBUTING.md【/cache/repos/github.com/opengeos/GeoLibre/main/CONTRIBUTING.md#L21-L27】:
pre-commit run --all-files
npm run ci
These commands execute linting, type checking, and unit tests across all workspaces.
Summary
- GeoLibre is an npm workspaces monorepo requiring Node.js ≥22 and Rust for full desktop development.
- Clone your fork, then run
npm installat the root to wire up all workspaces. - Launch the web UI with
npm run dev(port 5173) or the desktop app withnpm run tauri:dev. - Optionally start the Python sidecar from
backend/geolibre_serverfor raster processing capabilities. - Use
npm run buildfor web artifacts andnpm run tauri:buildfor native installers. - Configure API keys in
.env.localand runnpm run cibefore submitting changes.
Frequently Asked Questions
Do I need Rust to build the web version of GeoLibre?
No. Rust is only required for compiling the Tauri desktop client. To develop and test the browser-based UI, you only need Node.js 22 or newer. Run npm run dev to start the Vite server without any Rust toolchain dependencies.
What is the fastest way to install dependencies across all workspaces?
Run npm install (or bun install) once at the repository root. Because GeoLibre uses npm workspaces, this single command installs dependencies for the web app, desktop client, and all shared TypeScript libraries declared in the root package.json.
How do I run the Python sidecar for raster processing?
Navigate to backend/geolibre_server, create a Python virtual environment, install the package in editable mode with pip install -e ., and start the server with uvicorn geolibre_server.app.main:app --host 127.0.0.1 --port 8765. Install optional extras like [raster] or [conversion] if your workflow requires specific processing capabilities.
Where do I configure API keys for imagery services?
Create a .env.local file inside apps/geolibre-desktop and add keys for Google Maps, Mapillary, Protomaps, or Cesium Ion. The application reads these variables at build time, and they can be updated at runtime through the Settings → Environment Variables UI.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →