Add Sinatra backend and WebSockets