AI Maps is a chat-first personal map copilot. You describe what you want in natural language on the left, and the map workspace on the right updates with curated political overlays, open-data layers, zoom actions, and a visible layer stack.
- Adds curated political overlays like EU, NATO, Eurozone, and Schengen.
- Adds open-data overlays like airports, hospitals, farmland, parks, museums, roads, and tourist attractions in a place.
- Lets you hide, remove, clear, save, favorite, and export layers.
- Preserves conversation and workspace state during the session.
- Works without AI credentials by using a deterministic parser for the common flows.
- Supports a provider hub with OpenAI subscription bridge, Google Gemini subscription bridge, OpenAI API key, Google API key, and deterministic mode.
- Use Node 20:
nvm use - Install dependencies:
yarn install - Copy env template if needed:
cp .env.example .env - Start the app:
yarn dev - Open http://localhost:5173
yarn dev: run frontend and backend togetheryarn lint: run ESLintyarn test: run Vitestyarn typecheck: run TypeScript project checksyarn build: build client and serveryarn start: run the production server
PORT: backend port, default8787OPENAI_API_KEY: optional OpenAI API key backup modeOPENAI_MODEL: optional model name for OpenAI API modeGOOGLE_API_KEYorGOOGLE_GENERATIVE_AI_API_KEY: optional Google Gemini API key backup modeGOOGLE_MODEL: optional model name for Google API modeGOOGLE_CLIENT_ID: optional Google sign-in client idGOOGLE_CLIENT_SECRET: optional Google sign-in client secretGOOGLE_REDIRECT_URI: optional Google OAuth callback URL, defaulthttp://localhost:8787/api/auth/google/callbackAPP_BASE_URL: frontend base URL used after Google auth callbacksOPENAI_SUBSCRIPTION_BRIDGE_URL: optional default OpenAI subscription bridge base URLOPENAI_SUBSCRIPTION_BRIDGE_TOKEN: optional OpenAI subscription bridge bearer tokenOPENAI_SUBSCRIPTION_BRIDGE_HEALTH_PATH: optional OpenAI bridge health pathOPENAI_SUBSCRIPTION_BRIDGE_INTERPRET_PATH: optional OpenAI bridge interpret pathGOOGLE_SUBSCRIPTION_BRIDGE_URL: optional default Google Gemini subscription bridge base URLGOOGLE_SUBSCRIPTION_BRIDGE_TOKEN: optional Google bridge bearer tokenGOOGLE_SUBSCRIPTION_BRIDGE_HEALTH_PATH: optional Google bridge health pathGOOGLE_SUBSCRIPTION_BRIDGE_INTERPRET_PATH: optional Google bridge interpret pathAI_BRIDGE_TIMEOUT_MS: optional subscription bridge timeout in millisecondsPROVIDER_VERIFY_TIMEOUT_MS: optional bridge verification timeout in millisecondsGEOCODER_USER_AGENT: user agent string for Nominatim
- Guest-first workspace with real backend Google sign-in support when configured
- Full-height Material-inspired split layout with drawer-based secondary workflows
- Example prompts for first-run success
- Provider hub for deterministic, OpenAI subscription, Google Gemini subscription, OpenAI API, and Google API modes
- Saved views, recent sessions, GeoJSON export, and map image export
- Frontend: React + Vite + Tailwind + React Leaflet
- Backend: Express + TypeScript + zod
- Curated overlays: local ISO country sets resolved against packaged world geometry
- Generic overlays: Nominatim for place lookup, Overpass for OSM features
- AI: deterministic parser first, optional subscription bridge or API enhancement second
Show EU countriesworks on first runShow NATO members,Show Eurozone, andShow Schengen AreaworkShow airports in CroatiaandHighlight farmland in PolandworkZoom to Paris and show tourist attractionsworksRemove airportsremoves only airport layersClear all layersremoves all map overlays- Build, lint, typecheck, and tests pass
- Google sign-in requires
GOOGLE_CLIENT_IDandGOOGLE_CLIENT_SECRETon the server; without them the UI falls back gracefully and explains that sign-in is unavailable. - Subscription connector cards are real server-managed bridge settings, but actual bridge compatibility depends on the local companion endpoint you connect to.
- Nominatim and Overpass are external public services, so generic live-data requests depend on network availability and provider health.
- Durable server-backed storage for signed-in workspaces
- More categories and richer place disambiguation
- Better clustering and high-volume feature rendering
- Packaged local companion for personal subscription modes