didedu

DIDEdu - A decentralized open source solution, which is using Decentralized Identifiers and Verifiable Credentials to make students' studying process in the university easier and more secure

https://github.com/nikolayvv/didedu

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.2%) to scientific vocabulary

Keywords

angular atala-prism cardano-blockchain did digital-identity education kotlin open-source students verifiable-credentials verifiable-presentations w3c-standard
Last synced: 6 months ago · JSON representation ·

Repository

DIDEdu - A decentralized open source solution, which is using Decentralized Identifiers and Verifiable Credentials to make students' studying process in the university easier and more secure

Basic Info
  • Host: GitHub
  • Owner: nikolayVv
  • Language: TypeScript
  • Default Branch: main
  • Homepage:
  • Size: 2.59 MB
Statistics
  • Stars: 9
  • Watchers: 2
  • Forks: 1
  • Open Issues: 0
  • Releases: 0
Topics
angular atala-prism cardano-blockchain did digital-identity education kotlin open-source students verifiable-credentials verifiable-presentations w3c-standard
Created almost 4 years ago · Last pushed 12 months ago
Metadata Files
Readme Citation

README.md

DIDEdu

DIDEdu is an open source decentralized solution, which is developed to present the advantages of implementing Decentralized Identifiers (DIDs) and Verifiable Credentials (VCs) in a system. Decentralized Identifiers are a new type of identifiers, that enable a verifiable, distributed digital identity. With the help of this technology, DIDEdu offers to its users: - Issuing of credentials for completed obligations (exams, exercises, lectures, assignments, etc.), subjects, years and programs; - Authentication/Registration for individual activities (exams, colloquiums, tests, etc.) using credentials or presentations; - Signing in the website only with a DID; - Secured data storage; - Easy to use and user friendly interface; - Cheaper usage of the Blockchain using Batches;

The main logic is in the DID service, which is developed in Kotlin and is using the Atala PRISM SDK. Atala PRISM SDK is a development kit, which is following the W3C standard and is working on the Cardano Blockchain. It allows developers to use already implemented functionalities, which helps them develop solutions, that are using DIDs and VCs. The website, where the functionalities can be tested is called DIDEdu and is developed in Typescript, CSS and HTML. It is also using a MySQL data to store some data, which is needed to make the user's experience better. I have also developed a simple digital wallet in Javascript, CSS and HTML as a chrome-extension. It is only used as a local storage, that stores the data in a MongoDB database and is not an actual working digital wallet, that communicates with blockchain. The Cardano Blockchain doesn't have a digital wallet yet, which works with DIDs and VCs, which is why I had to create one. These three systems communicate with each other and allow the users to feel all the benefits from the usage of the DIDs and VCs in the educational process.

Usage

https://user-images.githubusercontent.com/61247744/187813639-f10956c1-b78e-4311-9770-d488d0e355fe.mp4

The following video (presentation) shows the main decentralized identifiers' functionalities, that DIDEdu is implementing. - Generating DID - Verifying batch/credential - Issuing batch/credential - Generating verifiable presentation - Revocation

Installation

Before starting the installation, please make sure you have cloned (pulled) the repository. bash git clone git@github.com:nikolayVv/DIDEdu.git

Configuration

The first thing you have to do is to add a system environment variable with the name "PRISMSDKPASSWORD". This will allow the DID service to access the libraries that Atala PRISM SDK is offerring. To get this password, you must become part of the Atala PRISM developers' community by joining the Atala PRISM Pioneer Program. After that is done you have to build the gradle file in the DID service. This can be done authomatic by using a development environment like IntelliJ. You will also need to install the libraries needed for the DIDEdu webpage. Make sure you have npm installed! bash cd DIDEdu npm install cd app_public npm install

Running

Now after all libraries are installed, it's time to start the systems. First start the DID service, by running the "DidServiceApplication.kt" file in the development environment. After that you will need to import the digital wallet in your Chrome browser by opening the extensions tab, switching to Developers mode and loading the folder "digitalWallet". When this is done on different terminals run: - digital wallet server, bash cd digitalWallet cd app_server npm run start - DIDEdu server and bash cd DIDEdu npm run start - DIDEdu webpage bash cd DIDEdu cd app_public ng serve --open After the last terminal loads, the website must show in a new tab, in your browser. If it doesn't load and everything is running without errors, you can find the webpage on localhost:4200.

Contributing

Pull requests are welcome! For changes, please fork the repository!

License

MIT

Acknowledgements

This solution is developed as part of my thesis for receiving a Bachelor's degree from the University of Ljubljana Faculty of Computer and Information Science. I would like to give very special thanks to: - my mentor Assoc. Prof. dr. Dejan Lavbič, who came up with the theme of the thesis and helped me write it and develop a solution for it; - the Atala PRISM team for giving me a spot in the first cohort of the Atala PRISM pioneer program, where I learned, how to work with the Atala PRISM SDK; - the IOG's Technical Community for their help through the developing process;

Owner

  • Name: Nikolay Vasilev
  • Login: nikolayVv
  • Kind: user
  • Location: Ljubljana, Slovenia

Software Developer

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
  - family-names: Vasilev
    given-names: Nikolay
title: "DIDEdu-DiplomskoDelo"
version: 2.0.4
date-released: 2022-08-01
url: "https://github.com/nikolayVv/DIDEdu"

GitHub Events

Total
  • Watch event: 1
  • Push event: 1
Last Year
  • Watch event: 1
  • Push event: 1

Dependencies

DIDService/build.gradle.kts maven
  • com.fasterxml.jackson.module:jackson-module-kotlin * implementation
  • com.h2database:h2 * implementation
  • com.soywiz.korlibs.krypto:krypto-jvm 2.7.0 implementation
  • com.squareup.retrofit2:converter-gson 2.9.0 implementation
  • io.iohk.atala:prism-api v1.3.3 implementation
  • io.iohk.atala:prism-credentials v1.3.3 implementation
  • io.iohk.atala:prism-crypto v1.3.3 implementation
  • io.iohk.atala:prism-identity v1.3.3 implementation
  • io.ktor:ktor-server-cors 2.0.1 implementation
  • io.projectreactor.kotlin:reactor-kotlin-extensions * implementation
  • org.jetbrains.kotlin:kotlin-reflect * implementation
  • org.jetbrains.kotlin:kotlin-stdlib-jdk8 * implementation
  • org.jetbrains.kotlinx:kotlinx-coroutines-reactor * implementation
  • org.jetbrains.kotlinx:kotlinx-datetime 0.3.2 implementation
  • org.jetbrains.kotlinx:kotlinx-serialization-json 1.3.2 implementation
  • org.slf4j:slf4j-simple 1.7.36 implementation
  • org.springdoc:springdoc-openapi-kotlin 1.6.8 implementation
  • org.springdoc:springdoc-openapi-webflux-ui 1.6.8 implementation
  • org.springframework.boot:spring-boot-starter-data-r2dbc * implementation
  • org.springframework.boot:spring-boot-starter-validation * implementation
  • org.springframework.boot:spring-boot-starter-webflux * implementation
  • io.r2dbc:r2dbc-h2 * runtimeOnly
DIDEdu/app_public/package-lock.json npm
  • 861 dependencies
DIDEdu/app_public/package.json npm
  • @angular-devkit/build-angular ~13.3.4 development
  • @angular/cli ~13.3.4 development
  • @angular/compiler-cli ~13.3.0 development
  • @types/jasmine ~3.10.0 development
  • @types/node ^12.11.1 development
  • jasmine-core ~4.0.0 development
  • karma ~6.3.0 development
  • karma-chrome-launcher ~3.1.0 development
  • karma-coverage ~2.1.0 development
  • karma-jasmine ~4.0.0 development
  • karma-jasmine-html-reporter ~1.7.0 development
  • typescript ~4.6.2 development
  • @angular/animations ~13.3.0
  • @angular/common ~13.3.0
  • @angular/compiler ~13.3.0
  • @angular/core ~13.3.0
  • @angular/forms ~13.3.0
  • @angular/platform-browser ~13.3.0
  • @angular/platform-browser-dynamic ~13.3.0
  • @angular/router ~13.3.0
  • mdb-angular-ui-kit ^2.2.0
  • rxjs ~7.5.0
  • tslib ^2.3.0
  • zone.js ~0.11.4
DIDEdu/package-lock.json npm
  • 299 dependencies
DIDEdu/package.json npm
  • chai ^4.3.6 development
  • chromedriver ^100.0.0 development
  • mocha ^9.2.2 development
  • mochawesome ^7.1.3 development
  • selenium-webdriver ^4.1.2 development
  • axios *
  • cookie-parser *
  • debug *
  • dotenv *
  • express *
  • express-jwt *
  • hbs *
  • http-errors *
  • jsonwebtoken *
  • morgan *
  • mysql *
digitalWallet/app_server/package.json npm
  • dotenv * development
  • bcryptjs ^2.4.3
  • bip39 ^3.0.4
  • body-parser *
  • cors *
  • express *
  • express-validator ^6.14.0
  • jsonwebtoken ^8.5.1
  • mongoose ^6.3.2
  • morgan *