Benri | TBD Incubator Proposal – Shared JS Components
Proposal Mission and Scope
Statement of value to the TBD ecosystem (Web5, TDEX, etc)
The mission of this project is to help with the edification and adoption of web5/SSI standards. Today, there are building blocks necessary to expand the adoption of Web5 and support the developer community. This project proposal aims to develop a fundamental building block for utilization across several future Web5 projects.
This particular project is to build a set of reusable frontend components, built in vanilla javascript/typescript ( tbd ), that can interop across different web frameworks: vue, react, angular ( also tbd ) and provide the basic building block for a frontend ui for future developers.
In the scope of this project, Benri is to work with TBD to define components as reusable. Some of the focuses for the components will be:
- Ensuring compatibility and reusability across projects
- Ensuring efforts are not duplicated across projects
Context
Benri’s original idea was to design a solution around the SSI services that serves as a teaching mechanicsm to Web5 and the various data models in the SSI community, such as Verifiable Credentials, Wallets, and DID’s. We realized that before we build any UI, the core building blocks could be shared across repos, and should be addressed first. This would also help simplify the developer experience and speed up the roadmap for new projects by TBD and the web5 developer community at large.
Current Status
Link to more details on HackMD: https://hackmd.io/RnJzfJ7EQtu4sJyjgqPU5Q
The current state is : STRAWMAN . Proposals to change scope and/or re-think approach are welcome on this version.
Version Tag: 0.0.1-SM
Flow chart
Flow charts to be finalized after further conversations with TBD to finalize scoping.
Success Critieria
- 1 npm compliant library for reusable web5 components
- done in vanilla js/typescript to ensure reuability in different frameworks (vue, react, etc.)
- A set of components (written in a UI framework such as Vue)
- Installable via. yarn
Constraints and Considerations
Design Goals
- Simple
- Reusable
- Composability
- Extendable
- Customizable
Component Selection
Benri will work with TBD to determine useful components based upon the User Stories. Complete scoping of user stories and how they relate to Alpha are to be determined. Post acceptance, we will iterate and bring forth a more concrete perspective on which components we will focus on first and why.
User Stories
- As a developer, I want to make an app that does basic SSI operations using the
service-libs
. These operations include but are not limited to:- did module:
- creating a did ( with method flexibility )
- selecting from an existing did
- vc module:
- creating a vc
- creating a template for a VC
- issuing a new vc
- kms module:
- key creation
- key deletion
- wallet rendering:
- view presentation request
- send verifiable presentation
- prepare presentation
- did module:
Areas of Risk
- Making sure we can use things cross builds.
- Duplication of efforts
Testing
Testing harnesses TBD later in scoping, but most likely the following two ways:
- CICD with Github Actions
- Test Suite (Jest/Yarn) etc.
Code Monitoring
We will probably have the following CICD services running on the repo.
- FOSSA checks
- CodeCov ( are minimum coverage metrics required for this project? )
- Possibly some embedded contributor metrics on the README