Minimal Glassmorphic Studio

EchoDB

Every change has a sound. Compose live database mutations and watch EchoDB translate them into motion and tone.

Status
Live stream via Server-Sent Events
Version
1.0.0
Stack
PHP · PostgreSQL · Vanilla JS

Live Demo

Shape a payload, trigger the database, and witness the visual instrument react in real time.

Mutation Composer

Craft JSON events or tweak the generated samples.

JSON

Visual Instrument

Echo nodes glow as payloads flow from database to UI.

Streaming
Database Echo Engine Clients
Insert 0
Update 0
Delete 0
Events/min 0

Event Timeline

Newest first · tap to inspect

    Architecture

    Glassy nodes reveal how events ripple across EchoDB.

    Database
    PHP Streamer
    Client Studio

    Mutation Capture

    PostgreSQL triggers serialize row level changes. Payloads include before/after diffs and actor metadata.

    Event Broadcast

    A lightweight PHP emitter opens a Server-Sent Events channel, guaranteeing order and low-latency delivery.

    Multisensory Client

    The browser listens, animates the flow diagram, and orchestrates tones via the Web Audio API.

    Docs & API

    Everything you need to instrument your own dataset with EchoDB.

    How it works

    EchoDB listens to PostgreSQL notifications, transforms them into structured JSON events, and streams them to browsers over Server-Sent Events. The client layers animation, stats, and audio to render each change as a sonic signature.

    • Lightweight PHP SSE endpoint
    • Web Audio instrument with tone palettes per mutation
    • Framework-free frontend for GitHub Pages deployments

    REST Endpoints

    GET /echodb/api/events?limit=20
    GET /echodb/api/stream (SSE)
    GET /echodb/api/statsPOST /echodb/api/eventsContent-Type: application/json
    {
      "table": "orders",
      "row_id": 42,
      "type": "update",
      "actor": "cli-bot",
      "changes": {
        "status": "processing",
        "amount": 72.45
      }
    }

    Client Hook

    const stream = new EventSource('/echodb/api/stream');
    stream.addEventListener('update', (event) => {
      const payload = JSON.parse(event.data);
      animate(payload.type);
      playTone(payload.type);
    });