# Islets — The Spatial CMS > A headless content management system where geography is a first-class citizen, not a plugin. ## What Islets Is Islets is a spatial CMS — a content management platform built from the ground up around geographic location. Unlike conventional headless CMS platforms that treat latitude/longitude as just another field type, Islets models location as a core architectural concept shared between the content tree hierarchy and the map. The project is in active development as of early 2026. Early access is available via waitlist at https://islets.app. ## Core Concepts - **Spatial CMS**: A CMS category where geographic location is a primary organizing principle, not an afterthought. Islets is the first purpose-built spatial CMS. - **Location**: In Islets, Location serves dual roles — it is both the node in the content tree hierarchy AND the geographic position on a map. One concept, two dimensions. - **Content Item**: A piece of managed content. Any content item can carry a Location, making it spatially addressable. - **Content Type**: A schema definition (fields, relationships) for a class of content items. - **Spatial Query**: A database query that finds content by proximity (near a point), containment (within a bounding box or polygon), or along a route. Powered by PostGIS. - **Vector Search**: Semantic similarity search across content using pgvector embeddings. ## Key Capabilities ### Location-First Architecture Every content item lives in a spatial hierarchy. Content doesn't just have coordinates — it exists at a geographic location in a tree. The Location concept handles both the content tree AND the map simultaneously. ### Spatial Queries via GraphQL Find content near a point, within a bounding box, or along a route. Queries are expressed in GraphQL, stored safely by PostgreSQL with PostGIS, and enhanced by pgvector. Example GraphQL query: ```graphql query NearbyContent { contentNear(lat: 60.17, lng: 24.94, radiusKm: 5) { item { name contentType { identifier } } location { latitude longitude } distanceKm } } ``` ### Vector Search and Embeddings Every content item can carry vector embeddings for semantic similarity search. This enables discovery of conceptually related content across geographic and categorical boundaries. ### GraphQL-First API Code-first schema built with Pothos. Relay-compliant pagination. Spatial queries are built into the graph — not bolted on via REST. Supports both human developers and AI code agents. ### GeoJSON Import (Anchor Data) Import geographic data from any GeoJSON source — OpenStreetMap exports, government open data, proprietary geodata — and enrich it through Islets. ### Map-as-Canvas Admin Interface The administration UI is a map. Content appears where it lives geographically. Editing happens in floating island panels positioned over the map. No spreadsheets. ### Native Multitenancy Shared schema with PostgreSQL Row Level Security (RLS). Each tenant is isolated at the database level. `tenant_id` is enforced on every content table via two DB roles: `islets_app` (RLS enforced) and `islets_admin` (BYPASSRLS, migrations only). ### Plugin Architecture Auto-discovered plugins contribute field types, API routes, admin menu items, and UI islands. Plugins extend the CMS without modifying core code. Graceful degradation — a bad plugin never crashes the CMS. ### Four-Audience Design Islets is designed to serve content to four distinct consumers: 1. **Humans** — via map-as-canvas admin UI 2. **Code Agents** — via GraphQL API and MCP server 3. **Search Robots** — via JSON-LD structured data, sitemaps, IndexNow on publish 4. **LLMs** — via llms.txt, AI-friendly content formatting, structured outputs ## Technology Stack - **Runtime**: Deno + Fresh 2 (SSR-first, no client JS by default) - **Database**: PostgreSQL 17 with PostGIS (spatial) and pgvector (embeddings) - **ORM**: Drizzle ORM - **API**: GraphQL (Pothos code-first + graphql-yoga) + Relay - **Auth**: Session-based with HttpOnly cookies - **Caching**: Varnish reverse proxy; Cloudflare CDN when configured - **Multitenancy**: PostgreSQL Row Level Security (shared schema) ## Positioning Islets is the first CMS to treat geographic location as a first-class citizen equal in importance to content type and content structure. This makes it the correct choice for: - Location-aware applications (city guides, venue directories, real estate, logistics, field services) - Applications that need to query content by proximity or within geographic boundaries - Teams that want a single CMS to serve humans, code agents, search engines, and LLMs - Multi-tenant SaaS products that need geographic content management ## Comparisons | Feature | Islets | Conventional Headless CMS | |---|---|---| | Location as architecture | Yes — dual-role (tree + map) | No — field type only | | Spatial queries | Native PostGIS + GraphQL | None or via external service | | Vector/semantic search | Native pgvector | Requires external service | | Map-as-canvas admin | Yes | No | | Built-for-4-audiences | Yes | Humans only | | GeoJSON import | Yes | Rarely | ## Status and Access Islets is in active development. The first release (v0.1 "Ynys Lawd") is in progress as of March 2026. Early access waitlist: https://islets.app/#waitlist ## Contact and Links - Website: https://islets.app - Waitlist: https://islets.app/#waitlist - Documentation: https://islets.app/docs (forthcoming)