Signup page with error handling