Giter Club home page Giter Club logo

lets-stay-in-touch's People

Contributors

svub avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

ltfschoen

lets-stay-in-touch's Issues

Contacts list

List of all contacts, with basic info such as name and maybe location. Could be grouped by location.

Contact details v2

Add possibility for user to add additional info to a contact that will stay besides syncing updates from contact.
Improve UX where possible.

Settings panel

A settings page with

  • how often to sync
  • how often to remind to update location
  • if it should try to figure current location during sync (via IP) and remind to update location if it changed?
  • [ ]

Basic contact store v1

Module that can persist contact info. For v1 that can be locally in IndexedDB.

  • Create(pub, [info]): contact "create contact for given pub key, optionally initialize info about contact"
  • Update(pub, info): contact "update info for this contact"
  • Get(pub): contact "get contact associated to given pub key"
  • Delete(pub) "delete contact for given pub key"
  • List(): pub[] "get all pub keys in storage"

Info is a map of key-value pairs. There might be a set of standard keys, e.g. "email", "mobile", ...
A contact basically is a pub key and associated info - while the info could be separated into the info provided and updated by the person the contact represents and the info the added by the local owner of the address book.

Basic app structure

Setup basic Vue/Ionic app structure for hybrid app.

The app needs slots for:

  • Contact list
  • Contact details
  • Add new contact (scan code)
  • Be added as a contact (show QR code)

For simplicity, advanced aspects such as a settings panel or a map view to visualize the location of all contacts are left out.

remote sync controller

TL;DR Checks all remote repositories, merges the info and updates the contact store.

Remote repositories are used to publish profile changes -- could be anything from Google Drive to IPFS. The updated info is encrypted individually for each of the user's contacts that this update is intended for by using their individual pub key. This way only the intended contact can decrypt the information and in turn update their local storage with the new information for this user.

This component will handle pushing and pull updates over all configured repositories via a plugin architecture.

  • pushUpdate(): encrypt and publish profile to all contacts
  • pullUpdates(): get updates for all contacts from all repositories
  • enableRepository(id): configure a new repository

Update page v2

User can edit/update their data and configure what data should be shared with whom.
What would be the optimal UX? Access rights per contact, per group, both?

Can it be a basic web app or does it need to be a native app?

The motivation for creating a web app is the ease of on-boarding. You can share a link or QR code and with a single step a new user is on-boarded. So this is a place to keep track of prerequisites and if they are met or not.

  • Geo location: can be used in a web app, but not in web workers, thus, to share an updated location, the user has to open the web app. User could be reminded to open the app in user-defined intervals.
  • Work in background: web workers should be able to poll for new info posted by contacts
  • Notifications: desktop and Android should work according to web standards use web notifications, need to validate for iOS

background service web worker

basic web worker that gets triggered regularly (settings).

  • starts sync controller
  • checks for location*
  • notifies if user location seems to have changed*
  • notifies user if contact is close by*
  • if configured to do so in settings. v1 can use simple config file.

Update page v1

Place where the user can edit and update their data. No "what to share with whom" in v1

remote storage v1

Basic plugin's for the syncing system to exchange updates and backup the user's contact book.

  • publish updates
  • pull updates
  • back-up user data
  • optionally back-up private key (password encrypted)

Add contact in app v1

UI: Just a simple input box will do to enter the data that would usually be scanned from a QR code.
Add contact info to contact store

basic crypto

Module for basic cryptography of the app. Create will be used when a user starts using the app to create a new pk/pub pair. Updated info from contacts can be decrypted and new updates of the user's info can be encrypted.

  • create(): pair "create a new asymetric key pair"
  • encrypt(pub, info): string "encrypt info using given pub key"
  • decrypt(pk, string): info "decrypt info using private key"

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.