pois.world — AI-driven build of an open map platform

Site:

https://pois.world

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 + PostGIS

  • pois-ui — SvelteKit, Svelte 5 (runes), MapLibre GL JS, CesiumJS for 3D

  • pois-auth — RS256 JWT, magic-link, OAuth2

  • pois-reaper — background cleanup worker

  • pois-mcp — MCP server for AI discoverability

  • pois-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.