Files
gpx.studio/README.md
T
vcoppeandvcoppe 8fe7d8d64d Migration to new Rust-based engine (#401)
* wasm first steps

* parsing start

* parsing continued

* progress

* progress

* progress

* progress

* progress

* progress

* progress

* progress

* fixes

* reorganize

* change type

* fix

* progress

* refactoring

* progress

* progress

* progress

* keep style info

* progress

* progress

* remove (copy) in name

* progress

* merge methods into 1

* splice

* progress

* progress

* progress

* cleaning

* progress

* progress

* progress

* visibility

* progress

* progress

* progress

* progress

* progress

* fixes

* progress

* fix markers

* fix

* progress

* progress

* progress

* progress

* progress

* progress

* small fix

* use engine info

* fix popups

* small fix

* progress

* progress

* progress

* clean tool

* handle self closing elements

* reduce data exchanges across boundary

* copy on wasm side to avoid any data corruption

* speed fix

* routing

* refactoring

* reverse

* reverse

* crop

* split

* merge

* progress

* time tool

* fix bounds for waypoints

* reduce

* fix reactivity

* handle corrupt time data

* export

* progress

* remove gpx js package

* remove todo

* update readme

* cleaning

* progress

* fix link fields

* remove unused fields

* refactoring and tests

* import and export of routes, ref #192

* per-chunk categories storage

* cross-tab sync

* outdated state

* refactoring

* reorder methods

* refactoring

* fix

* improve flow

* renaming

* progress

* progress

* fix

* progress

* per file history

* keep original flag

* use history variant

* fix

* progress

* file explorer

* progress

* fix

* sticky folders

* improved sticky folders

* fix sortable

* fix sortable

* fix

* fix tab size

* no file delete on desktop

* fix routing on other file

* fix sorting

* remember language

* open links in browser

* commit missing changes

* avoid selecting on resize

* clarify filename

* explorer actions

* fix folder styling

* drop anywhere in folder

* cleaning

* fixes

* remove focus-ring

* full screen

* small fix

* consistent highlight color

* improved preview

* performance improvements

* sparser data transfers

* sparser data transfers

* show popup once data is loaded

* fix routing control size

* fix

* sparse desktop build

* remove custom ign styles

* use new endpoint for openhikingmap

* strip native menu

* reorder context menu items

* route full support

* route - track conversion

* create route file action

* route export, filter out anchors at high zoom level

* clarify name handling

* move hide & center to view

* routes continued

* update docs

* fix power format, closes #378

* lint fixes

* fix display of additional data with gaps, closes #361

* fix linting issues

* fix import modules

* fix multidrag

* change base to resolve

* fix type errors

* fix layer typings

* fix last type error

* each keys

* improve typings

* deploy to cloudflare

---------

Co-authored-by: vcoppe <vcoppe@hexaly.com>
2026-10-31 18:08:22 +01:00

3.6 KiB

Logo of gpx.studio.

gpx.studio is an online tool for creating and editing GPX files.

gpx.studio screenshot

This repository contains the source code of the website.

Contributing

Please create an issue if you find a bug or have a feature request.

Code contributions are also welcome, but except for obvious bug fixes, please open an issue first to discuss the changes you would like to make.

Translation

The website is translated by volunteers on a collaborative translation platform. You can help complete and improve the translations by joining the Crowdin project. If you would like to start the translation in a new language, please contact me or create an issue.

Any help is greatly appreciated!

Development

The code is split into four parts:

  • gpx-rs: a Rust library for parsing and manipulating GPX files (the engine), and the interface to it that the next two share (gpx_engine::api),
  • wasm: the engine for the browser, compiled to WebAssembly,
  • tauri: the desktop app, which runs the engine natively,
  • website: the website itself, which is a SvelteKit application. It also is the UI of the desktop app.

You will need Node.js, Rust and wasm-pack to build and run the website. See tauri for the desktop app.

Building the WebAssembly engine

cd wasm
wasm-pack build --target bundler

Running the website

To be able to load the map, you will need to create your own MapTiler key and store it in a .env file in the website directory.

cd website
echo PUBLIC_MAPTILER_KEY={YOUR_MAPTILER_KEY} >> .env
npm install
npm run dev

Credits

This project has been made possible thanks to the following open source projects:

  • Development:
    • Svelte and SvelteKit — seamless development experience
    • MDsveX — allowing a Markdown-based documentation
  • Design:
  • Logic:
  • Mapping:
    • MapLibre GL JS — beautiful and fast interactive map rendering
    • GraphHopper — powerful routing engine
    • OpenStreetMap — open map data used by most of the map layers, and by the routing engine
    • Mapterhorn — high-quality open terrain data used by some map layers (including for 3D), and by the routing engine
  • Search:
    • DocSearch — search engine for the documentation

License

This project is licensed under the MIT License - see the LICENSE file for details.