Files
meshstream/web/package.json
Daniel Pupius d95a74c1d7 refactor(web): replace Google Maps with MapLibre, clean up map components
- Migrate all three map components (Map, GoogleMap, NetworkMap) to MapLibre GL JS
- Extract shared CARTO_DARK_STYLE constants into lib/mapStyle.ts
- Move buildCircleCoords to lib/mapUtils.ts (was duplicated across components)
- Rename exports: Map → LocationMap, GoogleMap → NodeLocationMap
- Remove dead props (width, height, nightMode) from LocationMap interface
- Lazy-mount GL contexts via IntersectionObserver to prevent WebGL exhaustion
- Fix Math.spread RangeError in NetworkMap bounds calculation
- Remove showLinks conditional render in favour of visibility layout property
- Remove cursor state; set canvas cursor style directly on map interactions
- Remove Google Maps API key env vars from .env.example and .env.local
- Move Vite dev server to port 5747 (avoids cached redirect on 3000)
- Fix CORS/404: set VITE_API_BASE_URL="" so browser uses Vite proxy

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-15 20:22:12 +00:00

68 lines
2.0 KiB
JSON

{
"name": "meshstream-web",
"private": true,
"version": "0.1.0",
"type": "module",
"description": "Web application for visualizing Meshtastic network data",
"scripts": {
"dev": "vite",
"build": "tsc && vite build",
"lint": "eslint --ignore-pattern 'dist/*' src --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
"preview": "vite preview",
"test": "vitest run",
"test:watch": "vitest"
},
"keywords": [
"meshtastic",
"mesh",
"network",
"visualization"
],
"author": "",
"license": "MIT",
"dependencies": {
"@eslint/js": "^9.25.1",
"@reduxjs/toolkit": "^2.7.0",
"@tailwindcss/postcss": "^4.1.4",
"@tanstack/react-query": "^5.74.4",
"@tanstack/react-query-devtools": "^5.74.6",
"@tanstack/react-router": "^1.116.0",
"@tanstack/router-devtools": "^1.116.0",
"@tanstack/router-vite-plugin": "^1.116.1",
"clsx": "^2.1.1",
"leaflet": "^1.9.4",
"lucide-react": "^0.503.0",
"maplibre-gl": "^5.20.1",
"react": "^19.1.0",
"react-dom": "^19.1.0",
"react-leaflet": "^5.0.0",
"react-map-gl": "^8.1.0",
"react-redux": "^9.2.0",
"tailwind-merge": "^3.2.0"
},
"devDependencies": {
"@tailwindcss/vite": "^4.1.4",
"@testing-library/jest-dom": "^6.6.3",
"@testing-library/react": "^16.3.0",
"@testing-library/user-event": "^14.6.1",
"@types/geojson": "^7946.0.16",
"@types/leaflet": "^1.9.17",
"@types/react": "^19.1.2",
"@types/react-dom": "^19.1.2",
"@typescript-eslint/eslint-plugin": "^8.31.0",
"@typescript-eslint/parser": "^8.31.0",
"@vitejs/plugin-react": "^4.4.1",
"autoprefixer": "^10.4.21",
"eslint": "^9.25.1",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-react-refresh": "^0.4.20",
"jsdom": "^26.1.0",
"postcss": "^8.5.3",
"tailwindcss": "^4.1.4",
"typescript": "^5.8.3",
"typescript-eslint": "^8.31.0",
"vite": "^6.3.2",
"vitest": "^3.1.2"
}
}