This repository has been archived by the owner on Nov 6, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from riipandi/develop
Create Initial Release
- Loading branch information
Showing
23 changed files
with
388 additions
and
186 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,44 +1,56 @@ | ||
{ | ||
"extends": [ | ||
"eslint:recommended", | ||
"plugin:react/recommended", | ||
"plugin:jsx-a11y/recommended", | ||
"plugin:@typescript-eslint/recommended", | ||
"plugin:import/typescript", | ||
"plugin:react/jsx-runtime", | ||
"plugin:prettier/recommended", | ||
"prettier" | ||
], | ||
"parser": "@typescript-eslint/parser", | ||
"parserOptions": { | ||
"ecmaFeatures": { | ||
"jsx": true | ||
"extends": [ | ||
"eslint:recommended", | ||
"plugin:react/recommended", | ||
"plugin:jsx-a11y/recommended", | ||
"plugin:@typescript-eslint/recommended", | ||
"plugin:import/typescript", | ||
"plugin:react/jsx-runtime", | ||
"plugin:prettier/recommended", | ||
"prettier" | ||
], | ||
"parser": "@typescript-eslint/parser", | ||
"parserOptions": { | ||
"ecmaFeatures": { | ||
"jsx": true | ||
}, | ||
"ecmaVersion": "latest", | ||
"sourceType": "module" | ||
}, | ||
"ecmaVersion": "latest", | ||
"sourceType": "module" | ||
}, | ||
"plugins": ["react", "@typescript-eslint", "import", "jsx-a11y", "react-hooks", "prettier"], | ||
"rules": { | ||
"@typescript-eslint/no-explicit-any": "off", | ||
"@typescript-eslint/no-non-null-assertion": "off", | ||
"@typescript-eslint/no-unused-vars": [ | ||
"warn", | ||
{ | ||
"argsIgnorePattern": "^_", | ||
"varsIgnorePattern": "^_", | ||
"caughtErrorsIgnorePattern": "^_" | ||
} | ||
"plugins": [ | ||
"react", | ||
"@typescript-eslint", | ||
"import", | ||
"jsx-a11y", | ||
"react-hooks", | ||
"prettier" | ||
], | ||
"settings": { | ||
"react": { | ||
"version": "detect" | ||
} | ||
}, | ||
"rules": { | ||
"@typescript-eslint/no-explicit-any": "off", | ||
"@typescript-eslint/no-non-null-assertion": "off", | ||
"@typescript-eslint/no-unused-vars": [ | ||
"warn", | ||
{ | ||
"argsIgnorePattern": "^_", | ||
"varsIgnorePattern": "^_", | ||
"caughtErrorsIgnorePattern": "^_" | ||
} | ||
], | ||
|
||
"react-hooks/rules-of-hooks": "error", | ||
"react-hooks/exhaustive-deps": "warn", | ||
"react-hooks/rules-of-hooks": "error", | ||
"react-hooks/exhaustive-deps": "warn", | ||
|
||
"prettier/prettier": [ | ||
"warn", | ||
{ | ||
"endOfLine": "auto", | ||
"singleQuote": true | ||
} | ||
] | ||
} | ||
"prettier/prettier": [ | ||
"warn", | ||
{ | ||
"endOfLine": "auto", | ||
"singleQuote": true | ||
} | ||
] | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -12,3 +12,5 @@ out/ | |
package-lock.json | ||
package.json | ||
yarn.lock | ||
vite-env.d.ts | ||
src/main.css |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,26 +3,82 @@ | |
<a href="https://github.com/riipandi/otentik-authenticator-desktop/pulse"> | ||
<img src="https://img.shields.io/badge/Contributions-welcome-blue.svg?style=flat-square" alt="Contribution welcome"> | ||
</a> | ||
<a href="https://github.com/riipandi/otentik-authenticator-desktop"> | ||
<img src="https://img.shields.io/github/languages/top/riipandi/otentik-authenticator-desktop?style=flat-square" alt="Top language"> | ||
<a href="https://github.com/riipandi/otentik-authenticator-desktop/releases/tag/latest"> | ||
<img src="https://github.com/riipandi/otentik-authenticator-desktop/actions/workflows/release.yml/badge.svg?branch=main" alt="Release Status"> | ||
</a> | ||
<a href="https://choosealicense.com/licenses/apache-2.0"> | ||
<img src="https://img.shields.io/github/license/riipandi/otentik-authenticator-desktop?style=flat-square" alt="License"> | ||
</a> | ||
<a href="https://github.com/riipandi/otentik-authenticator-desktop/actions/workflows/release.yml"> | ||
<img src="https://github.com/riipandi/otentik-authenticator-desktop/actions/workflows/release.yml/badge.svg?branch=main" alt="Release Status"> | ||
</a> | ||
<a href="https://github.com/sponsors/riipandi"> | ||
<img src="https://img.shields.io/static/v1?color=26B643&label=Sponsor&message=%E2%9D%A4&logo=GitHub&style=flat-square" alt="Sponsors"> | ||
</a> | ||
</p> | ||
|
||
## Introduction | ||
|
||
Otentik is a secure app to manage your 2-step verification tokens for your online services. | ||
Feeling bothered about having to switch devices when you want to enter an OTP code when logging into a website or service? | ||
Now you can use Otentik Authenticator to manage your OTP code. Otentik is a secure app to manage your 2-step verification (2FA) | ||
tokens for your online services. This app compatible with Google Authenticator. | ||
|
||
Watch the [demo video](https://youtu.be/5hPbu7xgFl4) to see how it works. | ||
|
||
This project is an Open Source project for contributing to [The Supabase Open Source Hackathon](https://supabase.com/blog/launch-week-5-hackathon). | ||
|
||
## Can I use this app? | ||
|
||
Is this application finished yet? Yes and no. The main functions (OTP code generator and synchronization) are completed. I want this app to be available | ||
in multi-platform and on mobile devices. | ||
|
||
You can download the binary at the [release page](https://github.com/riipandi/otentik-authenticator-desktop/releases). | ||
Currently only supports macOS with Intel chipset. Windows, Linux, and mobile versions are included in the roadmap. | ||
|
||
## How was this built? | ||
|
||
This app was created during the [Supabase Launch Week 5 Hackathon](https://supabase.com/blog/launch-week-5-hackathon). The idea is based on my personal | ||
problem, everytime I want to log in to a website I have to reach for my phone just to get the OTP code. So I thought that having an application to | ||
manage OTP code that could sync to the desktop would be helpful. | ||
|
||
This app uses [Supabase](https://supabase.com/) for storing the collections and authenticating the user. Users can signup and log in using their | ||
email addresses. I have no plan for using social authentication. The sensitive data such as 2FA secret and backup code | ||
are encrypted with [AES256 encryption](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) before storing at | ||
Supabase. | ||
|
||
### The complete tech stack: | ||
|
||
- [Supabase](https://supabase.com/): auth and database. | ||
- [Tauri](https://tauri.app/): for the desktop app. | ||
- [Rust](https://www.rust-lang.org/): Tauri is using Rust. | ||
- [TypeScript](https://www.typescriptlang.org/): for type checking. | ||
- [React](https://reactjs.org/): for the UI frontend library. | ||
- [Vite](https://vitejs.dev/): for the frontend tooling. | ||
- [Tailwind CSS](https://tailwindcss.com/): for the styling. | ||
- [Headless UI](https://headlessui.com/): create interactive UI. | ||
|
||
### Why Tauri? | ||
|
||
The simple answer is: the binary file size is smaller rather than Electron. | ||
|
||
## Quick Start | ||
|
||
### Prerequisites | ||
|
||
At least you will need `Nodejs >=16` and `Rust >= 1.63` to develop this project, and your favorite IDE or code editor. | ||
Use [rustup](https://rustup.rs/) to install Rust on your machine. | ||
|
||
### Up and Running | ||
|
||
Create `.env` file (you can copy from `.env.example`) then fill the `VITE_SUPABASE_URL` and `VITE_SUPABASE_ANON_KEY` values with yours. | ||
|
||
For detailed explanation on how things work, check out [Supabase documentation](https://supabase.com/docs) and | ||
[Tauri documentation](https://tauri.app/v1/guides/) page. | ||
|
||
## Roadmaps | ||
|
||
- [ ] Offline synchronization | ||
- [ ] Create mobile version | ||
- [ ] Create Windows version | ||
- [ ] Create Linux version | ||
|
||
## Security Issue | ||
|
||
If you discover any security-related issues, please send an e-mail to [[email protected]](mailto:[email protected]) | ||
|
@@ -38,6 +94,10 @@ vulnerability within Otentik Authenticator, please send me a direct message on [ | |
In general, I'd like to thank every single one who open-sources their source code for their effort to contribute | ||
something to the open-source community. Your work means the world! 🌍 ❤️ | ||
|
||
## Maintainers | ||
|
||
Currently, Aris Ripandi ([@riipandi](https://twitter.com/riipandi)) is the only maintainer. | ||
|
||
## License | ||
|
||
This project is open-sourced software licensed under the [Apache License 2.0][choosealicense]. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
<plist version="1.0"> | ||
<dict> | ||
<key>com.apple.security.automation.apple-events</key><true/> | ||
</dict> | ||
</plist> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,10 @@ | ||
[package] | ||
name = "app" | ||
name = "otentik-authenticator" | ||
version = "0.1.0" | ||
description = "Open Source two factor authenticator" | ||
authors = ["Aris Ripandi <[email protected]>"] | ||
license = "Apache-2.0" | ||
repository = "https://github.com/feelantera/otentik-authenticator-desktop" | ||
default-run = "app" | ||
repository = "https://github.com/riipandi/otentik-authenticator-desktop" | ||
edition = "2021" | ||
rust-version = "1.63" | ||
|
||
|
@@ -38,3 +37,15 @@ default = [ "custom-protocol" ] | |
# this feature is used used for production builds where `devPath` points to the filesystem | ||
# DO NOT remove this | ||
custom-protocol = [ "tauri/custom-protocol" ] | ||
|
||
[[bin]] | ||
name = "otentik-authenticator" | ||
path = "src/main.rs" | ||
|
||
# default to small, optimized release binaries | ||
[profile.release] | ||
panic = "abort" | ||
codegen-units = 1 | ||
lto = true | ||
incremental = false | ||
opt-level = "s" |
Oops, something went wrong.