Giter Site home page Giter Site logo

superuserlabs / thankful Goto Github PK

View Code? Open in Web Editor NEW
116.0 10.0 8.0 12.97 MB

Support free culture by automatically sending cryptocurrency to the creators of the content you love.

Home Page: https://superuserlabs.github.io/thankful/

License: Mozilla Public License 2.0

JavaScript 18.85% Vue 35.26% Makefile 1.63% Python 2.81% TypeScript 40.48% Pug 0.38% HTML 0.42% SCSS 0.18%
cryptocurrency donations activitywatch payments micropayments decentralized

thankful's Introduction

Thankful

Build

Support free culture by automatically sending cryptocurrency to the creators of the content you love.

Thankful is an app that keeps track of the websites you visit, the videos you watch, the music you listen to (not yet), which applications you use (such as Thankful itself) and then tries to figure out who created it so that you can choose to easily support those you find deserving, by directly sending them cryptocurrency.

This helps solve a fundamental issue on the internet where ad-funded creators have incentive to steal your attention as long as possible instead of providing you with as much value as they can. By using Thankful, you incentivize creators to spend more time and effort on creating what you want, and reward those who do.

Thankful is being developed by Superuser Labs. We hope that people will want to express their gratitude towards others so we can have healthier incentives on the internet.

Get the alpha!

Get extension for Chrome Get extension for Firefox

Features

  • Direct-to-creator payments (no middle men!)
  • Keeps track of the creators you visit on YouTube, Medium and GitHub (more coming soon, create an issue if you have a request!)
  • Decentralized
  • No special token
  • No forced fees (but we hope you will be thankful and support our continued work!)

But there's a lot more coming, you can read about the features we are planning in our wiki.

What content can currently be funded by Thankful?

We want to make it easy to support creators on all platforms and mediums. These are the things we're currently supporting:

  • Videos: on YouTube
  • Code: on GitHub
  • Writing: on Medium

We want to support more types of content on more platforms, see this page in our wiki for our ideas.

Project setup

npm install

Compiles and hot-reloads for development

npm run serve

Compiles and minifies for production

npm run build

Lints and fixes files

npm run lint

Customize configuration

See Configuration Reference.

Thank you

  • Satoshi Nakamoto & the Bitcoin community: for bringing cryptocurrency to the world, without which decentralized payments would remain a dream.
  • The Ethereum community: for building a great developer ecosystem that enables us to build stuff like this.
  • Patreon: for the immense success you've had taking patronage for online creators mainstream and creating a sustainable source of income for creators.
  • Open Collective: for creating a new standard of transparency for open communities.
  • Bountysource: for creating an interesting way to fund open source development.
  • Flattr: for pioneering microtransactions/tipping.
  • Yours: for trying something crazy. (see video: "Improving Content Quality with P2P Micropayments")

We've been keeping track of and learned about alternatives to Thankful that you can read about in our wiki.

thankful's People

Contributors

ahnlabb avatar dependabot[bot] avatar dwilid avatar erikbjare avatar johan-bjareholt avatar patriklaurell avatar powersource avatar vlthr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

thankful's Issues

Think about rewards for donating

In its most basic form we need a way of informing creators of who has donated to them. MVP would be letting user map a donation address to a username e.g. by having their address call a function in an ethereum contract.

If we look at e.g. Twitch streamers, this would probably be required for them to take Thankful seriously. Donors expect something to happen on stream in reaction to their donation, e.g. showing a message on screen.

Do we/users want some form of token proof for donating? #3

Send "thanks"

We want users to be able to send "Thanks" right away without having to deal with Metamask and similar.

This would just be sending a POST request to a server.

How to make transactions?

Problem

We thought we could use MetaMask from the extension, but apparently, you can't use the MetaMask provider from a web extension.

Solutions

  • Create raw transactions, ask people to sign and send them using MyEtherWallet
  • Create a wallet in Thankful
    • Con: Complex?
  • Build a payment gateway
    • Have an API that takes as input (creator/addresses -> amount) mappings, signs and sends transactions.
    • Con: The simplest version would require us to keep a private key/wallet for users.
  • Create a gateway that only interacts with MetaMask
    • Con: Likely security problems

Research to do

  • How does Web3 work in more detail, what are the capabilities? What does providers actually provide?

(Discussed with @Powersource)

A "Thankful" Ethereum contract

When we donate, we sometimes want a receipt to prove to someone that we actually did. We want something back, so a token would be neat.

A type of "supporter token" that serves as proof of the support of a certain creator. Could be used by the creator as a type of "loyalty points", or just as an artificially scarce collectible.

How to get the word out?

  • Subreddits
    • r/cryptocurrency
    • r/ethereum
    • r/opensource
    • r/rad_decentralization
  • Reach out to YouTubers (which?)
  • Facebook groups (which?)
  • Twitter (who?)
  • People at The Ground (good for direct feedback, but who?)
  • AlternativeTo
    • Alternative to: Patreon, Flattr, Open Collective, Brave
  • ProductHunt?
  • People we already donate to on Patreon etc (ask me)
  • Blog post
  • SSB post
  • BitcoinTalk

Use "Thanks"

Right now users can click "Thanks" in the popup but it has no real effect.

I'm thinking so far we'll just include it in the $ distribution heuristic in some simple way. Simplest is to make it count as ~1 hour, but from feedback it might make more sense to make it equal some fixed amount of $.

ActivityWatch import script

It would be nice to have an ActivityWatch import script.

Things needed:

  • Calculate time spent on each URL
  • Get YouTube creators for each YouTube URL (use API)

Display errors

A snackbar is probably enough. Depends on what we're gonna use it for. We should probably only use it as a fallback when we don't have a better way to show an error.

Enable eslint for .js files

Right now, due to --ext .vue when you run npm run lint, eslint is only run on .vue files. From the documentation --ext [String] Specify JavaScript file extensions - default: .js.

Explain the architecture

Components:

  • WebExtension that collects usage data and provides the UI
  • [optional] A local ActivityWatch instance to get more usage data (such as applications, listened to Spotify tracks, Chromecast history)

These are the parts needed:

  • Data sources
    • Activity
      • Time spent
        • From web extension
        • Alternatively: import from ActivityWatch
      • Thanks/likes/favorites/olympic scoring (see #1)
    • Relationships
      • Which creator does this activity/content belong to?
        • YouTube: by crawling the active video for creator URL in a content script.
    • Manual entry of any creator/project not automatically detected
  • Data processing
    • How much time is spent on each creator?
    • Computes (meta)data
      • For creators: How much time spent on each given creator?
      • For activities: Classify/categorize/label/tag activities by category or
    • Scoring
      • Manual payment by the user is the most basic implementation (implemented as of 2018-06-21)
      • Automatic scoring could approximate who should get how much
        • Playing around in #24
    • Maps a creator to a payment addressGathers info about payment methods (looks up donation addresses for creators, somehow #23)
  • Payment
    • Create, sign, and publish transactions for outstanding payments
      • Early version might require external wallet software such as MyEtherWallet for signing transactions. (Fixed in #12)

It would be nice to map these out in a neat diagram or something, might help explain how it works.

Formulate long-term strategy and vision

We've been talking about this internally, but it is about time we write it down and get it out there.

Things to include:

  • How we will make a difference for the creators of videos, software, books, and music.
  • How we will help advance the crypto space.
  • How we will create incentives for people to donate.
  • How we will function as a team, relying on donations ourselves.

Donation receipts to creators

There is a fundamental problem with our current barebones "just send the money directly" solution: Creators want to know who is donating, and supporters might want to let the creator know that they support them.

This is also important for organic growth since it informs creators who receive donations that they are making money thanks to Thankful.

Email

The standard way to receive receipts today is by email. It would be nice if we could somehow create a way for supporters to automatically send emails to the creators whenever they donate (and include things such as transaction ID and amount sent).

Pubmed support

Would be really cool to support pubmed authors. What do you think @ahnlabb?

Maybe use the doi?

Migrate database to saner schema

  • All objects should have an integer ID as its primary key
  • Foreign keys should have the foreign field in their name (i.e. activity.creator -> activity.creator_url, or with an integer ID key: activity.creator_id)
  • Allow each creator to have multiple profile URLs (i.e. both a YouTube URL and a GitHub URL)
  • Allow each creator to have multiple payment addresses, i.e. Ethereum (mainnet), Ethereum (Ropsten), Bitcoin (even if we don't support it yet, the same logic should apply)

Move all of our pseudo-kanban post-its to github issues

Since development is going to slow down a lot after this week due to multiple reasons and we're also eventually going to leave our ventilation-kanban-board and go (mostly) remote-only, we'll have to move all current post-it issues into github issues.

Add support for creators on GitHub

Implementation plan:

  • Fetch all unattributed activity on the GitHub.com domain
  • Figure out the project/creator for all URLs
  • Create creators if they don't exist for all URLs and attribute the activity

Canonicalize URLs

YouTube videos for example might have the URL:

https://www.youtube.com/watch?v=8kX62n6yNXA&feature=youtu.be&t=5s

Which should just count as the URL:

https://www.youtube.com/watch?v=8kX62n6yNXA

Add "Thanks!" button

Handing out "thanks" manually could be a great aid in marking which content one really enjoys (and wants to thank for), doing it manually also acts as a way to "favorite" content while browsing.

Possible solutions:

  • Turn web extension icon/popup into a Thanks-button
  • Import likes/favorites/stars (from e.g. YouTube, GitHub)
  • Thanks button next to like/dislike buttons on YouTube

Support SoundCloud

This requires a major rewrite since URL to creator currently is a many-to-one relationship. On SoundCloud the URL isn't interesting, what you listen to is, you might listen to several creators from the same URL.

#14

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.