pois.world — AI-driven build of an open map platform¶
- Site:
What pois.world is¶
A map platform built around one idea: every place has a story. A POI (Point of Interest) is the heart of everything — a real location on the map that connects people, photos, videos, discussions, and tags.
You start with the place; everything else attaches to it.
What you can do:
Create POIs anywhere on the map — a park, restaurant, viewpoint, construction site, anything. Pick a category, name it.
Add photos and videos directly to a place. Build a visual history that anyone can browse.
Tag & organize with hashtags (
#favorite,#camping,#street-art). Private for yourself, or shared. Filter the whole map by any tag.Comment & discuss — every POI has a live, real-time discussion thread.
Share links — each POI has a direct URL; send it to anyone.
Temporary POIs — for pop-up markets, food trucks, seasonal events.
Notebook canvas — drop “virtual” POIs as place-anchored thoughts, to-dos, sketches.
Spatial journal / Logbook — dated entries per POI. The map becomes a timeline; pan it to read everywhere you’ve been.
Parcels (behind a feature flag) — ~1M virtual land parcels, claimable for $1: name on the map, custom colour and banner, moderation rights for your area.
No account needed to browse, create POIs, comment, or tag. Tagline: “Location first, everything else follows.”
Architecture (scope)¶
Six microservices, seven shared libraries, ~71k LOC.
Backend on FastAPI + SQLAlchemy async + GeoAlchemy2 + PostGIS (~1M
parcels of spatial data). Real-time over a unified /ws/live
WebSocket multiplexing map events and per-POI chat over Redis
pub/sub. Chat lives on a 3-node ScyllaDB cluster; media on MinIO with
imgproxy for transforms; vector tiles served from martin.
Frontend on SvelteKit + Svelte + TypeScript, Tailwind, shadcn-svelte; MapLibre GL JS for 2D, CesiumJS for 3D, Turf.js for geometry, dash.js for video.
OSM data is integrated via Overpass; geocoding via Nominatim. Both run in-cluster. Docker Compose for dev, Kubernetes for prod.
AI-driven development¶
Built agent-driven from day one. The platform is both built by agents and queryable by agents:
Workflow:
Concept → Plan → Spec → Code → Feature— a hard rule. Every non-trivial change starts as a written plan or spec; agents work against the document, not against a chat thread.Spec / Plan / Feature registry (
S0NN,P0NN,#FNNN) is referenced from code and PRs — every line traces back to a documented decision, for humans and agents alike.MCP server (
pois-mcp) exposes the platform to AI agents natively — assistants can browse POIs, query state, and act through tools.
Result: a six-service platform with ~71k LOC maintained by a single developer. Agents handle most of the boilerplate; a strict written spec keeps the architecture coherent.