โ† Projects
04 / 06 - Kotlin ยท Android ยท Security

Android 2FA
Authenticator

A native Android authenticator app built with Jetpack Compose. Manage multiple authenticator profiles, generate TOTP codes and handle confirmations - all locally, with no third-party servers.

KotlinJetpack Compose Material 3Room HiltDataStore
View on GitHub โ†—
Accounts TOTP Confirmations Detail Settings Add account
Jetpack Compose ยท accounts ยท TOTP ยท confirmations ยท settings

What it does

Uses a standard account file format for easy import. All processing happens locally - no third-party servers, no telemetry.

Built with Jetpack Compose and Material 3, it supports dynamic color theming. Device backups are disabled to prevent credentials appearing in cloud backups.

Key capabilities

01
Multi-account support
Import multiple account profiles. Switch between them instantly.
02
TOTP with countdown
30-second 2FA codes with a visual countdown ring.
03
Confirmation handling
View, accept, or decline confirmations with swipe-to-refresh.
04
Auto session refresh
Silently re-authenticates using stored refresh tokens.
05
Material 3 UI
Dynamic color, dark/light theme. Targets Android 11+ (API 31).

Building from source

Requires Android Studio Ladybug (2024.2+) and JDK 17. Targets API 35, runs on API 31+.

bash
git clone https://github.com/HouwyTwitch/Modern-SDA-Android.git
./gradlew assembleDebug
# โ†’ app/build/outputs/apk/debug/app-debug.apk

Project structure

tree
app/
โ”œโ”€โ”€ data/
โ”‚   โ”œโ”€โ”€ db/          # Room database (accounts)
โ”‚   โ”œโ”€โ”€ model/       # Account, Confirmation, AccountData
โ”‚   โ””โ”€โ”€ repository/  # AccountRepository, ConfirmationRepository
โ”œโ”€โ”€ di/              # Hilt modules
โ”œโ”€โ”€ domain/auth/     # AuthLogin, AuthTotp, AuthConfirmations
โ””โ”€โ”€ ui/
    โ”œโ”€โ”€ screens/     # Accounts, Confirmations, Settings (MVVM)
    โ”œโ”€โ”€ components/  # AccountCard, TotpCodeDisplay
    โ””โ”€โ”€ theme/       # Material 3 theme