Skip to content

Commit

Permalink
update readme with a diagram (#125)
Browse files Browse the repository at this point in the history
* update readme with a diagram

Signed-off-by: Mirko Mollik <[email protected]>

* fix paths for newsletter

Signed-off-by: Mirko Mollik <[email protected]>

---------

Signed-off-by: Mirko Mollik <[email protected]>
  • Loading branch information
cre8 authored Nov 1, 2024
1 parent bd9a05d commit f550912
Show file tree
Hide file tree
Showing 2 changed files with 87 additions and 10 deletions.
84 changes: 78 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,97 @@

![Wallets](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fopenwallet-foundation%2Fdigital-wallet-and-agent-overviews-sig%2Fbadge-info%2Fwallets.json)

The objectives of this SIG is to further develop and maintain the . The overview can be found [here](https://openwallet-foundation.github.io/digital-wallet-and-agent-overviews-sig/). These overview should provide transparency of the characteristics of wallets and agents in order to allow for comparison and effective decision-making on which wallet is applicable for your use case.
The goal of this SIG is to continuously develop and maintain a comprehensive overview of wallets, agents, and more. You can access the overview [here](https://openwallet-foundation.github.io/digital-wallet-and-agent-overviews-sig/). This resource aims to provide transparency regarding the characteristics of wallets and agents, facilitating comparison and informed decision-making for selecting the most suitable wallet for your use case. Additionally, it offers insights into dependencies, algorithms, protocols, and case studies related to wallets and agents.

## Wallet and Agent Overview
## Overview

This repository is holding multiple JSON files that are used to generate the overview. The elements are each defined with a JSON Schema that is used to validate the input. The JSON Schema can be found in the `schemas` folder. The resources are stored in the `data` folder, where each resource has its own folder.

```plantuml
@startuml
title Overview
' Define colors for different types of entities
skinparam class {
BackgroundColor<<WalletAndAgent>> LightBlue
BackgroundColor<<CredentialProfile>> LightGreen
BackgroundColor<<Dependency>> LightYellow
BackgroundColor<<CaseStudy>> LightCoral
}
' Define entities
class "Wallet and Agent" <<WalletAndAgent>> {
}
class Dependency <<Dependency>> {
}
class "Case Study" <<CaseStudy>> {
}
class "Credential Profile" <<CredentialProfile>> {
}
class "Credential Format" {
}
class "Signing Algorithm" {
}
class "Status Management" {
}
class "Key Management" {
}
class "Issuance Protocol" {
}
class "Presentation Protocol" {
}
class "Trust Management" {
}
' Define relationships
"Wallet and Agent" --> Dependency : "1..*"
"Case Study" --> "Wallet and Agent" : "1..*"
"Wallet and Agent" --> "Credential Profile" : "1..*"
"Wallet and Agent" --> "Credential Format" : "1..*"
"Wallet and Agent" --> "Signing Algorithm" : "1..*"
"Wallet and Agent" --> "Status Management" : "1..*"
"Wallet and Agent" --> "Key Management" : "1..*"
"Wallet and Agent" --> "Issuance Protocol" : "1..*"
"Wallet and Agent" --> "Presentation Protocol" : "1..*"
"Wallet and Agent" --> "Trust Management" : "1..*"
"Credential Profile" --> "Credential Format" : "1..*"
"Credential Profile" --> "Signing Algorithm" : "1..*"
"Credential Profile" --> "Status Management" : "1..*"
"Credential Profile" --> "Key Management" : "1..*"
"Credential Profile" --> "Issuance Protocol" : "1..*"
"Credential Profile" --> "Presentation Protocol" : "1..*"
"Credential Profile" --> "Trust Management" : "1..*"
@enduml
```

### Wallet and Agent Overview

The core of this project is the overview of digital wallets and agents. It should help users to compare different entries based on objective characetristics like supported algorithms or standards.

## Dependencies
### Dependencies

Each wallet and agent is capable to link to relevant dependencies like frameworks or libraries that are relevant. The linking will support the overview of the technology stack of the wallet or agent. We encourage developers to only link to relevant dependencies that are specific for the wallet or agent to avoid a long list of dependencies.

The dependencies will be add as a new object in the `dependencies` folder and then linked by the unique filename in each wallet or agent object. To generate the JSON object, you can use the form provided when clicking "Add Dependency" in the upper right corner of the overview.

## Case Studies
### Case Studies

We are looking for case studies of the use of wallets and agents in the field. These case studies can be used to show the applicability of the wallets and agents in real life situations. The case studies will be added as a new object in the `case-studies` folder, referencing the wallets or agents by their filename. To generate the JSON object, you can use the form provided when clicking "Add Case Study" in the upper right corner of the overview.

There is also the chance to subscribe to our newsletter that will be sent out every month. The newsletter will contain the latest submitted case studies to this overview. You can subscribe to the newsletter by clicking [here](https://openwallet-foundation.github.io/digital-wallet-and-agent-overviews-sig/#/case-studies).

## Credential profiles
### Credential profiles

When dealing with digital credentials, it is important to know which credential profiles are supported by the wallet or agent. Each profile is based on specific formats, algorithms or protocols. These resources can be compared objectify in an overview to pick the right profile and therefore the best fitting wallet or agent for a specific use case. The content is based on the [credential format comparison SIG](https://github.com/openwallet-foundation/credential-format-comparison-sig) that got merged into this overview.

Expand All @@ -30,7 +102,7 @@ This SIG is an open group and we welcome new participants. There is no requireme

If you are interested in participating, please join the [OpenWallet Foundation Discord](https://discord.gg/openwalletfoundation) and participate in the discussion in the [#digital-wallet-and-agent-overviews-sig](https://discord.gg/openwalletfoundation) channel.

Upcoming meetings:
**Upcoming meetings:**
We meet every second Thursday via Zoom, the next date and time plus a calendar invitation can be found via this [link](https://zoom-lfx.platform.linuxfoundation.org/meeting/92821499615?password=bfd9bdad-249d-454e-97a5-727bc5fc2190).

In case you have an [openprofile](https://openprofile.dev/) with the same mail address as your calendar invitation, you can access all the recordings of the past meetings.
Expand Down
13 changes: 9 additions & 4 deletions viewer/scripts/newsletter.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,17 @@ import handlebars from 'handlebars';
import { execSync } from 'child_process';
import {createTransport, createTestAccount, getTestMessageUrl} from 'nodemailer'
import Mailjet from 'node-mailjet';
import {join} from 'path';

config();

const walletFiles = fs.readdirSync('../wallets');
const walletsFolder = '../data/wallets';

const walletFiles = fs.readdirSync(walletsFolder);
const walletCounter = walletFiles.length;

const wallets = walletFiles.map(walletFile => {
const content = JSON.parse(fs.readFileSync(`../wallets/${walletFile}`, 'utf8'));
const content = JSON.parse(fs.readFileSync(join(walletsFolder, walletFile), 'utf8'));
content.id = walletFile.slice(0, -5);
return content;
});
Expand All @@ -29,14 +32,16 @@ if (!fromDate || !untilDate) {
untilDate = untilDate || lastDayOfLastMonth.toISOString().split('T')[0];
}

const caseStudiesFolder = '../data/case-studies';

// Get the list of files added in the specified date range
let caseStudyFiles = execSync(`git log --diff-filter=A --since="${fromDate}" --until="${untilDate}" --name-only --pretty=format:`, { encoding: 'utf8' })
.split('\n')
.filter(file => file.startsWith('data/case-studies/') && file.endsWith('.json'));

if(process.env.LOCAL) {
//use all files that are included in the folder
caseStudyFiles = fs.readdirSync('../case-studies').map(file => `case-studies/${file}`);
caseStudyFiles = fs.readdirSync(caseStudiesFolder).map(file => `case-studies/${file}`);
}

console.log(`Found ${caseStudyFiles.length} new case ${caseStudyFiles.length === 1 ? 'study' : 'studies'}: ${caseStudyFiles.join(', ')}`);
Expand All @@ -46,7 +51,7 @@ const url = process.env.LOCATION ?? 'https://openwallet-foundation.github.io/dig
// format the case studies
const caseStudies = caseStudyFiles.map(caseStudy => {
const id = caseStudy.split('/')[1].slice(0, -5);
const content = JSON.parse(fs.readFileSync(`../${caseStudy}`, 'utf8'));
const content = JSON.parse(fs.readFileSync(join('../data', caseStudy), 'utf8'));
delete content['$schema'];

content.wallets = wallets.filter(w =>content.references.includes(w.id)).map(wallet => ({
Expand Down

0 comments on commit f550912

Please sign in to comment.