# PB Authenticator
A modern, open-source two-factor authentication (2FA) app built with Flutter. PB Authenticator supports TOTP, QR code scanning, secure local storage, and a beautiful, customizable UI. Now with full Persian (Farsi) language support, RTL layout, and the Vazirmatn font for a seamless experience for Persian users.
---
## ๐ Features
- **Time-based One-Time Passwords (TOTP)**: Securely generate 2FA codes for your accounts.
- **QR Code Scanning**: Quickly add accounts by scanning QR codes.
- **Manual Entry**: Add accounts manually if QR is not available.
- **Search & Sort**:
- Search accounts by name or issuer
- Sort accounts alphabetically (A-Z or Z-A)
- Real-time filtering with instant results
- **Material Design**: Clean, modern, and responsive UI.
- **Icon Support**: Large collection of SVG icons for popular services.
- **Account Management**: Edit, remove, and organize your 2FA accounts.
- **Export/Import**: Transfer your accounts between devices securely.
- **Security**: PIN code and biometric authentication support.
- **Screen Capture Prevention**: Optional protection against screenshots.
- **Theme Support**: Light, dark, and system themes.
- **Localization**:
- English and Persian (Farsi) language support
- Language switcher in settings
- RTL layout and Vazirmatn font for Persian
- **Cross-Platform**: Runs on Android, iOS, and desktop (Flutter-supported platforms).
---
## ๐ Search & Organization Features
- **Real-time Search**: Instantly filter your accounts as you type
- **Multi-field Search**: Search by account name or service provider/issuer
- **Smart Sorting**: Organize accounts alphabetically in ascending or descending order
- **Search Feedback**: Clear visual feedback when no results are found
- **Quick Clear**: Easily clear search terms with one tap
---
## ๐ Localization & RTL
- **Persian (Farsi) Support**: All UI elements are fully translated.
- **RTL Layout**: The app automatically switches to right-to-left layout and uses the Vazirmatn font when Persian is selected.
- **Language Switcher**: Instantly change the app language from the settings menu.
---
## ๐ผ๏ธ Icon & Asset Support
- Hundreds of SVG icons for popular services (see `graphics/aegis-icons-outline/SVG/`).
- Custom app icon included.
---
## ๐ Security
- All data is stored **locally** on your device.
- PIN code and biometric authentication options.
- Optional prevention of screen capture for sensitive screens.
---
## ๐ฆ Getting Started
### Prerequisites
- [Flutter SDK](https://flutter.dev/docs/get-started/install)
- Android/iOS device or emulator, or desktop (for supported platforms)
### Installation
```sh
flutter pub get
flutter run
```
### Directory Structure
- `lib/` โ Main app code
- `lib/pages/` โ UI pages (settings, add, import/export, etc.)
- `lib/l10n/` โ Localization files (ARB, generated Dart)
- `graphics/` โ App icons and SVG icon set
- `assets/fonts/` โ Custom fonts (Vazirmatn)
- `test/`, `state/test/`, `totp/test/` โ Unit and widget tests
---
## ๐งช Testing
Run all tests:
```sh
flutter test
```
---
## ๐ค Contributing
Contributions, issues, and feature requests are welcome!
- Fork the repo
- Create your feature branch (`git checkout -b feature/your-feature`)
- Commit your changes (`git commit -am 'Add new feature'`)
- Push to the branch (`git push origin feature/your-feature`)
- Open a pull request
---
## ๐ License
This project is licensed under the MIT License โ see the [LICENSE](LICENSE) file for details.
---
## ๐ Credits
- [Vazirmatn Font](https://github.com/rastikerdar/vazirmatn) by [rastikerdar](https://github.com/rastikerdar)
- [Aegis Simple Icons Outlined](https://github.com/michaelschattgen/aegis-simple-icons-outlined) by [michaelschattgen](https://github.com/michaelschattgen)
- Flutter and the open-source community
---
## ๐ท Screenshots
| Material Theme |
|----|
|
|
|
|
|
|
|
|
|
|
---
> **Disclaimer:** PB Authenticator is not ready for production. There may be bugs and upgrade issues. Use at your own risk.