Minimum viable frontend
Add server-side events and socket.io