I looked at the login functionality in GitHub browser. It is pretty easy to follow, and works well. There is one thing though. The UserModel is injected and available in the same scope as the logged in screens. That means that even though you cannot access the logged in screens before you have actually logged in, those screens are going to see the UserModel changing values as you type in the login screen. That feels wrong to me. I think it should use a separate scope for the LoginScreen and then update the UserModel in the actual logged in parts of the application after a successful login. I think that is a more sound, although slightly more involved process. Maybe I can find a way to show both. Start with the way it's done in the GitHub demo and then evolve that into the better version perhaps.