Dongho Kim afdcf23222 update
2025-11-28 23:25:17 +09:00
2025-11-28 23:25:17 +09:00
2025-11-28 23:25:17 +09:00
2025-11-28 23:25:17 +09:00
2025-11-27 22:04:36 +09:00
2025-11-27 13:56:41 +01:00
2025-11-26 11:57:23 +01:00
2025-11-27 13:56:41 +01:00
2025-11-25 16:58:24 +01:00
2025-11-27 13:56:41 +01:00
2025-11-28 23:25:17 +09:00
2025-11-25 16:58:24 +01:00
2025-11-25 18:26:07 +01:00
2025-11-28 23:25:17 +09:00
2025-11-27 13:56:41 +01:00

🗺️ Rust Vector Map

A high-performance, GPU-accelerated vector map renderer built with Rust, WebAssembly, and ScyllaDB.

🚀 Features

  • GPU Rendering: Uses wgpu to render millions of vertices (buildings, roads, parks) directly on the GPU.
  • WebAssembly: Core logic runs in Wasm for near-native performance in the browser.
  • Scalable Backend: Powered by ScyllaDB to handle massive OpenStreetMap datasets with low latency.
  • Custom Vector Tiles: Efficient binary format for fast network transfer and parsing.
  • Interactive: Smooth zooming, panning, and dynamic level-of-detail.

🏗️ Architecture

  • Frontend: Rust (winit, wgpu, wasm-bindgen) compiled to WebAssembly.
  • Backend: Rust (Axum) REST API serving tile data.
  • Database: ScyllaDB (Cassandra-compatible) storing processed OSM data.
  • Importer: Custom Rust tool (osmpbf) to ingest .osm.pbf files.

🛠️ Getting Started

Prerequisites

  • Rust (latest stable)
  • Docker & Docker Compose
  • wasm-pack: cargo install wasm-pack

1. Start the Database

Start ScyllaDB in a container:

docker compose up -d scylla

2. Import Data

  1. Download an OpenStreetMap PBF file (e.g., from Geofabrik).
  2. Save it as sample.osm.pbf in the project root.
  3. Run the importer:
cargo run --bin importer

Note: This process may take a few minutes depending on the size of the PBF file.

3. Run the Application

Option A: Docker (Recommended)

Build and run the entire stack:

docker compose up --build

Option B: Manual (Development)

  1. Build Frontend:

    cd frontend
    wasm-pack build --target web --out-name wasm --out-dir ../backend/static
    cd ..
    
  2. Run Backend:

    cargo run --bin backend
    

4. View the Map

Open your browser and navigate to:

http://localhost:3000

📂 Project Structure

  • /backend: Axum server and database logic.
  • /frontend: Rust Wasm application and rendering engine.
  • /importer: Tool for parsing and ingesting OSM data.
  • docker-compose.yml: Service orchestration.

📜 License

MIT License

Description
No description provided
https://maps.ekstrah.com
Readme 802 KiB
Languages
Rust 84.9%
HTML 14.4%
Dockerfile 0.5%
Makefile 0.1%