Tools

Kiriko

A Forma/ACC-style web platform for indoor GIS — publish IMDF and GDB station data as immutable, versioned bundles, review it with map-pinned issues, and route through it in a bilingual React/MapLibre viewer backed by a shared Rust core.

ROLE

Sole Developer

CONTEXT

JRE Consultants · Tokyo

TIMELINE

2026 — Present

PROBLEM

Indoor GIS dataset review for JR East stations happened over email, spreadsheets, and file-passing. Reviewers without GIS software couldn't open a floor plan to check it, and feedback couldn't point at a place on the map.

SOLUTION

One web platform for the whole indoor-GIS lifecycle. Producers publish IMDF or File Geodatabase station data through a reviewed conversion pipeline, and the Rust core compiles it into immutable, content-addressed KVB venue bundles. Reviewers open a link, walk the floors in a bilingual MapLibre viewer, and leave issues pinned to the map with replies, status, and assignment — synced live over SSE. The same bundles carry routing graphs and point facilities, so directions and route-to-facility work from the same data.

GALLERY — REVIEW — ROUTING

The gallery is the producer workspace: sign in, create and delete venues, and upload IMDF datasets or File Geodatabases. GDB ingestion is a reviewed conversion pipeline — archive validation and GDAL inspection, a server-suggested building/layer/floor/category mapping, bilingual mapping review, WGS84 conversion, and strict IMDF synthesis — with the raw source identity and mapping plan retained so a producer can reopen and refine the mapping later.

Publication is immutable. Every publish creates a new version with a permanent random public ID; source and bundle blobs are content-addressed by SHA-256; a failed compilation never replaces the latest published bundle. The Rust core owns all venue interpretation — strict IMDF import, deterministic KVB bundle encoding, route-graph construction and A* queries, and point-facility projection — compiled to both an N-API server addon and browser WASM.

Routing comes from an explicit network GDB (junctions and paths), from a graph generated from the venue’s own walkable geometry, or both: the generator fails with no_routable_network instead of publishing a misleading success. Facilities with graph anchors support route-to-facility directions, and network QA shows a connectivity summary with floor overlays and edge editing, exportable back to GDB.

Review issues are version-pinned: pins, replies, status, assignment, due dates, and optimistic concurrency, synchronized across clients over SSE. Embed mode runs the same viewer with reduced chrome for client-facing links.

TECH STACK

React TypeScript MapLibre GL JS Fastify SQLite Rust WebAssembly

IMPACT

Review conversations now live on the map, version-pinned against immutable dataset versions — what used to be email threads is now a feedback loop on the data itself. Every publish creates a new immutable version, routing and facilities ride in the same bundle, and the Rust core is shared between the server, the browser over WASM, and future SDKs, so venue interpretation is written once.

SLIDES

Tech Stack deck — Open in Figma

LET'S TALK

Let's build something together.

Available for architecture, BIM, automation, and spatial-data collaborations.