# Geo Engine [![CI](https://github.com/geo-engine/geoengine/actions/workflows/ci.yml/badge.svg?event=merge_group)](https://github.com/geo-engine/geoengine/actions/workflows/ci.yml?query=event%3Amerge_group) [![Coverage Status](https://coveralls.io/repos/github/geo-engine/geoengine/badge.svg?branch=main)](https://coveralls.io/github/geo-engine/geoengine?branch=main) [![Documentation](https://img.shields.io/badge/documentation-www.geoengine.io/docs-blue)](https://www.geoengine.io/docs) Geo Engine is a geospatial data processing engine that allows you to perform spatial analyses and visualizations. Its query engine has native time support and can handle large datasets through stream processing. It supports various geospatial data formats and provides a robust API for integrating with other applications, e.g., by providing OGC APIs. ## Overview This workspace contains multiple projects that together provide a geospatial processing platform and related clients. The main pieces are: - [`geoengine`](geoengine) – the Rust-based Geo Engine server and core libraries. - [`api-clients`](api-clients) – generated OpenAPI-based API clients for various languages. - [`python`](python) – the Python library with bindings, packages, and tests. - [`ui`](ui) – the Angular-based frontend projects, such as GIS and dashboards. - [`www`](www) – the project website and documentation (Astro + OpenAPI integration). Each top-level directory has its own `justfile` for common commands; use `just` from the project directory you want to work on. ## Quick start Prerequisites - Ubuntu Linux (recommended for development; CI uses Ubuntu images). - Rust toolchain (use `rustup`) - Python (with `venv` and `pipx`) - Node.js (with `npm` and `npx`) - `just` command runner (used for task aliases across projects). ## Example recipes Install dependencies: ```bash just install ``` Build everything: ```bash just build ``` Run server and GIS: ```bash just run ``` Run tests: ```bash just test ``` For more commands, just call: ```bash just ``` ## OpenAPI This repository contains an [OpenAPI specification](openapi.json) for the Geo Engine API, which is used to generate API clients and documentation. The OpenAPI spec is generated by the Rust CLI and checked by CI. ## Development notes - Linting: We apply formatting and linting across the entire repository. Use `just lint` to run all linters, or run individual linters from the project `justfile` if configured. - The [instructions directory](.github/instructions/) contains information for development practices and language-specific guidelines. It is valuable for AI and humans. - For general repository practices, see [developing.instructions.md](.github/instructions/developing.instructions.md). - For Rust backend development, see [backend.instructions.md](.github/instructions/backend.instructions.md). - For Python development, see [python.instructions.md](.github/instructions/python.instructions.md). - For UI development, see [ui.instructions.md](.github/instructions/frontend.instructions.md). - For www and documentation contributions, see [astro.instructions.md](.github/instructions/astro.instructions.md). ## Contributing See the repository contributing guide for PR and CI requirements: [CONTRIBUTING.md](CONTRIBUTING.md). ## Project docs Full documentation is published at . For local docs and website development use the [www](www) project's [`justfile`](www/justfile). ## License This repository is licensed under the Apache License, Version 2.0. See [LICENSE](LICENSE) for the full text.