# mapix ![mapix screenshot](./screenshot.png) A browser-based photo mapping prototype that reads EXIF/GPS data and shows images on OpenStreetMap. ## Features - Nextcloud public share import through a local proxy - Client-side EXIF and GPS extraction where possible - Map markers with thumbnail previews - Thumbnail-backed photo list with lazy full-size image loading - Fullscreen photo viewer with loading state - Zoomable timeline with selectable ranges - Route line toggle on the map - Dark and light mode that follows the client OS preference and can be toggled manually - Local browser dependency bundle for Leaflet and EXIF parsing - Local brand assets and favicon ## Recent Changes - Image handling now keeps thumbnails in the browser for markers and the photo list, while full-size images are loaded only on demand. - The photo viewer now shows a loading indicator before the full image is ready. - The sidebar header now includes the brand logo, and the logo switches with the active theme. - The top-right controls include a route visibility toggle and a theme toggle with compact icon-only buttons. - Browser dependencies and static assets are served locally to avoid CDN-related failures. - The timeline keeps its selected range visible again during drag selection. - The photo list now uses compact thumbnail tiles and stable wrapping for large result sets. ## Start ```bash npm install npm run build npm start ``` ## Notes - Photos are not stored on the server. - The UI and processing run in the browser where possible. - Browser dependencies are installed through npm and copied into `dist/vendor` during `npm run build`; the runtime serves them locally instead of loading third-party CDNs. - Static brand assets are copied from `src/assets` into `dist/assets` during the build. - Future auth can be forwarded by a reverse proxy via HTTP headers.