Go to file
Arda Samadi 3c7ee5b24c feat(address-map): MapLibre GL + Map.ir vector map & Persian reverse geocoding
Replace the broken-looking Leaflet/OSM address picker with a MapLibre GL
map using Map.ir vector tiles, plus Map.ir reverse geocoding for fast
coordinates -> Persian address.

- InteractiveMap: drop react-leaflet/leaflet; init a MapLibre map (Map.ir
  style via transformRequest x-api-key), a NavigationControl, and a fixed
  center pin — the map moves under the pin and the centre is reverse-
  geocoded on moveend (debounced). Wrapped dir=ltr so the map renders
  correctly inside the RTL page (fixes the scattered-tiles bug). Selected
  address shown in an overlay chip; city select / geolocation fly the map.
- reverse geocoding: Nominatim -> Map.ir (https://map.ir/reverse), which
  returns proper Persian addresses (Nominatim was weak for Iran and its
  TOS forbids production use).
- default map centre fixed to Tehran (matched the "تهران" selector).
- key via VITE_MAPIR_KEY (documented in .env.example; real key in env).
- deps: add maplibre-gl, remove leaflet/react-leaflet/@types/leaflet.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 01:20:37 +03:30
app feat(address-map): MapLibre GL + Map.ir vector map & Persian reverse geocoding 2026-06-28 01:20:37 +03:30
docs first 2026-04-29 01:44:16 +03:30
k8s first 2026-04-29 01:44:16 +03:30
public feat(notifications): web push opt-in + unread nav badges 2026-06-17 14:02:56 +03:30
scripts first 2026-04-29 01:44:16 +03:30
src/api/types feat(search/explore): home-style product tiles with seller brand chip 2026-06-27 17:09:58 +03:30
.dockerignore first 2026-04-29 01:44:16 +03:30
.env.development first 2026-04-29 01:44:16 +03:30
.env.example feat(address-map): MapLibre GL + Map.ir vector map & Persian reverse geocoding 2026-06-28 01:20:37 +03:30
.env.production first 2026-04-29 01:44:16 +03:30
.eslintrc.cjs first 2026-04-29 01:44:16 +03:30
.gitignore first 2026-04-29 01:44:16 +03:30
bun.lock first 2026-04-29 01:44:16 +03:30
components.json first 2026-04-29 01:44:16 +03:30
DEPLOYMENT.md first 2026-04-29 01:44:16 +03:30
docker-compose.yml first 2026-04-29 01:44:16 +03:30
Dockerfile first 2026-04-29 01:44:16 +03:30
Dockerfile.dev first 2026-04-29 01:44:16 +03:30
generate-types.ps1 first 2026-04-29 01:44:16 +03:30
generate-types.sh first 2026-04-29 01:44:16 +03:30
openapi-generator-cli.jar first 2026-04-29 01:44:16 +03:30
package-lock.json feat(address-map): MapLibre GL + Map.ir vector map & Persian reverse geocoding 2026-06-28 01:20:37 +03:30
package.json feat(address-map): MapLibre GL + Map.ir vector map & Persian reverse geocoding 2026-06-28 01:20:37 +03:30
postcss.config.js first 2026-04-29 01:44:16 +03:30
README.md first commit 2026-04-29 01:42:54 +03:30
tailwind.config.ts first 2026-04-29 01:44:16 +03:30
tsconfig.json first 2026-04-29 01:44:16 +03:30
vite.config.ts first 2026-04-29 01:44:16 +03:30

Welcome to Remix - yay!

Development

Run the dev server:

npm run dev

Deployment

First, build your app for production:

npm run build

Then run the app in production mode:

npm start

Now you'll need to pick a host to deploy it to.

DIY

If you're familiar with deploying Node applications, the built-in Remix app server is production-ready.

Make sure to deploy the output of npm run build

  • build/server
  • build/client

Styling

This template comes with Tailwind CSS already configured for a simple default starting experience. You can use whatever css framework you prefer. See the Vite docs on css for more information.