Skip to content
/ oathqr Public

📱 Turn your secrets into scannable QR codes. Mirror of OATHqr on Codeberg. 👇

License

Notifications You must be signed in to change notification settings

vhscom/oathqr

Repository files navigation

OATHqr

Turn your secrets into scannable QR codes.

OATHqr helps users create security credentials for use with 2FA/MFA and other OATH-enabled apps. Use it to generate scannable QR codes for one-time password authenticator apps such as Aegis or YubiKey. Or skip the QR code altogether and paste the formatted otpauth URI it creates directly into OpenPGP-activated password managers such as the remarkable Pass standard unix password manager.

Use Cases

  • Ease migration between authenticator solutions.
  • Customize auth URI data and access advanced security features.
  • Enable users to work directly with auth strings to discourage camera use.
  • Discourage users from saving secrets to cleartext files they cannot read.
  • Consolidate account credentials within encrypted password managers.

Highlights

  • Makes no external requests and runs offline-first.
  • Installable to mobile device home screens.
  • Defaults browser to strict Content-Security Policy.
  • Informs users when they are using a trusted origin.
  • Discourages user from saving QR code to a file.
  • Proactively disables FLoC surveillance in Chrome.
  • Provides accessible form for more inclusive design.
  • Promotes ethical software alternatives to Google.
  • Adjusts color scheme based on system preference.
  • Includes native build target with isolation enabled.

Screenshots

OATHqr adapts its colors based on your current system preference:

Prefers Light Prefers Dark
Light Mode Dark Mode

Demo

View the online demo to test it out and see how it works.

Development

Depending on your target environment.

Setup Environment

To ensure compatibility with the lockfile, set up the correct Node.js and pnpm versions:

# Using fnm (Fast Node Manager)
fnm install 16.16.0
fnm use 16.16.0

# Install compatible pnpm version
npm install -g [email protected]

Reference .npmrc file as well package.json for Node project configuration.

Web

Once you've cloned the project install development dependencies:

pnpm install --frozen-lockfile

Then start a development server:

pnpm dev

# or start the server and open the app in a new browser tab
pnpm dev -- --open

See Compatability Notes for help running the non-Rust part of this app.

Native

Once you've cloned the project, completed the Tauri prerequisites and installed development dependencies with pnpm install, start a development server:

pnpm tauri dev

Building

Web

To create a production version of your app:

pnpm build

You can preview the production build with pnpm preview.

Native

To create a native version of your app:

pnpm tauri build

License

OATHqr - Turn your secrets into scannable QR Codes.
Copyright (C) 2022 VHS <[email protected]> (https://vhs.codeberg.page)

OATHqr is made available under the AGPL-3.0-or-later license. See the file COPYING in the source for the complete license text.

Compatability Notes

This project is locked to:

  • Node.js v14.13 - v16.x
  • pnpm v6.x (specifically 6.35.1 recommended)
  • SvelteKit "next" version (pre-1.0)
  • Vite 3.0.4

Leverage lockfile to produce a working build based on compatability matrix.