How yuefeiduzi/openotp works
openOTP is a local-first desktop TOTP authenticator. The user sets or enters a PIN, manages accounts, and views time-based codes in the main window or tray popover; Settings covers preferences, locking, and backup/import. The graph separates account/code handling, access and preferences, backup formats, and the Tauri desktop/storage layer. README capabilities are included where source excerpts are incomplete; uncertain implementation-level wiring is omitted. Account data and settings are local JSON files, not a database.
Main entry points: lib.rs Tauri commands · Settings.vue Settings screen · accounts.ts Account state · index.ts Route and lock gate
Components 23
App experience
- App bootstrap
src/main.ts - Route and lock gate
src/router/index.ts - Home screen
src/views/Home.vue - Tray popover
src/views/PopoverView.vue - Tray menu
src/views/TrayMenu.vue
Accounts and codes
- Account list
src/components/AccountCodeList.vue - Account editor
src/composables/useAccountEditor.ts - Add account
src/components/AddAccount.vue - TOTP generation
src/utils/otp.ts - Account state
src/stores/accounts.ts - Clipboard helper
src/utils/clipboard.ts
Access and preferences
- PIN setup
src/views/Setup.vue - PIN unlock
src/views/Unlock.vue - Settings screen
src/views/Settings.vue - Settings state
src/stores/settings.ts
Backup and storage
- andOTP import
src/utils/andotp.ts - Backup handling
src/utils/backup.ts
Desktop services
- Tauri commands
src-tauri/src/lib.rs - Local JSON files
src-tauri/src/storage.rs - PIN hashing
src-tauri/src/crypto.rs - Biometric access
src-tauri/src/biometric.rs - Zip backup engine
src-tauri/src/backup.rs
Other components
- User
Connections 30
- User → PIN setup: sets PIN
- User → PIN unlock: enters PIN
- User → Home screen: manages accounts
- User → Settings screen: changes preferences
- App bootstrap → Route and lock gate: mounts routes
- App bootstrap → Settings state: loads setup and settings
- App bootstrap → Account state: loads accounts
- Route and lock gate → Settings state: checks access
- Route and lock gate → PIN setup: routes setup
- Route and lock gate → PIN unlock: routes locked users
- Home screen → Account list: renders
- Tray popover → Account list: renders
- Account list → Account editor: emits account actions
- Account editor → Add account: opens add flow
- Account editor → Account state: mutates accounts
- Account state → TOTP generation: generates codes
- Account state → Tauri commands: loads and saves accounts
- Settings screen → Settings state: updates preferences
- Settings screen → Backup handling: exports and imports
- Settings screen → andOTP import: parses backup
- Settings screen → Account state: imports accounts
- Settings screen → Tauri commands: invokes PIN commands
- PIN unlock → Settings state: checks lock state
- PIN setup → Tauri commands: sets PIN hash
- Tauri commands → Local JSON files: reads and writes JSON
- Tauri commands → PIN hashing: hashes PIN
- Tauri commands → Biometric access: checks biometrics
- Tauri commands → Zip backup engine: handles backup commands
- Account list → Clipboard helper: copies codes
- Tray menu → Tray popover: opens panel