Cool. I created a similar protocol a couple of years ago but it never got beyond a weekend project, see here for a diagram: https://github.com/jtwaleson/vault
The client worked with QR codes so you could login with just your phone. The app would verify authentication using a websocket/long-polling so as soon as you scanned the QR code you'd be logged in. Most banking apps now use a similar technique, which is a good UX imho.