Closed bhadaway closed 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
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. 🚍
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.
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.