Add a working authentication system and some UX improvement