Repository files navigation

logo

MyAuthenticator

A serverless progressive web application that generates TOTP and HOTP codes, offering robust two-factor authentication (2FA) directly within your browser.

Nuxt 4 BadgeNuxtHub BadgeNuxtUi BadgeCloudflare Pages BadgeTypescript BadgeDrizzle BadgeTailwindcss Badge

Live Demo

Demo Site

  • Credentials: admin - Admin@123$

Deploy 🚀

Deploy to NuxtHub

Note

This project is currently under testing and improvements. Please back up your data before proceeding.

You can deploy this project on your Cloudflare account for free with zero configuration using NuxtHub. You can use either the NuxtHub CLI or the NuxtHub Admin Web UI. Simply select your GitHub account, set the required environment variables, and you're done. You now have your own authenticator.

Features 🔥

🚀 Serverless: Fully leverages edge support, eliminating the need for server maintenance. Deploy on Cloudflare Pages for free.

⚙️ Compatibility: Supports TOTP (Time-Based One-Time Password) and HOTP (HMAC-Based One-Time Password), widely used for two-factor authentication.

☀️ Theming: Built with Nuxt UI v3, offering light and dark themes with customizable accent colors and more.

💫 Icons: Fetches icons directly from Iconify, providing a vast collection from various icon sets.

🔐 Secure: Utilizes nuxt-auth-utils for authentication, supports passkeys for secure access, and encrypts database fields for enhanced security.

🗃️ Backup / Restore: Securely backup and restore authenticators with encryption seamlessly.

Screenshots 📱

Environment Variables

# required
NUXT_SESSION_PASSWORD="your-32-char-super-long-secret-for-session-encryption"
NUXT_AUTH_USERNAME="admin"
NUXT_AUTH_PASSWORD="Admin@123$"# optional
NUXT_DB_ENCRYPTION_PASSWORD="your-32-char-super-long-secret-for-db-encryption"

Required Variables

  • NUXT_SESSION_PASSWORD: This password is used by nuxt-auth-utils to secure your session. It must be at least 32 characters long.

  • NUXT_AUTH_USERNAME: The username for authentication. It must be at least 5 characters long.

  • NUXT_AUTH_PASSWORD: The password for authentication. It must be at least 8 characters long and include:

    • One uppercase letter
    • One digit
    • One lowercase letter
    • Two special characters

Optional Variables

  • NUXT_DB_ENCRYPTION_PASSWORD: This password is used to encrypt and decrypt the database field of secretkey. By default, no encryption is used for data stored in the database. You can enable encryption by setting this variable. It must be exactly 32 characters long.

Contributing and Suggestions

Feel free to contribute to this project with your ideas and improvements. Your feedback and suggestions are highly valued and will help enhance this project further.

License

MyAuthenticator is Free Software: You can use, study, share, and improve it at your will. Specifically, you can redistribute and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

About

A serverless progressive web application that generates TOTP and HOTP codes, enabling robust two-factor authentication (2FA) directly within your browser. Powered by Nuxt 4, NuxtHub, NuxtUI 3, Cloudflare Pages, D1 Database, and Drizzle ORM.

Topics

Resources

Stars

73 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

logo

MyAuthenticator

A serverless progressive web application that generates TOTP and HOTP codes, offering robust two-factor authentication (2FA) directly within your browser.

Nuxt 4 BadgeNuxtHub BadgeNuxtUi BadgeCloudflare Pages BadgeTypescript BadgeDrizzle BadgeTailwindcss Badge

Live Demo

Demo Site

  • Credentials: admin - Admin@123$

Deploy 🚀

Deploy to NuxtHub

Note

This project is currently under testing and improvements. Please back up your data before proceeding.

You can deploy this project on your Cloudflare account for free with zero configuration using NuxtHub. You can use either the NuxtHub CLI or the NuxtHub Admin Web UI. Simply select your GitHub account, set the required environment variables, and you're done. You now have your own authenticator.

Features 🔥

🚀 Serverless: Fully leverages edge support, eliminating the need for server maintenance. Deploy on Cloudflare Pages for free.

⚙️ Compatibility: Supports TOTP (Time-Based One-Time Password) and HOTP (HMAC-Based One-Time Password), widely used for two-factor authentication.

☀️ Theming: Built with Nuxt UI v3, offering light and dark themes with customizable accent colors and more.

💫 Icons: Fetches icons directly from Iconify, providing a vast collection from various icon sets.

🔐 Secure: Utilizes nuxt-auth-utils for authentication, supports passkeys for secure access, and encrypts database fields for enhanced security.

🗃️ Backup / Restore: Securely backup and restore authenticators with encryption seamlessly.

Screenshots 📱

Environment Variables

# required
NUXT_SESSION_PASSWORD="your-32-char-super-long-secret-for-session-encryption"
NUXT_AUTH_USERNAME="admin"
NUXT_AUTH_PASSWORD="Admin@123$"# optional
NUXT_DB_ENCRYPTION_PASSWORD="your-32-char-super-long-secret-for-db-encryption"

Required Variables

  • NUXT_SESSION_PASSWORD: This password is used by nuxt-auth-utils to secure your session. It must be at least 32 characters long.

  • NUXT_AUTH_USERNAME: The username for authentication. It must be at least 5 characters long.

  • NUXT_AUTH_PASSWORD: The password for authentication. It must be at least 8 characters long and include:

    • One uppercase letter
    • One digit
    • One lowercase letter
    • Two special characters

Optional Variables

  • NUXT_DB_ENCRYPTION_PASSWORD: This password is used to encrypt and decrypt the database field of secretkey. By default, no encryption is used for data stored in the database. You can enable encryption by setting this variable. It must be exactly 32 characters long.

Contributing and Suggestions

Feel free to contribute to this project with your ideas and improvements. Your feedback and suggestions are highly valued and will help enhance this project further.

License

MyAuthenticator is Free Software: You can use, study, share, and improve it at your will. Specifically, you can redistribute and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

About

A serverless progressive web application that generates TOTP and HOTP codes, enabling robust two-factor authentication (2FA) directly within your browser. Powered by Nuxt 4, NuxtHub, NuxtUI 3, Cloudflare Pages, D1 Database, and Drizzle ORM.

Topics

Resources

Stars

73 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

logo

MyAuthenticator

A serverless progressive web application that generates TOTP and HOTP codes, offering robust two-factor authentication (2FA) directly within your browser.

Nuxt 4 BadgeNuxtHub BadgeNuxtUi BadgeCloudflare Pages BadgeTypescript BadgeDrizzle BadgeTailwindcss Badge

Live Demo

Demo Site

  • Credentials: admin - Admin@123$

Deploy 🚀

Deploy to NuxtHub

Note

This project is currently under testing and improvements. Please back up your data before proceeding.

You can deploy this project on your Cloudflare account for free with zero configuration using NuxtHub. You can use either the NuxtHub CLI or the NuxtHub Admin Web UI. Simply select your GitHub account, set the required environment variables, and you're done. You now have your own authenticator.

Features 🔥

🚀 Serverless: Fully leverages edge support, eliminating the need for server maintenance. Deploy on Cloudflare Pages for free.

⚙️ Compatibility: Supports TOTP (Time-Based One-Time Password) and HOTP (HMAC-Based One-Time Password), widely used for two-factor authentication.

☀️ Theming: Built with Nuxt UI v3, offering light and dark themes with customizable accent colors and more.

💫 Icons: Fetches icons directly from Iconify, providing a vast collection from various icon sets.

🔐 Secure: Utilizes nuxt-auth-utils for authentication, supports passkeys for secure access, and encrypts database fields for enhanced security.

🗃️ Backup / Restore: Securely backup and restore authenticators with encryption seamlessly.

Screenshots 📱

Environment Variables

# required
NUXT_SESSION_PASSWORD="your-32-char-super-long-secret-for-session-encryption"
NUXT_AUTH_USERNAME="admin"
NUXT_AUTH_PASSWORD="Admin@123$"# optional
NUXT_DB_ENCRYPTION_PASSWORD="your-32-char-super-long-secret-for-db-encryption"

Required Variables

  • NUXT_SESSION_PASSWORD: This password is used by nuxt-auth-utils to secure your session. It must be at least 32 characters long.

  • NUXT_AUTH_USERNAME: The username for authentication. It must be at least 5 characters long.

  • NUXT_AUTH_PASSWORD: The password for authentication. It must be at least 8 characters long and include:

    • One uppercase letter
    • One digit
    • One lowercase letter
    • Two special characters

Optional Variables

  • NUXT_DB_ENCRYPTION_PASSWORD: This password is used to encrypt and decrypt the database field of secretkey. By default, no encryption is used for data stored in the database. You can enable encryption by setting this variable. It must be exactly 32 characters long.

Contributing and Suggestions

Feel free to contribute to this project with your ideas and improvements. Your feedback and suggestions are highly valued and will help enhance this project further.

License

MyAuthenticator is Free Software: You can use, study, share, and improve it at your will. Specifically, you can redistribute and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

About

A serverless progressive web application that generates TOTP and HOTP codes, enabling robust two-factor authentication (2FA) directly within your browser. Powered by Nuxt 4, NuxtHub, NuxtUI 3, Cloudflare Pages, D1 Database, and Drizzle ORM.

Topics

Resources

Stars

73 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

logo

MyAuthenticator

A serverless progressive web application that generates TOTP and HOTP codes, offering robust two-factor authentication (2FA) directly within your browser.

Nuxt 4 BadgeNuxtHub BadgeNuxtUi BadgeCloudflare Pages BadgeTypescript BadgeDrizzle BadgeTailwindcss Badge

Live Demo

Demo Site

  • Credentials: admin - Admin@123$

Deploy 🚀

Deploy to NuxtHub

Note

This project is currently under testing and improvements. Please back up your data before proceeding.

You can deploy this project on your Cloudflare account for free with zero configuration using NuxtHub. You can use either the NuxtHub CLI or the NuxtHub Admin Web UI. Simply select your GitHub account, set the required environment variables, and you're done. You now have your own authenticator.

Features 🔥

🚀 Serverless: Fully leverages edge support, eliminating the need for server maintenance. Deploy on Cloudflare Pages for free.

⚙️ Compatibility: Supports TOTP (Time-Based One-Time Password) and HOTP (HMAC-Based One-Time Password), widely used for two-factor authentication.

☀️ Theming: Built with Nuxt UI v3, offering light and dark themes with customizable accent colors and more.

💫 Icons: Fetches icons directly from Iconify, providing a vast collection from various icon sets.

🔐 Secure: Utilizes nuxt-auth-utils for authentication, supports passkeys for secure access, and encrypts database fields for enhanced security.

🗃️ Backup / Restore: Securely backup and restore authenticators with encryption seamlessly.

Screenshots 📱

Environment Variables

# required
NUXT_SESSION_PASSWORD="your-32-char-super-long-secret-for-session-encryption"
NUXT_AUTH_USERNAME="admin"
NUXT_AUTH_PASSWORD="Admin@123$"# optional
NUXT_DB_ENCRYPTION_PASSWORD="your-32-char-super-long-secret-for-db-encryption"

Required Variables

  • NUXT_SESSION_PASSWORD: This password is used by nuxt-auth-utils to secure your session. It must be at least 32 characters long.

  • NUXT_AUTH_USERNAME: The username for authentication. It must be at least 5 characters long.

  • NUXT_AUTH_PASSWORD: The password for authentication. It must be at least 8 characters long and include:

    • One uppercase letter
    • One digit
    • One lowercase letter
    • Two special characters

Optional Variables

  • NUXT_DB_ENCRYPTION_PASSWORD: This password is used to encrypt and decrypt the database field of secretkey. By default, no encryption is used for data stored in the database. You can enable encryption by setting this variable. It must be exactly 32 characters long.

Contributing and Suggestions

Feel free to contribute to this project with your ideas and improvements. Your feedback and suggestions are highly valued and will help enhance this project further.

License

MyAuthenticator is Free Software: You can use, study, share, and improve it at your will. Specifically, you can redistribute and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

About

A serverless progressive web application that generates TOTP and HOTP codes, enabling robust two-factor authentication (2FA) directly within your browser. Powered by Nuxt 4, NuxtHub, NuxtUI 3, Cloudflare Pages, D1 Database, and Drizzle ORM.

Topics

Resources

Stars

73 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

logo

MyAuthenticator

A serverless progressive web application that generates TOTP and HOTP codes, offering robust two-factor authentication (2FA) directly within your browser.

Nuxt 4 BadgeNuxtHub BadgeNuxtUi BadgeCloudflare Pages BadgeTypescript BadgeDrizzle BadgeTailwindcss Badge

Live Demo

Demo Site

  • Credentials: admin - Admin@123$

Deploy 🚀

Deploy to NuxtHub

Note

This project is currently under testing and improvements. Please back up your data before proceeding.

You can deploy this project on your Cloudflare account for free with zero configuration using NuxtHub. You can use either the NuxtHub CLI or the NuxtHub Admin Web UI. Simply select your GitHub account, set the required environment variables, and you're done. You now have your own authenticator.

Features 🔥

🚀 Serverless: Fully leverages edge support, eliminating the need for server maintenance. Deploy on Cloudflare Pages for free.

⚙️ Compatibility: Supports TOTP (Time-Based One-Time Password) and HOTP (HMAC-Based One-Time Password), widely used for two-factor authentication.

☀️ Theming: Built with Nuxt UI v3, offering light and dark themes with customizable accent colors and more.

💫 Icons: Fetches icons directly from Iconify, providing a vast collection from various icon sets.

🔐 Secure: Utilizes nuxt-auth-utils for authentication, supports passkeys for secure access, and encrypts database fields for enhanced security.

🗃️ Backup / Restore: Securely backup and restore authenticators with encryption seamlessly.

Screenshots 📱

Environment Variables

# required
NUXT_SESSION_PASSWORD="your-32-char-super-long-secret-for-session-encryption"
NUXT_AUTH_USERNAME="admin"
NUXT_AUTH_PASSWORD="Admin@123$"# optional
NUXT_DB_ENCRYPTION_PASSWORD="your-32-char-super-long-secret-for-db-encryption"

Required Variables

  • NUXT_SESSION_PASSWORD: This password is used by nuxt-auth-utils to secure your session. It must be at least 32 characters long.

  • NUXT_AUTH_USERNAME: The username for authentication. It must be at least 5 characters long.

  • NUXT_AUTH_PASSWORD: The password for authentication. It must be at least 8 characters long and include:

    • One uppercase letter
    • One digit
    • One lowercase letter
    • Two special characters

Optional Variables

  • NUXT_DB_ENCRYPTION_PASSWORD: This password is used to encrypt and decrypt the database field of secretkey. By default, no encryption is used for data stored in the database. You can enable encryption by setting this variable. It must be exactly 32 characters long.

Contributing and Suggestions

Feel free to contribute to this project with your ideas and improvements. Your feedback and suggestions are highly valued and will help enhance this project further.

License

MyAuthenticator is Free Software: You can use, study, share, and improve it at your will. Specifically, you can redistribute and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

About

A serverless progressive web application that generates TOTP and HOTP codes, enabling robust two-factor authentication (2FA) directly within your browser. Powered by Nuxt 4, NuxtHub, NuxtUI 3, Cloudflare Pages, D1 Database, and Drizzle ORM.

Topics

Resources

Stars

73 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

logo

MyAuthenticator

A serverless progressive web application that generates TOTP and HOTP codes, offering robust two-factor authentication (2FA) directly within your browser.

Nuxt 4 BadgeNuxtHub BadgeNuxtUi BadgeCloudflare Pages BadgeTypescript BadgeDrizzle BadgeTailwindcss Badge

Live Demo

Demo Site

  • Credentials: admin - Admin@123$

Deploy 🚀

Deploy to NuxtHub

Note

This project is currently under testing and improvements. Please back up your data before proceeding.

You can deploy this project on your Cloudflare account for free with zero configuration using NuxtHub. You can use either the NuxtHub CLI or the NuxtHub Admin Web UI. Simply select your GitHub account, set the required environment variables, and you're done. You now have your own authenticator.

Features 🔥

🚀 Serverless: Fully leverages edge support, eliminating the need for server maintenance. Deploy on Cloudflare Pages for free.

⚙️ Compatibility: Supports TOTP (Time-Based One-Time Password) and HOTP (HMAC-Based One-Time Password), widely used for two-factor authentication.

☀️ Theming: Built with Nuxt UI v3, offering light and dark themes with customizable accent colors and more.

💫 Icons: Fetches icons directly from Iconify, providing a vast collection from various icon sets.

🔐 Secure: Utilizes nuxt-auth-utils for authentication, supports passkeys for secure access, and encrypts database fields for enhanced security.

🗃️ Backup / Restore: Securely backup and restore authenticators with encryption seamlessly.

Screenshots 📱

Environment Variables

# required
NUXT_SESSION_PASSWORD="your-32-char-super-long-secret-for-session-encryption"
NUXT_AUTH_USERNAME="admin"
NUXT_AUTH_PASSWORD="Admin@123$"# optional
NUXT_DB_ENCRYPTION_PASSWORD="your-32-char-super-long-secret-for-db-encryption"

Required Variables

  • NUXT_SESSION_PASSWORD: This password is used by nuxt-auth-utils to secure your session. It must be at least 32 characters long.

  • NUXT_AUTH_USERNAME: The username for authentication. It must be at least 5 characters long.

  • NUXT_AUTH_PASSWORD: The password for authentication. It must be at least 8 characters long and include:

    • One uppercase letter
    • One digit
    • One lowercase letter
    • Two special characters

Optional Variables

  • NUXT_DB_ENCRYPTION_PASSWORD: This password is used to encrypt and decrypt the database field of secretkey. By default, no encryption is used for data stored in the database. You can enable encryption by setting this variable. It must be exactly 32 characters long.

Contributing and Suggestions

Feel free to contribute to this project with your ideas and improvements. Your feedback and suggestions are highly valued and will help enhance this project further.

License

MyAuthenticator is Free Software: You can use, study, share, and improve it at your will. Specifically, you can redistribute and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

About

A serverless progressive web application that generates TOTP and HOTP codes, enabling robust two-factor authentication (2FA) directly within your browser. Powered by Nuxt 4, NuxtHub, NuxtUI 3, Cloudflare Pages, D1 Database, and Drizzle ORM.

Topics

Resources

Stars

73 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

logo

MyAuthenticator

A serverless progressive web application that generates TOTP and HOTP codes, offering robust two-factor authentication (2FA) directly within your browser.

Nuxt 4 BadgeNuxtHub BadgeNuxtUi BadgeCloudflare Pages BadgeTypescript BadgeDrizzle BadgeTailwindcss Badge

Live Demo

Demo Site

  • Credentials: admin - Admin@123$

Deploy 🚀

Deploy to NuxtHub

Note

This project is currently under testing and improvements. Please back up your data before proceeding.

You can deploy this project on your Cloudflare account for free with zero configuration using NuxtHub. You can use either the NuxtHub CLI or the NuxtHub Admin Web UI. Simply select your GitHub account, set the required environment variables, and you're done. You now have your own authenticator.

Features 🔥

🚀 Serverless: Fully leverages edge support, eliminating the need for server maintenance. Deploy on Cloudflare Pages for free.

⚙️ Compatibility: Supports TOTP (Time-Based One-Time Password) and HOTP (HMAC-Based One-Time Password), widely used for two-factor authentication.

☀️ Theming: Built with Nuxt UI v3, offering light and dark themes with customizable accent colors and more.

💫 Icons: Fetches icons directly from Iconify, providing a vast collection from various icon sets.

🔐 Secure: Utilizes nuxt-auth-utils for authentication, supports passkeys for secure access, and encrypts database fields for enhanced security.

🗃️ Backup / Restore: Securely backup and restore authenticators with encryption seamlessly.

Screenshots 📱

Environment Variables

# required
NUXT_SESSION_PASSWORD="your-32-char-super-long-secret-for-session-encryption"
NUXT_AUTH_USERNAME="admin"
NUXT_AUTH_PASSWORD="Admin@123$"# optional
NUXT_DB_ENCRYPTION_PASSWORD="your-32-char-super-long-secret-for-db-encryption"

Required Variables

  • NUXT_SESSION_PASSWORD: This password is used by nuxt-auth-utils to secure your session. It must be at least 32 characters long.

  • NUXT_AUTH_USERNAME: The username for authentication. It must be at least 5 characters long.

  • NUXT_AUTH_PASSWORD: The password for authentication. It must be at least 8 characters long and include:

    • One uppercase letter
    • One digit
    • One lowercase letter
    • Two special characters

Optional Variables

  • NUXT_DB_ENCRYPTION_PASSWORD: This password is used to encrypt and decrypt the database field of secretkey. By default, no encryption is used for data stored in the database. You can enable encryption by setting this variable. It must be exactly 32 characters long.

Contributing and Suggestions

Feel free to contribute to this project with your ideas and improvements. Your feedback and suggestions are highly valued and will help enhance this project further.

License

MyAuthenticator is Free Software: You can use, study, share, and improve it at your will. Specifically, you can redistribute and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

About

A serverless progressive web application that generates TOTP and HOTP codes, enabling robust two-factor authentication (2FA) directly within your browser. Powered by Nuxt 4, NuxtHub, NuxtUI 3, Cloudflare Pages, D1 Database, and Drizzle ORM.

Topics

Resources

Stars

73 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

logo

MyAuthenticator

A serverless progressive web application that generates TOTP and HOTP codes, offering robust two-factor authentication (2FA) directly within your browser.

Nuxt 4 BadgeNuxtHub BadgeNuxtUi BadgeCloudflare Pages BadgeTypescript BadgeDrizzle BadgeTailwindcss Badge

Live Demo

Demo Site

  • Credentials: admin - Admin@123$

Deploy 🚀

Deploy to NuxtHub

Note

This project is currently under testing and improvements. Please back up your data before proceeding.

You can deploy this project on your Cloudflare account for free with zero configuration using NuxtHub. You can use either the NuxtHub CLI or the NuxtHub Admin Web UI. Simply select your GitHub account, set the required environment variables, and you're done. You now have your own authenticator.

Features 🔥

🚀 Serverless: Fully leverages edge support, eliminating the need for server maintenance. Deploy on Cloudflare Pages for free.

⚙️ Compatibility: Supports TOTP (Time-Based One-Time Password) and HOTP (HMAC-Based One-Time Password), widely used for two-factor authentication.

☀️ Theming: Built with Nuxt UI v3, offering light and dark themes with customizable accent colors and more.

💫 Icons: Fetches icons directly from Iconify, providing a vast collection from various icon sets.

🔐 Secure: Utilizes nuxt-auth-utils for authentication, supports passkeys for secure access, and encrypts database fields for enhanced security.

🗃️ Backup / Restore: Securely backup and restore authenticators with encryption seamlessly.

Screenshots 📱

Environment Variables

# required
NUXT_SESSION_PASSWORD="your-32-char-super-long-secret-for-session-encryption"
NUXT_AUTH_USERNAME="admin"
NUXT_AUTH_PASSWORD="Admin@123$"# optional
NUXT_DB_ENCRYPTION_PASSWORD="your-32-char-super-long-secret-for-db-encryption"

Required Variables

  • NUXT_SESSION_PASSWORD: This password is used by nuxt-auth-utils to secure your session. It must be at least 32 characters long.

  • NUXT_AUTH_USERNAME: The username for authentication. It must be at least 5 characters long.

  • NUXT_AUTH_PASSWORD: The password for authentication. It must be at least 8 characters long and include:

    • One uppercase letter
    • One digit
    • One lowercase letter
    • Two special characters

Optional Variables

  • NUXT_DB_ENCRYPTION_PASSWORD: This password is used to encrypt and decrypt the database field of secretkey. By default, no encryption is used for data stored in the database. You can enable encryption by setting this variable. It must be exactly 32 characters long.

Contributing and Suggestions

Feel free to contribute to this project with your ideas and improvements. Your feedback and suggestions are highly valued and will help enhance this project further.

License

MyAuthenticator is Free Software: You can use, study, share, and improve it at your will. Specifically, you can redistribute and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

About

A serverless progressive web application that generates TOTP and HOTP codes, enabling robust two-factor authentication (2FA) directly within your browser. Powered by Nuxt 4, NuxtHub, NuxtUI 3, Cloudflare Pages, D1 Database, and Drizzle ORM.

Topics

Resources

Stars

73 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages