Monorepo for Wisp.place. A static site hosting service built on top of the AT Protocol.

Wisp.place - Decentralized Static Site Hosting

Architecture Overview

Wisp.Place a two-service application that provides static site hosting on the AT Protocol. Wisp aims to be a CDN for static sites where the content is ultimately owned by the user at their repo. The microservice is responsbile for injesting firehose events and serving a on-disk cache of the latest site files.

Service 1: Main App (Port 8000, Bun runtime, elysia.js)

  • User-facing editor and API
  • OAuth authentication (AT Protocol)
  • File upload processing (gzip + base64 encoding)
  • Domain management (subdomains + custom domains)
  • DNS verification worker
  • React frontend

Service 2: Hosting Service (Port 3001, Node.js runtime, hono.js)

  • AT Protocol Firehose listener for real-time updates
  • Serves hosted websites from local cache
  • Multi-domain routing (custom domains, wisp.place subdomains, sites subdomain)
  • Distributed locking for multi-instance coordination

Tech Stack

  • Backend: Bun/Node.js, Elysia.js, PostgreSQL, AT Protocol SDK
  • Frontend: React 19, Tailwind CSS v4, Shadcn UI

Key Features

  • AT Protocol Integration: Sites stored as place.wisp.fs records in user repos
  • File Processing: Validates, compresses (gzip), encodes (base64), uploads to user's PDS
  • Domain Management: wisp.place subdomains + custom BYOD domains with DNS verification
  • Real-time Sync: Firehose worker listens for site updates and caches files locally
  • Atomic Updates: Safe cache swapping without downtime