Skip to content

spieli

A free, interactive web map for exploring playgrounds based on OpenStreetMap data — configurable for any region.

Origin: This project is a further development of the original Berliner Spielplatzkarte by Alex Seidel.


Architecture

                  ┌─────────────────────────────────────────────────────┐
                  │                   Production                        │
                  │                                                     │
  Browser ──────► | nginx ──────► PostgREST ──────► PostgreSQL/PostGIS  │
  (your phone     | (serves        (turns SQL          (holds all the   │
   or laptop)     | the app,       functions into      OSM playground   │
                  | proxies API    HTTP endpoints)     data)            │
                  | requests)                                           │
                  └─────────────────────────────────────────────────────┘

Your browser loads the app from nginx. Playground data requests go to /api/, which nginx forwards to PostgREST. PostgREST runs a SQL function in PostgreSQL and returns JSON — no custom server code needed. The database is pre-loaded with OpenStreetMap data by the osm2pgsql importer.

Multiple regional instances can be aggregated into a single Hub map — see Architecture and Federation for details.


Getting started

I want to… Go to…
Deploy spieli for my region Quick Start
Deploy from source Manual Deploy
Connect my backend to an existing Hub Quick Start → Joining an existing Hub

Using the map

I want to… Go to…
Learn how to use the map User Guide
Understand the data quality colours User Guide → Data quality colours
Add or improve playground data User Guide → Adding data

Operations

I want to… Go to…
Configure environment variables Configuration
Stand up a Hub + multiple data-nodes Federated Deployment
Upgrade to a newer version Upgrading
Automate weekly data refreshes Scheduled Import
Back up or restore the database Backup and Restore
Monitor a running instance Monitoring
Harden for production (HTTPS, passwords) Security
Fix a problem Troubleshooting

Contributing

I want to… Go to…
Set up a local dev environment Local Development
Understand the frontend codebase Frontend Guide
Add a new playground device type Add a Device
Add a new sport type Add a Sport Type
Add a new filter option Frontend Guide → Adding a new filter
Understand the OSM import pipeline Import Pipeline
Write or run tests Testing Guide
Translate the app (Weblate) Translator Instructions
Understand the translation workflow Translation Workflow
Cut a release or upgrade dependencies Maintainer Guide

Reference

Topic Go to…
System architecture & deployment modes Architecture
PostgREST API endpoints API Reference
Hub federation protocol Federation
registry.json schema Registry JSON
Tech stack (with versions and rationale) Tech Stack
External services used at runtime External Services
OSM and project terminology Glossary
Project overview (AI context) Project Overview
Annotated source tree Source Tree Analysis
Architecture Decision Records ADR-0001 OpenSpec sharing policy