Welcome to wwWallet Frontend repository! This application is a user-friendly web wallet that empowers users to manage their digital credentials effortlessly. With a seamless interface and powerful features, users can view their credentials, obtain new ones from issuers, present credentials to verifiers, and access their presentation history.
Our Web Wallet provides a range of features tailored to enhance the credential management experience:
Credential Display: Users can easily view their stored digital credentials in a structured manner, making it simple to keep track of their qualifications.
Issuer Interaction: Seamless integration with issuers allows users to request and receive new digital credentials directly within the wallet.
Verifier Presentation: Users can present their credentials to verifiers using the wallet, providing a secure and efficient method of showcasing their qualifications.
Presentation History: The wallet maintains a history of credential presentations, allowing users to review and track when and where they've shared their credentials.
Clone the repository:
Option 1: Using HTTPS
git clone https://github.com/your-username/wallet-frontend.git
Option 2: Using SSH
git clone git@github.com:your-username/wallet-frontend.git
Navigate to the project folder:
cd wallet-frontend
Configure Environment Variables:
The project uses environment variables to manage different configurations. A .env
file is used to keep all these variables. There is a .env.template
file in the repository. Copy it and rename it to .env
.
cp .env.template .env
Now, open the .env file and fill in the variables according to your own configuration. Below is an explanation for each variable:
true
or false
) for push notifications. If left empty, it will be handled as false
.true
or false
). If left empty, it will be handled as true
.localhost
). This must match the config.webauthn.rp.id
setting in wallet-backend-server
.
yarn install
yarn start
Once the development server is running, you can access the app by visiting http://localhost:3000 in your web browser. The app provides various pages and components that you can interact with. Explore the features and enjoy using the Wallet Frontend!
The wwWallet Frontend is designed to be compatible with the PRF extension to WebAuthn, ensuring a streamlined and secure registration and authentication process. Below, we present specific compatibility scenarios based on the operating system, emphasizing both WebAuthn and PRF extension compatibility.
The PRF (Pseudo Random Function) extension in WebAuthn enables the evaluation of a hash message authentication code stored on the security key during the retrieval of a credential. This mechanism is crucial for generating secret keys vital for encrypting user data. While WebAuthn supports various authentication methods, the focus of this table is the compatibility with the PRF extension.
OS | Authenticator | Transport | PRF Compatibility | ||
---|---|---|---|---|---|
Linux | Linux | Internal | ❌ | ||
Linux | Android | Hybrid | ✅ | ||
Linux | iOS | Hybrid | ✅ | ||
Linux | FIDO Security Key | USB | ✅ | ||
Windows | Windows | Internal | ❌ | ||
Windows | Android | Hybrid | ✅ | ||
Windows | iOS | Hybrid | ✅ | ||
Windows | FIDO Security Key | USB | ✅ | ||
MacOS | MacOS | Internal | ❌ | ✅ | |
MacOS | Android | Hybrid | ✅ | ❌ | |
MacOS | iOS | Hybrid | ✅ | ✅ | |
MacOS | FIDO Security Key | USB | ✅ | ✅ | |
Android | Android | Internal | ✅ | ||
Android | Android | Hybrid | ❌ | ||
Android | iOS | Hybrid | ❌ | ||
Android | FIDO Security Key | USB | ✅[1] | ||
Android | FIDO Security Key | NFC | ❌ | ||
iOS | iOS | Internal | ✅ | ✅ | |
iOS | Android | Hybrid | ❌ | ❌ | |
iOS | iOS | Hybrid | ❌ | ❌ | |
iOS | FIDO Security Key | USB | ❌ | ❌ | |
iOS | FIDO Security Key | NFC | ❌ | ❌ |
[1] Note on Android with FIDO Security Keys over USB: It's essential to have Google Play Services (GPS) version 24.08.12 or later.
*Notes:
The wwWallet is committed to delivering a secure and adaptable authentication experience with an emphasis on PRF extension compatibility.
This application uses Firebase for authentication and messaging features. To integrate Firebase into your project, follow these steps:
Firebase Configuration (src/firebase.js
):
The firebase.js
file in the src
directory and provide your Firebase configuration details. This file initializes the Firebase app and sets up the messaging service.
Firebase Messaging Service Worker (public/firebase-messaging-sw.js
):
This service worker is responsible for handling background messages and notification clicks. When a background message is received, it triggers a notification, and when the user clicks on a notification, it can perform custom actions.
This project utilizes Tailwind CSS, a utility-first CSS framework that enables rapid development of custom user interfaces with minimal effort. Tailwind CSS offers a collection of utility classes that make styling components and layouts a breeze, eliminating the need for writing extensive custom CSS.
To apply styles using Tailwind CSS, you can directly add utility classes to your HTML or JSX components. For example, to apply padding, margin, text color, and more:
<div class="p-4 m-2 text-blue-500">Styled with Tailwind CSS</div>
Tailwind CSS provides an extensive set of default styles, but you can also customize them to match your project's design. The tailwind.config.js file in the project's root directory allows you to customize colors, fonts, spacing, breakpoints, and more.
Explore the Tailwind CSS documentation to learn about all the utility classes, configuration options, and techniques for building beautiful UIs efficiently.
We welcome contributions from the community to help improve the wwWallet Frontend repository. If you'd like to contribute, follow these steps:
Create a New Branch: Create a new branch for your feature or bug fix
git checkout -b my-feature
Replace my-feature with a descriptive name.
Make Changes: Make the necessary changes in your code editor.
Commit Changes: Commit your changes with a descriptive commit message:
git commit -m "Add new feature"
Push Changes: Push your changes to your new branrch:
git push --set-upstream origin my-feature
Create a Pull Request: Open a pull request on the original repository. Provide a detailed description of your changes and their purpose.
Review and Merge: Your pull request will be reviewed by the maintainers. Make any requested changes and address feedback. Once approved, your changes will be merged into master branch of the project.