|
3 | 3 | <img src="https://github.com/Skyost/OpenAuthenticator/raw/main/docs/public/images/logo.svg" alt="Logo" width="120" height="120"> |
4 | 4 | </a> |
5 | 5 |
|
6 | | -<h3 align="center">Open Authenticator</h3> |
| 6 | + <h3>Open Authenticator</h3> |
7 | 7 |
|
8 | | - <p align="center"> |
| 8 | + <p> |
9 | 9 | A cross-platform OTP app, free and open-source. |
10 | 10 | <br /> |
11 | 11 | <a href="https://openauthenticator.app/#download"><strong>Download now »</strong></a> |
12 | 12 | <br /> |
13 | 13 | <br /> |
14 | 14 | <a href="https://openauthenticator.app">Website</a> |
15 | 15 | · |
16 | | - <a href="https://github.com/Skyost/OpenAuthenticator/issues">Issue tracker</a> |
| 16 | + <a href="https://github.com/openauthenticator-app/openauthenticator">App</a> |
17 | 17 | · |
18 | | - <a href="https://github.com/Skyost/OpenAuthenticator/#contribute">Contribute</a> |
| 18 | + <a href="https://github.com/openauthenticator-app/backend">Backend</a> |
| 19 | + · |
| 20 | + <a href="https://openauthenticator.app/#contribute">Contribute</a> |
19 | 21 | </p> |
20 | | -</div> |
21 | 22 |
|
22 | | - |
23 | | - |
24 | | - |
| 23 | + <p> |
| 24 | + <img src="https://img.shields.io/github/license/openauthenticator-app/backend" alt="License"> |
| 25 | + <img src="https://img.shields.io/github/languages/top/openauthenticator-app/backend" alt="Top language"> |
| 26 | + <img src="https://img.shields.io/github/stars/openauthenticator-app/backend" alt="GitHub stars"> |
| 27 | + </p> |
| 28 | +</div> |
25 | 29 |
|
26 | | -## Motivations |
| 30 | +## Overview |
27 | 31 |
|
28 | | -It's pretty simple : I was using Twilio Authy as my main TOTP app without any problem so far. |
29 | | -Back in January 2024, my Authy for Windows app started displaying me the following message : |
| 32 | +**Open Authenticator** was created as an alternative to closed OTP applications that lock users into |
| 33 | +a single ecosystem or make migration difficult. |
30 | 34 |
|
31 | | -> The Authy Desktop apps Linux, MacOS, and Windows, will reach their End-of-Life (EOL) on March 19, 2024. |
| 35 | +The project focuses on three core ideas : |
32 | 36 |
|
33 | | -Wow. So Twilio has decided to shutdown all their desktop apps, leaving only three months (!) to users like me |
34 | | -to find an alternative. |
35 | | -Add to that that there is almost no way to export your TOTPs from this app, and it was enough for me |
36 | | -to consider creating an alternative. |
| 37 | +- freedom : your authenticator should stay usable on every major platform ; |
| 38 | +- transparency : the app is open-source and auditable ; |
| 39 | +- interoperability : sync is available, and the backend can be self-hosted. |
37 | 40 |
|
38 | | -That's how **Open Authenticator** was born, with open-sourceness, interoperability and freedom in mind. |
| 41 | +Open Authenticator currently targets Android, iOS, Windows, macOS and Linux. |
39 | 42 |
|
40 | 43 | ## Features |
41 | 44 |
|
42 | | -* Open-source, and will always be. |
43 | | -* Free to use. |
44 | | -* Multilanguage. Currently, only english and french are supported, but you can [help translating the app](#help-translating-it) into your language ! |
45 | | -* Cross-platform. |
46 | | -* TOTPs synchronization supported through Firebase Firestore. |
| 45 | +- Cross-platform Flutter application for mobile and desktop. |
| 46 | +- Free and open-source software under the [GPL v3.0 license](https://github.com/Skyost/OpenAuthenticator/blob/main/LICENSE). |
| 47 | +- Secure local storage for your OTP data. |
| 48 | +- QR code scanning and `otpauth://` link handling. |
| 49 | +- Optional synchronization across devices with self-hostable backend support. |
| 50 | +- Backup management and recovery flows. |
| 51 | +- Local authentication support on compatible devices. |
| 52 | +- Multi-language support, with [community translations](https://openauthenticator.app/translate/). |
47 | 53 |
|
48 | 54 | ## Screenshots |
49 | 55 |
|
50 | | -<img src="https://github.com/Skyost/OpenAuthenticator/raw/main/docs/public/images/screenshots/home.png" height="400"> |
| 56 | +<img src="https://openauthenticator.app/images/screenshots/home.png" alt="Open Authenticator screenshot" height="400"> |
51 | 57 |
|
52 | 58 | ## Download |
53 | 59 |
|
54 | | -Download links are available on the [Open Authenticator website](https://openauthenticator.app/#download). |
| 60 | +Prebuilt packages and store links are available on the [official website](https://openauthenticator.app/#download). |
| 61 | + |
| 62 | +## Development Setup |
55 | 63 |
|
56 | | -## Build and run |
| 64 | +### Prerequisites |
57 | 65 |
|
58 | | -### App |
| 66 | +- A recent stable version of Flutter. |
| 67 | +- Dart SDK `>=3.10.0 <4.0.0`. |
| 68 | +- Platform toolchains for the targets you want to run. |
59 | 69 |
|
60 | | -First, you'll have to compile SVG files into `.si`. In order to do that, you can use the following command : |
| 70 | +It is recommended to stay on Flutter stable : |
61 | 71 |
|
62 | | -```shell |
63 | | -dart run "open_authenticator:compile_svg" |
| 72 | +```sh |
| 73 | +flutter channel stable |
| 74 | +flutter --version |
64 | 75 | ``` |
65 | 76 |
|
66 | | -Then, you'll have to generate your own `app.dart` file. |
67 | | -It contains all credentials needed to run the app (Firebase, Sign-In providers, RevenueCat, ...). |
| 77 | +### Clone the repository and install dependencies |
68 | 78 |
|
69 | | -To do so, you can run the following utility : |
| 79 | +To clone the repository and install dependencies, run in a shell : |
70 | 80 |
|
71 | | -```shell |
72 | | -dart run "open_authenticator:generate" |
| 81 | +```sh |
| 82 | +git clone https://github.com/openauthenticator-app/openauthenticator.git |
| 83 | +cd openauthenticator |
| 84 | +flutter pub get |
73 | 85 | ``` |
74 | 86 |
|
75 | | -And then, you'll also need to link the app to Firebase. You can follow the steps [here](https://firebase.google.com/docs/flutter/setup) |
76 | | -for that. |
| 87 | +### Generate required files |
| 88 | + |
| 89 | +Some files used by the app are generated or refreshed during setup. |
77 | 90 |
|
78 | | -This should allow you to run the app in its minimal state. |
79 | | -For advanced features, like synchronization, sign-in using providers, ... you'll also need |
80 | | -to configure them on your side. |
| 91 | +1. Compile SVG assets to `.si`: |
81 | 92 |
|
82 | | -Use the links below to do so : |
| 93 | +```sh |
| 94 | +dart run open_authenticator:compile_svg |
| 95 | +``` |
83 | 96 |
|
84 | | -* [Configure Firebase Auth](https://firebase.google.com/docs/auth/flutter/start). |
85 | | -* [Configure Firebase Firestore](https://firebase.google.com/docs/firestore). |
86 | | -* [Configure Firebase Dynamic Links](https://firebase.google.com/docs/dynamic-links). |
87 | | -* [Configure RevenueCat](https://www.revenuecat.com/docs/getting-started/entitlements). |
88 | | -* [Configure Stripe with RevenueCat](https://www.revenuecat.com/docs/getting-started/entitlements/stripe-products). |
89 | | -* [Configure Stripe payment links](https://docs.stripe.com/payment-links) |
| 97 | +2. Generate source files used by code generation: |
90 | 98 |
|
91 | | -### Website |
| 99 | +```sh |
| 100 | +dart run build_runner build --delete-conflicting-outputs |
| 101 | +dart run slang |
| 102 | +``` |
92 | 103 |
|
93 | | -The website has been created using [Nuxt 3](https://nuxt.com/). Just run the following commands |
94 | | -to start a dev server : |
| 104 | +3. Generate `lib/app.dart` for your local build: |
95 | 105 |
|
96 | | -```shell |
97 | | -cd docs |
98 | | -npm install |
99 | | -npm run dev |
| 106 | +```sh |
| 107 | +dart run open_authenticator:generate |
100 | 108 | ``` |
101 | 109 |
|
102 | | -You'll be able to access it on [localhost:3000](http//localhost:3000). |
| 110 | +`open_authenticator:generate` lets you customize values such as: |
103 | 111 |
|
104 | | -## What's next |
| 112 | +- the app name and package identifiers ; |
| 113 | +- the backend URL ; |
| 114 | +- repository and translation links ; |
| 115 | +- Sentry DSN ; |
| 116 | +- RevenueCat public keys and offering ID ; |
| 117 | +- store identifiers and legal links. |
105 | 118 |
|
106 | | -If this project becomes popular, I would like to provide its own backend to Open Authenticator. |
107 | | -Currently, it's using Firebase Auth / Firestore, which is perfect for this project in its current |
108 | | -state. Having a dedicated server would be too expensive for the moment. |
| 119 | +You can inspect the available options with: |
109 | 120 |
|
110 | | -If it's sustainable enough, we could even consider completely removing any TOTPs limit from the app. |
| 121 | +```sh |
| 122 | +dart run open_authenticator:generate --help |
| 123 | +``` |
111 | 124 |
|
112 | | -## License |
| 125 | +The generated file is intended for local or custom builds, so make sure it matches the environment |
| 126 | +you want to run against. |
113 | 127 |
|
114 | | -Open Authenticator is licensed under the [GNU General Public License v3.0](https://choosealicense.com/licenses/gpl-3.0/). |
| 128 | +### Run the app |
115 | 129 |
|
116 | | -## Contribute |
| 130 | +```sh |
| 131 | +flutter run |
| 132 | +``` |
117 | 133 |
|
118 | | -If you like this project, there are a lot of ways for you to contribute to it ! |
119 | | -Please read the [contribution guide](https://github.com/Skyost/OpenAuthenticator/blob/main/CONTRIBUTING.md) |
120 | | -before getting started. |
| 134 | +## Contributing |
121 | 135 |
|
122 | | -### Help translating it |
| 136 | +Contributions are more than welcome. For setup details, contribution rules and PR expectations, read |
| 137 | +[CONTRIBUTING.md](https://github.com/Skyost/OpenAuthenticator/blob/main/CONTRIBUTING.md). |
123 | 138 |
|
124 | | -We're looking for translators. If you want to help but know nothing about code, just go on the |
125 | | -[translation page](https://openauthenticator.app/translate/) on the website. |
| 139 | +You can also help by : |
126 | 140 |
|
127 | | -You can also translate the app into your language by submitting a pull request targeting the files located |
128 | | -in the `lib/i18n` folder (for the app) and `docs/locales` (for the website). |
129 | | -Feel also free to submit a pull request for any typo you encounter. |
| 141 | +- reporting bugs or suggesting features in the |
| 142 | + [issue tracker](https://github.com/Skyost/OpenAuthenticator/issues) ; |
| 143 | +- improving translations through the |
| 144 | + [translation page](https://openauthenticator.app/translate/) ; |
| 145 | +- submitting fixes for documentation, UI text or code. |
130 | 146 |
|
131 | | -### Report bugs or suggest new features |
| 147 | +## Support The Project |
132 | 148 |
|
133 | | -You can report bugs or suggest new features in the [issue tracker](https://github.com/Skyost/OpenAuthenticator/issues). |
134 | | -If you don't want to create a Github account, you can also [contact the developer](https://openauthenticator.app/contact) directly. |
| 149 | +If you want to support Open Authenticator financially, you can use : |
135 | 150 |
|
136 | | -### Donate |
| 151 | +- [Ko-fi](https://ko-fi.com/Skyost) |
| 152 | +- [PayPal](https://paypal.me/Skyost) |
| 153 | +- [GitHub Sponsors](https://github.com/sponsors/Skyost) |
137 | 154 |
|
138 | | -You can donate for this project using either [PayPal](http://paypal.me/Skyost), |
139 | | -[Ko-Fi](https://ko-fi.com/Skyost) or [Github sponsors](https://github.com/sponsors/Skyost). |
| 155 | +## License |
140 | 156 |
|
141 | | -If you don't want to donate, any [kind message](https://openauthenticator.app/contact) is also |
142 | | -appreciated ! |
| 157 | +Open Authenticator is licensed under the [GNU General Public License v3.0](LICENSE). |
0 commit comments