45567fc5203cf2ee71bf975afa81904895fe3dc0
fetch() has no cross-browser upload progress event, so the upload path now uses XMLHttpRequest instead -- its upload.progress firing with loaded === total is the only client-observable signal that the server has moved from receiving bytes to converting them, worth surfacing now that a large POI export's conversion (GpxStore#save) can itself take several seconds on top of the transfer. Multi-file uploads now also show which file (i of N) is in flight, previously just a static "Uploading N files..." for the whole batch. Verified the 401 path still redirects to /login through the new XHR flow the same way fetch/redirectIfUnauthorized did.
MapTool
Table of Contents
A mapping application written in Ruby with Sinatra.
The project’s shape is still open — this is the initial scaffold.
Status
Early scaffold. The web application serves a vector map (MapLibre GL JS), with an online style and an optional offline style backed by a local PMTiles file, an animated RainViewer radar overlay, GPX upload/display (points and tracks, organized in folders), and a live position marker from a local GNSS receiver via gpsd.
Requirements
-
Ruby (see
.ruby-version) and Bundler
Getting started
bundle install
bundle exec puma -C config/puma.rb
Then open http://127.0.0.1:4567 in a browser.
Languages
JavaScript
48.7%
Ruby
43.6%
CSS
6%
HTML
1.2%
Dockerfile
0.5%