Giter Club home page Giter Club logo

eduvault's Introduction

EduVault

Home page

EduVault provides a truly user-owned database that syncs across apps. Eduvault makes it trivially easy for developers to add such a database into an app.

Note: the word 'user' has been replaced by the word 'person' across this project

Problems EduVault aims to solve

  • Some of the ‘last legs’ are missing for using Textile and creating a truly Person-owned database with an interoperable app ecosystem.
  • EdTech apps lack interoperability

Authentication

  • Because Textile ThreadDB only accepts key pair (PKI) challenges, we need progressive auth choices for easy onboarding:

least control(oAuth2.0) -> more control(password) -> most control (crypto wallets/PKI.)

Discoverability, trust, and curation

  • How to find interoperable apps?
    • The Data Manager lists them.
  • How can we deal with the fact that apps still need to be trusted? (as they must have access to the person's data while in use)
    • The Data Manager app can audit them, and list only trusted ones which do not send let person-data leave the app without permission.
    • The person-owned database can be partitioned, with different permission to different apps (read-only, write only, etc.)
  • How can devs know beforehand what might be in the person-owned DB?
    • have a schema registry on data manager app dev homepage and within the person-owned DB.

Data management for Persons ('users')

  • Need an app where persons can browse, edit and mange permissions to all of their data in a friendly GUI.

Steep learning curve for devs

  • SDKs abstract away connecting DB, auth, and sync complexities.

Paying for and backing up person-owned data

  • Each app shouldn’t have to worry about this. The Data Management app could handle this aspect.

Handling merge conflicts

  • GUI for the person to handle conflicts. —> part of SDKs

Solutions (EduVault)

  1. Auth server
  2. Data Manager app, (or “my data home”) includes: app store, my data, login page
  3. SDKs/frontend libraries

Project structure

📦 eduvault
 ┣ 📂 api         An auth server to store person credentials and app registration
 ┣ 📂 app         'Data Home' app including app store and 3rd party login handler
 ┣ 📂 example     An example 3rd party app that uses eduvault for login and DB
 ┣ 📂 home-page   The EduVault home and info page
 ┣ 📂 sdk/js      An SDK for quickly adding EduVault into a frontend js webapp
 ┣ 📂 cypress     E2E integration tests
 ┗ 📂 deploy      nginx and ssl config files

Project setup

Config and env

Changing the .env files (see: example-env files in ./ ./example and ./sdk/js) to your own secrets, and updating the config.ts file in 'shared' should be enough to fork and run the project with your own domain name and Textile/Google/Facebook/DotWallet credentials.

To dev

Quick way to get running...

npm install --also=dev

# will install everything, build the shared library and sdk, and set up symlinks
yarn inst

yarn build:shared && yarn link:shared && yarn build:sdk-js && yarn link:sdk-js

Run just the api in docker and the rest locally you will need to install mongo-db for the local dev

yarn dev

Test

# cypress end to end
yarn test-watch:e2e
# api unit
yarn test-watch:api
# sdk test: somewhat integrated (reduires API to be running -- `yarn dev:api`)
yarn test-watch:sdk-js

Dev deploy

Recreate the production deploy on your local machine (without SSL) with:

yarn dev-build

To deploy

# connect to your server
sudo su
service docker start
# copy code into server with git
rm -fr .git # Reset old if need be
git init
git remote add origin https://github.com/EduVault/eduvault.git

# to clear and start fresh. Beware, this can erase configurations like the ssl certs.
git reset --hard origin/main
# otherwise just
git pull

# ssh copy in .env file

# Run script for SSL certificate: init-letsencrypt.sh
chmod +x init-letsencrypt.sh
./init-letsencrypt.sh
yarn production

eduvault's People

Contributors

bmschwa avatar jacobcoro avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.