Skip to main content

How we build

One platform behind every app we make

PastPing, Hauntifi and ShadowPlaces are three subjects on one shared platform. Here is how it works, and why it matters for the apps you trust.

The platform

Three apps, one engine

The Proximity Apps share the same mapping, search and points-of-interest engine. Each app has its own name, branding, content and audience, but they share an ingestion pipeline, a catalogue and a codebase.

A feature built for one app arrives in all three, and adding a new subject is a configuration exercise rather than a new product.

  • Configured, not rebuilt

    The web address or the mobile build decides which app you see. Branding, themes, labels, navigation and feature flags are data, not code.

  • One ingestion pipeline

    A metadata-driven pipeline brings places and stories into a single shared catalogue instead of a separate one per app.

  • Shared catalogue and search

    Landmarks, reported sightings and case locations live in one catalogue, so maps and search behave the same everywhere.

Storytelling

Narration that is generated, not hand-recorded

The apps tell stories: audio narration, written text and photos about the places near you that match your interests.

An AI content pipeline writes the prose with Azure OpenAI and turns it into spoken narration with Azure Speech. Generating the content lets the apps cover the long tail of places that a hand-built catalogue could never reach.

Infrastructure

Built on Microsoft Azure

The backend runs as gRPC services, with Azure Table Storage for data and Blob Storage for media. Sign-in uses Microsoft Entra External ID.

This website follows the same habits: pages are prerendered and served from Azure Static Web Apps, accessibility and colour contrast are checked automatically on every change, and no third-party script loads until you agree to it.

How we work

The habits behind the code

  • Data over special cases

    New subjects and settings are configuration wherever possible, so one improvement reaches every app.

  • Accessible by default

    Keyboard support, readable contrast and reduced motion are tested automatically, not left to a final checklist.

  • Honest about status

    Our apps are in development and we say so. There are no download buttons until there is something to download.

See the apps built on it

Three subjects on one platform, with more to come.