# Alternative Ways to View GeoLibre Repository Contents: Browsing, Building, and Running the Code

> Explore the GeoLibre repository beyond GitHub. Learn how to browse, build, and run the code locally via git clone, web apps, Jupyter, RStudio, or Docker.

- Repository: [Open Geospatial Solutions/GeoLibre](https://github.com/opengeos/GeoLibre)
- Tags: how-to-guide
- Published: 2026-08-18

---

**TLDR:** You can explore GeoLibre through the GitHub web UI, a local git clone, live web and desktop apps, Jupyter notebooks, RStudio, or a prebuilt Docker container.

GeoLibre is a single npm-workspaces monorepo maintained by `opengeos` that delivers the same GIS application across multiple platforms. Whether you want to skim the source, run tests, or launch a fully interactive mapping environment, there are several alternative ways to view GeoLibre repository contents without hunting through folders blindly. Each entry point reveals a different layer of the codebase, from React components and Zustand stores to Rust-based desktop shells and Python bindings.

## Browse the Code Without Building Anything

### GitHub Web Interface

The simplest way to inspect files is through the repository's GitHub page at [opengeos/GeoLibre](https://github.com/opengeos/GeoLibre). GitHub renders Markdown documentation, provides a file-search UI, and lets you read source files directly in your browser.

### Local Git Clone

For full-text search, modification, and exploration of build artifacts, clone the monorepo locally:

```bash
git clone https://github.com/opengeos/GeoLibre.git
cd GeoLibre
npm install

```

This pulls the entire workspace—including apps, packages, workers, and the backend—onto your machine. A local clone requires **Node 22+**.

## Run the Application in Different Environments

### GeoLibre Web (Browser)

The web build lives in `apps/geolibre-desktop` and is compiled with Vite. Static assets are served by an Nginx container, with the build output written to `apps/geolibre-desktop/dist/`. You can visit the live deployment at [https://web.geolibre.app/](https://web.geolibre.app/) or start a local dev server with `npm run dev` after installing dependencies. The Vite configuration is defined in [apps/geolibre-desktop/vite.config.ts](https://github.com/opengeos/GeoLibre/blob/main/apps/geolibre-desktop/vite.config.ts).

### Desktop Application (Tauri)

GeoLibre also ships as a native desktop client for Windows, macOS, and Linux. The Tauri shell is located in `apps/geolibre-desktop/src-tauri` and bundles the same `dist/` output with a Rust-based shell and a packaged Python side-car. Download installers from the README badge links (for example, the [Microsoft Store](https://apps.microsoft.com/detail/9nwt67rv531x)) or build from source:

```bash
npm run tauri:dev    # launches the Tauri desktop window

npm run tauri:build  # creates an installer

```

### Mobile Apps

iOS and Android builds embed the same React UI inside a WebView using Tauri v2 mobile targets. The source code remains under `apps/geolibre-desktop` with platform-specific adapters. Installation links are available from the App Store and Google Play badges in the [README.md](https://github.com/opengeos/GeoLibre/blob/main/README.md).

### Jupyter and Python Embedding

A Python package named `geolibre` can launch the full UI inside a Jupyter notebook cell. The `python/` folder builds a wheel that bundles the compiled web app from `apps/geolibre-desktop/dist-embed`. Install via pip and run:

```python
import geolibre
geolibre.show()   # opens the full GeoLibre UI inline

```

See the [Python docs](https://github.com/opengeos/GeoLibre/blob/main/docs/python.md) for details. The build logic is handled in [python/hatch_build.py](https://github.com/opengeos/GeoLibre/blob/main/python/hatch_build.py).

### R Package

An R-language wrapper loads the same embedded build for use inside RStudio, Quarto, or Shiny. The bindings live in the `R/` folder and are documented in [`docs/r.md`](https://github.com/opengeos/GeoLibre/blob/main/docs/r.md). Install from CRAN and call:

```r
install.packages("geolibre")
geolibre::run()

```

### Docker Container

For a self-contained server, pull the prebuilt image:

```bash
docker run -d -p 8080:80 ghcr.io/opengeos/geolibre

```

This serves the web build from an Nginx image and optionally includes the Python side-car. The image is defined by the root [Dockerfile](https://github.com/opengeos/GeoLibre/blob/main/Dockerfile).

## Architectural Overview and Key Source Files

Before diving into implementation, it helps to understand how the pieces fit together. The core of GeoLibre is a **Zustand store** in `@geolibre/core` (see [packages/core](https://github.com/opengeos/GeoLibre/tree/main/packages/core)) that holds the project model ([`.geolibre.json`](https://github.com/opengeos/GeoLibre/blob/main/.geolibre.json)). UI components in `@geolibre/ui` read this store and dispatch actions synchronized to the map engine in `@geolibre/map`.

The map engine supports two renderers that subscribe to the same store:

- **MapLibre GL JS** — the default 2-D renderer implemented in [packages/map/src/map-controller.ts](https://github.com/opengeos/GeoLibre/blob/main/packages/map/src/map-controller.ts).
- **CesiumJS** — the optional 3-D globe view bridged in [packages/map/src/cesium-camera.ts](https://github.com/opengeos/GeoLibre/blob/main/packages/map/src/cesium-camera.ts).

Additional data flows come from built-in plugins (`@geolibre/plugins`) and the optional **FastAPI side-car** at [backend/geolibre_server/app/main.py](https://github.com/opengeos/GeoLibre/blob/main/backend/geolibre_server/app/main.py). The high-level diagram and state-flow are documented in [docs/architecture.md](https://github.com/opengeos/GeoLibre/blob/main/docs/architecture.md).

## Summary

- **GeoLibre** is an npm-workspaces monorepo with multiple viewing entry points, from GitHub's web UI to Docker containers.
- The web and desktop apps are built from `apps/geolibre-desktop` using Vite and Tauri.
- The Python and R wrappers embed the same compiled UI via `dist-embed`, making the app accessible in notebooks and statistical environments.
- Core architecture relies on a Zustand store in `packages/core`, map controllers in [`packages/map/src/map-controller.ts`](https://github.com/opengeos/GeoLibre/blob/main/packages/map/src/map-controller.ts), and an optional FastAPI backend.
- All source paths, build commands, and package names are preserved in the repository's [README.md](https://github.com/opengeos/GeoLibre/blob/main/README.md) and [docs/architecture.md](https://github.com/opengeos/GeoLibre/blob/main/docs/architecture.md).

## Frequently Asked Questions

### Can I view GeoLibre source code without cloning the repository?

Yes. The [opengeos/GeoLibre](https://github.com/opengeos/GeoLibre) GitHub page lets you browse directories, read rendered Markdown, and search files directly in your browser.

### What is the fastest way to run GeoLibre locally?

After cloning, run `npm install` followed by `npm run dev` to start the Vite development server at `http://localhost:5173`. This command uses the configuration in [`apps/geolibre-desktop/vite.config.ts`](https://github.com/opengeos/GeoLibre/blob/main/apps/geolibre-desktop/vite.config.ts) and requires Node 22 or later.

### How does the Python package display the GeoLibre UI?

The `geolibre` Python wheel bundles the static web assets from `apps/geolibre-desktop/dist-embed`. When you call `geolibre.show()` in a Jupyter notebook, it serves those embedded assets inline. The build process is defined in [`python/hatch_build.py`](https://github.com/opengeos/GeoLibre/blob/main/python/hatch_build.py).

### Is there a backend server I need to run?

Not for the core UI. The web, desktop, and mobile apps run standalone. However, advanced geoprocessing features rely on an optional FastAPI side-car located at [`backend/geolibre_server/app/main.py`](https://github.com/opengeos/GeoLibre/blob/main/backend/geolibre_server/app/main.py).