SecAuth is a modern, feature-rich two-factor authentication (2FA) app built with React Native and Expo. It provides a secure and user-friendly interface for managing all your 2FA accounts with advanced features like email integration, cloud synchronization, and intelligent account management.
- Contact-style Account View: Display all 2FA accounts in an intuitive, contact-like list interface
- Real-time Code Generation: Generate TOTP, HOTP, and Steam authentication codes with live countdown timers
- Multiple Entry Methods: Add accounts via QR code scanning or manual entry
- Copy & Share: One-tap code copying with haptic feedback
- Smart Email Parsing: Automatically extract 2FA setup information from emails
- Email Account Binding: Connect email accounts for automatic account discovery
- Confirmation Handling: Handle email confirmations directly within the app
- TODO-style Management: Mark and remove temporary email-based codes when no longer needed
- Advanced Search: Find accounts by name, email, or service provider
- Category Filtering: Organize accounts by categories (Social, Work, Finance, etc.)
- Smart Categorization: Automatic categorization based on service type
- Quick Actions: Fast access to frequently used accounts
- Theme Support: Dark and light mode with automatic system detection
- Custom Categories: Create and manage custom account categories
- Security Settings: Configure app lock, biometric authentication, and backup options
- Notification Controls: Manage alerts and reminders
- WebDAV Support: Sync data using WebDAV-compatible services
- Cloud Storage Integration: Support for popular cloud storage providers
- Cross-device Sync: Seamlessly access accounts across multiple devices
- Conflict Resolution: Smart handling of sync conflicts and data merging
Screenshots will be added soon
- Node.js (v18 or higher)
- npm or yarn
- Expo CLI
- iOS Simulator or Android Emulator (or physical device)
-
Clone the repository
git clone https://github.com/DevExzh/secauth.git cd secauth -
Install dependencies
npm install # or yarn install -
Start the development server
npm start # or yarn start -
Run on your preferred platform
# iOS npm run ios # Android npm run android # Web npm run web
- Framework: React Native 0.79.2
- Development Platform: Expo ~53.0.7
- Language: TypeScript ~5.8.3
- Navigation: Expo Router ~5.0.5
- Styling: NativeWind (Tailwind CSS) ~4.1.23
- Animations: React Native Reanimated ~3.17.4
- State Management: React Hooks + Context API
- OTP Generation: Native C++/Swift implementation for high performance
- Camera & QR:
expo-camera - Security:
expo-secure-store - UI Components:
lucide-react-native,react-native-svg - Utilities:
expo-clipboard,expo-haptics,expo-linking - Native Modules: Custom C++/Swift modules for cryptography and OTP generation
SecAuth uses a high-performance native implementation for OTP generation:
- Multi-Algorithm Support: TOTP, HOTP, mOTP, and Steam Guard
- Cross-Platform: Native C++ (Android) and Swift (iOS) implementations
- Secure: Hardware-accelerated cryptographic operations
- Fast: Sub-millisecond code generation
- Standards Compliant: RFC 4226 (HOTP) and RFC 6238 (TOTP)
Supported OTP Types:
- TOTP (Time-based): Standard 30-second time-based codes
- HOTP (Counter-based): Counter-incremented codes
- mOTP (Mobile OTP): PIN-based mobile OTP with configurable periods
- Steam Guard: Steam's proprietary 5-character alphanumeric codes
secauth/
βββ app/ # Expo Router app directory
β βββ (tabs)/ # Main app tabs
β β βββ index.tsx # Home screen (account list)
β β βββ add.tsx # Add account screen
β β βββ profile.tsx # Profile & settings
β βββ _layout.tsx # Root layout
βββ components/ # Reusable components
β βββ AccountCard.tsx # Individual account display
β βββ QRScanner.tsx # QR code scanning
β βββ SearchBar.tsx # Search functionality
β βββ CategoryFilter.tsx # Category filtering
β βββ EmailIntegrationScreen.tsx # Email integration
β βββ CloudSyncSettings.tsx # Cloud sync configuration
β βββ ui/ # Basic UI components
βββ services/ # Business logic services
β βββ otpService.ts # Native OTP code generation (TOTP/HOTP/mOTP/Steam)
β βββ emailService.ts # Email integration
β βββ accountService.ts # Account management
βββ modules/ # Native modules
β βββ crypto-native/ # Native cryptography module
β βββ otp-native/ # Native OTP generation module
βββ utils/ # Utility functions
β βββ totpParser.ts # TOTP URL parsing
βββ types/ # TypeScript type definitions
βββ constants/ # App constants and configuration
βββ hooks/ # Custom React hooks
-
Via QR Code
- Tap the "+" button in the app
- Select "Scan QR Code"
- Point camera at the QR code
- Account will be automatically added
-
Manual Entry
- Tap the "+" button
- Select "Manual Entry"
- Fill in account details (name, secret key, etc.)
- Configure TOTP/HOTP settings if needed
-
Connect Email Account
- Go to Profile > Email Settings
- Add your email provider credentials
- Configure sync frequency
-
Automatic Account Detection
- The app scans for 2FA setup emails
- New accounts are automatically extracted and added
- Confirmation emails can be handled directly in-app
-
Setup WebDAV
- Navigate to Profile > Cloud Sync
- Enter WebDAV server details
- Test connection and enable sync
-
Configure Sync Settings
- Set sync frequency (manual, hourly, daily)
- Choose conflict resolution strategy
- Enable/disable specific data types
SecAuth uses GitHub Actions for automated building and releasing:
- Triggers: Push to
release/**branches or manual workflow dispatch - Multi-Architecture Android: Builds APKs for arm64-v8a, armeabi-v7a, and x86_64
- iOS Support: Builds production-ready IPA files
- Automatic Changelog: Generates changelogs from git commits
- GitHub Releases: Creates releases with downloadable artifacts
-
Create a release branch:
git checkout -b release/v1.0.0 git push origin release/v1.0.0
-
The workflow automatically:
- Builds Android APKs for all architectures
- Builds iOS IPA
- Generates changelog
- Creates GitHub release with tag
v1.0.0
# Generate changelog
npm run changelog
# Build for specific platforms
npm run build:android # Android only
npm run build:ios # iOS only
npm run build:all # Both platforms
# Development builds
npm run build:dev # Development builds
npm run build:preview # Preview buildsFor detailed release instructions, see docs/RELEASE.md.
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and ensure tests pass
- Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
- Follow the existing code style and conventions
- Add TypeScript types for all new code
- Write unit tests for new features
- Update documentation as needed
- Test on both iOS and Android platforms
SecAuth takes security seriously:
- Local Storage: All sensitive data is stored using Expo SecureStore
- No Cloud Data: By default, no data is transmitted to external servers
- Optional Sync: Cloud sync is entirely optional and user-controlled
- Open Source: Full transparency with open-source code
This project is licensed under the MIT License. See the LICENSE file for details.
- Built with Expo and React Native
- Icons by Lucide
- Inspired by popular authenticator apps and community feedback
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: Wiki