Work mallworld
web

Mall World

Catalog and explore the impossible places thousands of people visit in their dreams — then walk them in your browser.

Mall World is a community archive for the recurring dreamscapes people share without ever having met — endless mall corridors, pool labyrinths, staircase voids, the spaces that show up in enough independent journals to feel like real geography. Users upload images, trade journal entries, and collaboratively map locations across themed sub-worlds; a browser-playable game and an interactive Dream Atlas let you walk the archive instead of just reading it, and a federation layer lets independent game servers announce themselves and share logins. PHP 8.3 / MariaDB / vanilla JS, passkey-first auth.

Last updateAug 6, 2026 PrimaryPHP
  • PHP 8.3
  • MariaDB
  • Apache
  • WebAuthn
  • WebSockets
  • Google Cloud Storage
  • OpenRouter
  • Composer
  • Lucide
  • Vanilla JS
Mall World — Catalog and explore the impossible places thousands of people visit in their dreams — then walk them in your browser.
Mall World media
Mall World media

Mall World is a community archive for the places that shouldn't exist but everyone keeps describing the same way — the impossible mall, the endless pool complex, the staircase that goes nowhere and somehow keeps going. The project started as a "wait, you've been there too?" thread and grew into a structured archive: themed sub-worlds, image galleries, dream journals, a shared map of geography that exists only because enough independent dreamers keep stumbling into it — and now a game that lets you walk it.

How the site is organized

  • Sub-worlds — each impossible place gets its own section: Mall World, Pool World, Staircase World, The School, The Airport, plus utility sections (Meta, News, Off-Topic). Each is a self-contained image board + thread space with its own moderators.
  • Dream journals — long-form posts where users record what they remember. Cross-linked when descriptions match, so independent witnesses to the same location surface together.
  • The Dream Atlas — an interactive map of documented dream spaces, built from the archive's own reports. The collaborative tagging that used to live in threads now renders as geography you can browse.
  • The Game — the archive is playable. A browser game (no download) drops you into the documented spaces, with a server directory at /play, live player presence in the site header, and reports feeding the world the way witnesses feed a map.

Federation

Independent game servers can announce themselves to the hub and appear in the public directory, and a passkey bridge lets an account signed up on the hub log into a federated server without a second registration — the hub acts as an identity passport peer, with a mail relay API so federated servers can reach their players. A July security pass tightened the whole surface: WebSocket auth hardening and closing federation account-takeover paths before they were ever exploited.

Tech choices

Server is PHP 8.3 on MariaDB 10.11 behind Apache, no framework — vanilla request routing, plain SQL, plain HTML templating. Frontend is vanilla JavaScript with CSS custom properties; Lucide for icons, Inter and Space Grotesk for type. Live presence rides on WebSockets, uploads land in Google Cloud Storage, and an AI moderation layer screens submissions before human moderators see the queue. Auth is passkey-first via WebAuthn / FIDO2, with a passphrase fallback and rate-limited recovery for the devices passkeys leave behind.

Why this exists

The shared-dream phenomenon is a real, weird thing — Reddit threads, podcast episodes, the "Backrooms" lineage. Most of that lives in fragmented social posts that get buried within a week. Mall World is the attempt to give it an archive that survives — structured enough to be searched (full-text, with filters and flairs), loose enough that weird new sub-worlds can be added the moment someone realises they're in one. Whether you treat the whole thing as folklore, psychology, or sincere reportage, the dataset is interesting on every reading.

Straight from the source

The project's own README.

Rendered in place — every link, image, and code block carried over from the repo. The page below is what a contributor would see opening the project for the first time.

Mall World

Cataloging and exploring the shared dream spaces thousands of people visit in their sleep.

What is Mall World?

Many people independently report visiting the same vast, impossible mall in their dreams — fluorescent lights, endless corridors, stores that don't exist, escalators to nowhere. This phenomenon extends to related spaces like Pool World (endless pool complexes and waterpark labyrinths) and others yet to be documented.

Mall World is a community platform for cataloging, mapping, and discussing these shared dreamscapes. Users can upload images, share dream journals, link related content, and help map dream locations.

Tech Stack

  • Backend: PHP 8.3, Apache 2.4, MariaDB 10.11
  • OS: Ubuntu 24.04 LTS
  • Auth: WebAuthn/FIDO2 (passkey-first, no passwords)
  • Frontend: Vanilla JS, Lucide Icons, CSS custom properties
  • Fonts: Inter, Space Grotesk

Setup

# Install dependencies
composer install --optimize-autoloader

# Configure environment
cp .env.example .env
# Edit .env with your database credentials and app settings

# Run database migrations
php bin/migrate

# Set up Apache virtual host pointing DocumentRoot to public/
# Restart Apache
systemctl restart apache2

Federation and login changes

Running a game server that signs players into the hub? Start with docs/LOGIN-CHANGES.md — the hub tightened which federation requests it accepts on 2026-07-22, and code written before then may be sending requests that are now refused.

Contributing

Contributions welcome. Please follow the existing code conventions (PSR-12, BEM CSS, no frameworks).

License

All rights reserved.

Gallery

The full set.

Build something like this

Want a tool like this for your shop?

We've shipped this kind of thing before. Twenty-minute intro call, no slides.