pois.world — AI-driven build of an open map platform¶
- Site:
A personal map platform: mark any place on Earth with photos, videos, tags, and chat; own ~1M virtual parcels world-wide on an interactive 2.5D / 3D map.
Architecture¶
Six microservices, seven shared libraries, ~71k LOC of code.
pois-backend— FastAPI + SQLAlchemy 2.x async + GeoAlchemy2 + PostGISpois-ui— SvelteKit, Svelte 5 (runes), MapLibre GL JS, CesiumJS for 3Dpois-auth— RS256 JWT, magic-link, OAuth2pois-reaper— background cleanup workerpois-mcp— MCP server for AI discoverabilitypois-transcoder— video transcoding worker (Redis Streams)
Real-time over a unified /ws/live WebSocket: map events and per-POI
chat multiplexed via Redis pub/sub. Chat on a 3-node ScyllaDB cluster;
spatial data on PostGIS (~1M parcels).
Stack snapshot¶
Python 3.14, FastAPI, SQLAlchemy 2.x async, Alembic, PostGIS, ScyllaDB, Redis, MinIO, imgproxy, martin (vector tiles), Overpass, Nominatim; SvelteKit + Svelte 5, TypeScript, Tailwind v3, shadcn-svelte, MapLibre GL JS, CesiumJS, Turf.js, dash.js. Docker Compose for dev, Kubernetes for prod.
AI-driven development¶
Built agent-driven from day one. Workflow:
Concept → Plan → Spec → Code → Feature is a hard rule. Every non-trivial change starts as a written plan or spec; agents work against that document, not against a chat thread.
Tooling: Claude Code, Cursor, Zed. Codegen, refactors, test scaffolding, code review, architecture sanity-checks.
MCP server (``pois-mcp``) exposes the platform to AI agents natively — the project is both built by agents and queryable by agents.
Project rules in ``CLAUDE.md`` and ``AGENTS.md`` (design principles, commit conventions, no-go zones) keep autonomous edits inside the rails.
Spec / Plan / Feature registry (
S0NN,P0NN,#FNNN) is referenced from code and PRs so an agent can always trace why a line of code exists.
Result: a six-service platform with ~71k LOC maintained by a single developer, with AI agents doing most of the boilerplate while a strict written spec keeps the architecture coherent.