0.1.1 • Published 6 years ago

oyod v0.1.1

Weekly downloads
1
License
ISC
Repository
-
Last release
6 years ago

OYOD - Bring Your Own Data

OYOD is an aspiring movement and ecosystem where users take back control of their data. In return, developers can build cool and useful apps without worrying about the app making money to be sustainable.

OYOD is Decentralized SaaS for Web 3.0.

Current status: Prototype, in development, with demos.

Requirements

  • Node 6.13.0+
  • Your own server (for hosting)
  • Your own computer (for testing)
  • Node 7.5.0+ --harmony (if developing)

Concepts

  • User - A normal internet user.
  • OYOD Home - A server that houses a user's data for potentially many apps.
  • OYOD App - An app that stores its data in a OYOD Home (see the helper library)
  • Developer - The developer that creates and maintains their respective OYOD App.

A OYOD Home is where a user's data lives. With a OYOD Home, a user may sign into an oyod-app, kicking off the following:

  • oyod-app requests access to user's OYOD Home via OAuth.
  • User accepts or rejects.
  • If accept, Home creates an isolated database for oyod-app.
  • oyod-app gains an access token to read and write to this database (via an HTTP API).

Once an oyod-app has an access token, they are free to create and read data as it sees fit to best serve the user. Because there is no central database, an oyod-app does not need to worry about scaling, and can even be a CDN-delivered static SPA.

A OYOD Home can host data for any number of oyod-apps. The user only needs to pay for their Home's server hosting costs.

Use Cases

The concept of users hosting their own data opens the door to many possibilities.

Utility Apps

There are many apps that can be useful but just not quite enough to warrant charging money for. For example, take a bookmarking app. Users want to save, sort, and share bookmarks. However, as a developer it can become expensive to keep your app running if it gets popular.

Historically, many useful apps have shut down due to the hosting costs associated with the scale of their popularity. This includes:

  • pastie.org, a snippet pasting website
  • etherpad, a realtime, collaborative text editor
  • del.icio.us, a bookmarking website

With OYOD, you as a developer can write an app without worrying about such costs, and your users can feel safe knowing they won't ever lose their data.

Security Apps

Have you ever seen an note app where you can encrypt a note and send it to your friends/coworkers? How do you know they're not sending your data to their own servers? If not today, then tomorrow?

OYOD will not only allow users to host their own data, but also their own security apps. Taking the previous example, a user would be able to install the "EncryptedNote" security app onto their own OYOD Home. This app would not be able to make ANY external requests, guaranteed by CSP; it would be impossible for the EncryptedNote app developer to ever see your data.

Because security apps are versioned, the EncryptedNote developer – if so desired – could charge for app code updates to support continuing development.

Split Hosting

Leaning on OYOD doesn't preclude making money. For example, a Slack app alternative could host their own user accounts and chat servers, but store chat history and file uploads on an admin user's OYOD Home. This could dramatically cut costs on hosting, make users feel safe about their data, and allow developers to make money for their work, all at the same time.

What about IPFS / Dat / etc?

IPFS and alike are solutions for a more distributed web. OYOD does not compete, but complements these solutions. For example, you might host your oyod-app's HTML/JS/CSS/image assets on IPFS, and have users store data on their respective OYOD Homes.

Roadmap

  • OAuth grant to oyod-app's own database
  • Path-Value API
  • User-generated refresh tokens for granting more trusted API access to own Home data
  • Standard datapoint bookmark API
  • Cross-oyod-app Home search
  • Search API
  • OAuth grant to other oyod-app databases
  • Security oyod-apps & encrypted storage, secured with CSP
  • Subuser account management
  • More data APIs (realtime? graphql?)

Getting Involved

If you're a developer and want to get involved, here are some places to get started:

  • Build your own oyod-app: an app that stored data in a OYOD Home. It's possible to do this using plain HTML/JS/CSS like the demo – no backend required.
  • Create an issue and get the discussion started on private oyod-apps.
  • Write a blog post or tutorial on how to set up your own OYOD Home server.
  • Create an issue to suggest ideas for more useful APIs.
  • Help work on an item on the roadmap!
  • Make it easier for users to set up their own OYOD Home server (I hear people like docker)

Setting up your own server

OYOD is in alpha. Here's how you can test locally:

git clone https://github.com/oyod/oyod-home
cd oyod-home
npm install
npm run setup
npm run dev

Now visit localhost:8484

Production

(not yet recommended)

git clone https://github.com/oyod/oyod-home
cd oyod-home
npm install
npm run setup
cat 'NODE_ENV=producton' >> .env
npm run build

Development

$ npm install
$ npm test
$ npm run dev

Philosophy

  • Low tech server-side
  • Mild tech client-side
  • High-ish but straightforward tech testing-side

Credits

splash.jpg photo by NordWood Themes