Alex MacCaw
@maccaw
<div>
<h1>Enter passcode</h1>
<input type="text" placeholder="passcode" name="passcode" />
<button onSubmit={() => flowstate.actions.verify_passcode.run({ code: passcode })}>Continue</button>
</div><div>
<h1>Set up authenticator app</h1>
<img src={flowstate.payload.otp_image_source} alt="OTP Image" />
<input type="text" placeholder="Enter OTP" name="code" />
<button onSubmit={() => flowstate.actions.otp_code_verify.run({
otp_code: code,
})}>Continue</button>
</div>Hanko is developed by a Germany-based team and can be used with EU hosting or self-hosted infrastructure. For teams in Europe, this means more control over user data, authentication infrastructure, and long-term vendor dependency.
For teams outside Europe, it simply means open source authentication with strong privacy and security defaults.
Learn how to use Hanko with your favorite framework.
Building a new app from scratch? Cross "Auth" off your list by using a Hanko starter template.
