Halfstreet

A gothic text adventure. Second person, present tense, sparse — never explains.

Style anchors: Le Fanu's Carmilla, Shirley Jackson's The Haunting of Hill House, M.R. James's ghost stories.

Played at halfstreet.io.

Stack

  • Astro static site
  • TypeScript engine — pure (no DOM, Date, Math.random, or console)
  • World content authored in markdown (rooms, items, encounters, endings) under src/world/
  • Vitest for tests
  • Optional client error reporting via GlitchTip using PUBLIC_GLITCHTIP_DSN

Development

npm install
npm test          # engine + world tests
npm run dev       # local dev server
npm run build     # type-check + production build

To enable GlitchTip in the browser, set PUBLIC_GLITCHTIP_DSN in your environment before running or building the site. If you want deploy-aware grouping and readable stack traces, also set PUBLIC_GLITCHTIP_RELEASE at build time and upload the generated source maps for that same release.

Layout

  • src/engine/ — parser, dispatcher, encounter logic
  • src/ui/ — terminal renderer, theme, chips
  • src/world/ — markdown content (rooms, items, encounters, endings)
  • src/pages/index.astro — entry page

Design docs

  • docs/superpowers/specs/halfstreet-bible.md — content bible (canonical world)
  • docs/superpowers/specs/2026-05-08-mystery-text-adventure-design.md — engine/UI architecture
  • docs/superpowers/specs/halfstreet-followon-notes.md — pending engine work before authoring more rooms
  • docs/superpowers/specs/2026-05-09-mystery-markdown-migration-design.md — markdown content migration design
  • docs/superpowers/plans/2026-05-09-mystery-markdown-migration.md — migration plan that was executed

License

GPL-3.0-or-later. See LICENSE.

S
Description
An old-school text adventure straight out of 1985.
https://halfstreet.io
Readme GPL-3.0 3.3 MiB
Languages
TypeScript 92.3%
CSS 4.5%
Astro 3.1%