45 lines
1.8 KiB
Markdown
45 lines
1.8 KiB
Markdown
# mapix
|
|
|
|

|
|
|
|
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.
|