Materializr
Open-source parametric 3D CAD for makers — constraint sketches, solid modeling, threads, SVG & text engraving, STL/STEP export. Android, iPad, Linux, Mac, Windows. Vibe coded.
Browser-based 3D building editor for OpenStreetMap (Simple 3D Buildings): MapLibre + three.js, no backend
Translation pending
DesignTypeScript · JavaScriptGitHub @FelisPimejaOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗English · Русский
A browser-based 3D building editor for OpenStreetMap, following the Simple 3D Buildings tagging scheme. It also works with OpenHistoricalMap and OpenGeofiction.
OpenGeofiction's API may return 403 to Chrome, Safari, or Edge requests from this editor. Its server currently exempts IPs recognized as having edited OGF; if access is refused, try Firefox or contact the OGF administrators. The editor shows the server's response when this happens.
Open the editor: https://felispimeja.github.io/osm-simple3d-editor/
Usage statistics (changesets, users, edited keys; updated daily): https://felispimeja.github.io/osm-simple3d-stats/
height, min_height, building:levels, building:min_level, roof:* and colours, with undo/redo and a before/after diff.type=building relations: create them and manage their members.The osm-open-simple3d.user.js userscript adds Simple3D Editor to the top menu on openstreetmap.org, immediately after About. Install it in Tampermonkey or another userscript manager. It opens a new tab with the current map position and zoom, or links directly to the object on way and relation pages (?edit=w123 / ?edit=r456). Node pages use the current map view. The menu also works when navigating without a full page reload.
The osmcha-open-simple3d.user.js userscript adds Simple3D Editor to the Open with menu on an OSMCha changeset page. Install it in Tampermonkey or another userscript manager and allow requests to api.openstreetmap.org. The script reads the changeset bounds from the OSM API and opens the editor with a #zoom/lat/lon link. If the changeset has no bounds, the item says the location is unavailable. On OpenHistoricalMap's OSMCha it reads the bounds from the OHM API (allow requests to www.openhistoricalmap.org) and opens the editor with OHM as the server (?server=ohm) at the date when most of the changed features exist (by start_date/end_date, buildings first; &date=), so the edits are visible.
Russian and English. The language is chosen in the settings panel; on first launch it follows the browser and system language
(Russian for ru, English otherwise).
UI strings are written in Russian in the code via tr('…') / trn(n, '…') (see src/i18n/index.ts) and serve as
translation keys. Dictionaries are flat JSON files in src/i18n/locales/: ru.json is generated from the code
with npm run i18n:extract, while en.json contains the English text. npm run i18n:check verifies that the English text is
complete, has no extra strings, and that {…} placeholders match. Strings with a number contain plural forms separated by |
(Russian: forms for 1, 2, 5; English: forms for 1 and other).
The Transifex project configured in .tx/config uses English as its source language and Russian, German, and French as target languages. Russian phrases remain the JSON keys; their English values in en.json are the Transifex source text. .tx/config maps the Editor interface resource to these files. Install the Transifex CLI and load TX_TOKEN from the ignored .env.local into your shell (set -a; . ./.env.local; set +a). After changing UI strings, run npm run i18n:extract, add the English text for any new keys to en.json, and check with npm run i18n:check. Then run tx push -s to upload English source text and tx push -t -l ru to upload the generated Russian translations. To review community translations, run tx pull -t -l de,fr, inspect the changed JSON files, and run npm run i18n:check. Never commit the token. To offer German or French in the app, also add the downloaded dictionary to src/i18n/index.ts and update its language list and locale handling.
npm install
npm run dev # local dev server (Vite)
npm run build # type check and production build
This project is developed with AI assistance. Most of the code, documentation and translations were written with Claude (Anthropic) via Claude Code, under the direction of the project maintainer, who designs the features, reviews and tests the changes, and is responsible for every commit. Commits made with AI help carry a Co-authored-by: Claude <[email protected]> trailer.
Edits uploaded to OpenStreetMap and other map projects with this editor are made by human mappers; the editor does not generate map data on its own.
The code is distributed under the ISC license. Map data is licensed by the respective projects (ODbL for OpenStreetMap and OpenHistoricalMap, its own license for OpenGeofiction).