Things built on eddy

Real apps, live data.
Bring a friend.

Every game here keeps its state in eddy and nowhere else. Open one, send the link to a friend or open it in a second window, and watch both screens change together.

Pick a game

Pixel war

Pick a team and paint. The territory standings move with every pixel, in every window.

pixels → team_territoryPlay Pixel war

Live Q&A

Ask and upvote. The ranked list reorders for the whole room as the votes land.

questions, votes → question_votesPlay Live Q&A

Settlers

A small Catan against friends or bots. Your hand is a view only you can read.

buildings, ledger → hands, scoresPlay Settlers

Kanbanosaurus

A team board with live insights and a slider that reads any moment of its past.

cards, card_events → lane_statsComing to the playground soon

Feel how fast it is

  1. Open a game. You get a room of your own.
  2. Open it again in a second window, or send the link to a friend.
  3. Make a move in one. The other changes a moment later, because both read the same views eddy keeps current.

How it works

1

Writes go in

The app writes rows with Drizzle over eddy’s Postgres wire, like any Postgres database.

2

eddy keeps the views

Each screen is a SQL view. eddy updates it from the change alone, without rerunning the query.

3

Screens follow

Browsers subscribe to the views with a token that only reaches their own room’s rows.

the pixel war scoreboardCREATE MATERIALIZED VIEW team_territory AS
SELECT canvas_id, team, count(*) AS pixels
FROM pixels
GROUP BY canvas_id, team;