ColinEberhardt / applause-button

A zero-configuration medium-style button for adding applause / claps / kudos to web pages and blog posts
http://applause-button.com/
MIT License
428 stars 41 forks source link

Decentralizing the Counts #86

Closed bhadaway closed 3 years ago

bhadaway commented 3 years ago

At a certain point, I would imagine that the count data will need to be decentralized or at the very least, the data will need to be automatically backed up to a public location (on GitHub possibly), so that we always have access to it in the event that the server is hacked, the API goes down, you get hit by a bus @ColinEberhardt, or whatever. 😝

I'm more of a web designer than a programmer, so the actual nuts and bolts of such a solution are above my pay-grade, but I figured it was a conversation worth having for future-proofing the project.

ColinEberhardt commented 3 years ago

you get hit by a bus

😱

Just FYI, the back-end for this service is hosted on AWS, using DynamoDB for persistence, and a number of Lambda functions for the logic. It's all pretty simple. The code is open source here:

https://github.com/ColinEberhardt/applause-button-server

It would be relatively easy to set up your own back-end. The repo currently deploys to dev / prod on each commit:

https://github.com/ColinEberhardt/applause-button-server/blob/master/.circleci/config.yml

bhadaway commented 3 years ago

While it's always awesome to have access to the whole enchilada for the purpose of self-hosting (for which I'm sure there are plenty of use-cases, like for private communities for example), in this context, I feel like that would defeat the entire purpose of what I feel is the most valuable aspect of the entire project, which is universal, persistent count stats.

For example, say I have a button on my own site, but I'm self-hosting my own count database:

<applause-button url="https://calmestghost.com/" />

But someone else or I put the button on a different website. There would then be a fragmentation in the count, and there would be two separate counts. What's beautiful about a centralized database, is that we all use it together and therefore the data has more meaning and is persistent across the internet.

But, that then also makes the data in that database all the more precious. 🚍

bhadaway commented 3 years ago

Wait, there's one major flaw that I'm not sure how to overcome.

You definitely can't dump IP addresses publicly. That's a major privacy issue.

But, even dumping the URLs poses a privacy issue too.

And we've all seen how dumping so-called "anonymized" data has gone in the past, which anonymized data would be useless to the cause of preservation anyway. The only other solution is to have a trusted team of people at some point who all also have access to the data or backups at the very least so that it doesn't all go down with the ship if the ship goes down.

So, I think it's closing time for this idea.