DEV Community

Alex Zinevich
Alex Zinevich

Posted on

"ECHO": How I Built a Digital Ark for Ordinary People So Their Voices Never Fade Away

This post could probably be titled "When an Old-School IT Guy Gets Fed Up and Wants to Build Something Interesting" — but that would only capture part of the story.

The project I'm about to share was born from years of accumulated thoughts. Holding my second printed book in my hands (not a programmer's handbook, just one about dreams, family, love, children, and all that), I thought: I'm a decent guy, wrote another book, managed to tell my story... But there are so many amazing people around who either don't have the gift or the time... What will remain after I'm gone? My sons, a grove of trees, books, and the house I built. Cool. I'm okay with that.

But what about someone who's simply a good person — and fate just didn't give them the chance to leave any of these marks? Who will remember them in a year? Maybe. In ten years? Possibly. But in 100 or 1000 years? They were probably cooler, kinder, wiser... or just as inventive as da Vinci, whose works and name still echo through time.

Why do dictators and maniacs get to stay in humanity's memory, but most ordinary people don't? The ones who give birth, raise children, save lives, teach, heal — quietly and daily? They also have dreams, plans, achievements, and seeds of wisdom they'd simply like to share with the world.

Anyway, that part is clear enough.

I teased the "old-school IT guy" angle earlier... Yes. Since December 12, 1989, around 3:40 PM (I typed "HELLO" on an Soviet's AGAT-9 computer terminal and got the response you'd expect)... Obviously, not all these 35 years were pure "log in, log out" — I built several careers in different fields, "from the basement to the penthouse." And... I got fed up. Now I'm just working remotely in a mediocre position, picking through someone else's poorly documented legacy spaghetti code (I hate it!). You understand — to avoid accumulating negativity, I invent interesting challenges for myself. And one of them eventually found its technical solution.

Enough lyricism and philosophy — let's get to the hardcore part. (Screenshots here: https://postimg.cc/gallery/bJYK8xc)

The Task
Create a maximally indestructible, easily deployable service — with no libraries or dependencies — that can cheaply store massive amounts of data without drowning in it. Oh, and wrap it in an interface using the same approach.

The Problem
I don't have money to open a data center, but I do have a couple of home servers packed with hard drives and DDR5. Why let that hardware sit idle, just running my personal Google clone, smart home system, and various other small conveniences?

In short, everything needs to "run" on modest hardware. Honestly, at one point I thought I could even cluster it all on Raspberry Pis... sadly, that's overkill.

The Goal: Why This Beats... Facebook, for Example?
First... today they exist, tomorrow they'll fade away like ICQ did. And they'll take with them all that valuable emotional cargo — cat pictures, reposts of other people's thoughts, and advertisements. It's no coincidence that corporations increasingly think about how to legally delete inactive users' data — storing, analyzing, manipulating, and selling that much content is quite a challenge for data centers. One misstep — you're bankrupt, and your servers end up on eBay.

And what about those who lived and believed that their memory would remain? That people would remember what wonderful individuals they were? Nothing.

From this comes my "second point." Simply give a person the chance to think carefully and extract what's most important, most vital in the moment... And that can easily fit within 300 characters. And yes, life, views, and thoughts change — you can always edit it later.

Project "ECHO"
Cut away everything unnecessary, and we get:

"ECHO" is a digital archive where anyone can leave an immutable message for descendants. You create your own "star" on a virtual map of the universe, filling it with your name, birth date, a photo, and your main text (manifesto). The star will exist forever, even after you're gone. No advertising, no personal data collection, no intrusive services — just your memory.
(quote from the user manual)


Now, let's break down the final solutions for this information set, multiplied by... hmm... My servers, by my calculations, can comfortably handle (main + backup) about 250 million records. Horizontal scaling and clustering of similar hardware, with minimal optimizations, could potentially handle 200 billion stars — all displaying smoothly in a browser.

Implementation
Storage — File System. Why not a database? Simple: eliminating the DB eliminates a single point of failure and simplifies data recovery directly from storage media. What version of SQL will exist in 1000 years? Would I have to constantly update, monitor, and ensure nothing breaks? Why?

Software. We write it ourselves — in Go. Why not C, C#, PHP, etc.? Same logic as the DB question, plus — the service compiles and runs. It doesn't care what version came out, what stopped being supported. Compile it — run it. And yes, I admit: it was interesting to try something outside the .NET ecosystem.

What do we serve to the client? Pure HTML, JavaScript, CSS, but most importantly — data in simple JSON. Change whatever you want, use any frameworks — the data will outlive most of them. Yes, this imposes limitations on "bells and whistles," but stability and reliability become predictable. And if you want, nothing prevents you from attaching an Android app to the API.

As you can see, the stack ended up being so primitive by my requirements that at some point I thought: nothing will come of this. But key questions still needed solving. Let's move to them.Authentication

We're all used to registration forms that ask for everything but your grandmother's shoe size. They promise not to spam, not to sell your data, to securely store passwords... Well, you know how that ends. How to live?

How to handle authentication? Simple! It doesn't exist. Instead — a token.

When a star is created, the server generates a 32-character key (format XXXX-XXXX-XXXX-XXXX) and shows it exactly once. After that, it's never stored in plain text anywhere — only in the star's data folder name. During development, I had to add a PIN that specifically grants editing access (the author enters PIN + token to edit, while a trusted person only needs the token to confirm death).This token is everything. Want to edit your message? Enter the token. Want to confirm death? Token. Lost it — that's it, your star is gone forever. No "reset password by email."


Why? Because no email means no spam. No phone number means no database leaks with numbers. No passport data means nothing to sell. Absolute anonymity, but the price is responsibility. Saved the token in three places, engraved it on your watch case, buried it in the garden — good job. Didn't — tough luck. Someone managed to steal it? Well, friend, that's on you. Anyway, you probably didn't leave your apartment keys in a hidden message. And if you did, you're probably cautious enough to have hidden them well.

And yes, this bypasses a ton of problems with GDPR, federal data protection laws, and other legal headaches. We simply don't store anything — and sleep peacefully.

This mechanism allowed us, using minimal data, to separate rights between "author" and "trusted person." The first uses PIN + token and can do whatever they want with their profile; the second's task is to carry out the final wish and fix their loved one's most important words in eternity.

Token Protection. Standard brute-force protection, verification delays. With this many token combinations, plus at least a one-second pause, plus strict blocking after failed attempts — all this prevents potential botnet trolling. Simple and elegant? I think so.

Moderation
This was the next important question. Nobody will moderate this much content for free, and we're not planning to sell out to corporations. So we need another elegant solution.

So, someone posts a photo of their "bits" or calls for extermination. What to do? First, it needs to be found and seen. Finding it among millions of stars... well, either randomly or deliberately. But then we switch to self-regulation mode, with guaranteed protection from political regimes, social hierarchies, and other garbage.

Once 3 complaints are received (click the flag icon on a profile) — we block content display for a week. After a week, it reopens... if it gets 3 again — a month... then a year... ten years... a hundred years... and finally, even if after 100 years the message is still considered offensive, it's hidden forever. But not deleted! We keep our promise of Eternity. If intelligent dinosaurs eventually replace our civilization, they can check it out and have a laugh.

Moreover, this mechanism protects against people who just want to harm someone. To block an "enemy's" star, a hypothetical attacker would have to live at least 111 years (60 days quarantine + a week + a month + a year + 10 years + 100 years) and not forget their little scheme.The result — no censorship, no admins, no comrades from government agencies. If some official body doesn't like something — they can visit, click, and done. What one political figure dislikes today might be appreciated by another in 10 years.

Spam
This was another challenge — miracle marketing promising certain enhancements... But we found a solution that kills two birds with one stone. Working name — quarantine.

After creation, a star enters quarantine for 60 days: the photo, name, and text are completely hidden from everyone except the owner (via token). This protects against bots and spam — marketing campaigns requiring immediate impact lose their point, and the author has time to reflect on what they've written. Pretty cool, right?

Storage
This seems simple and complicated simultaneously. The planned scheme: two hot storage servers with backups to another server. Similarly, a geographically separated pair with failover and synchronization. Then, periodically, we burn all accumulated data to the most reliable media available. Currently, that's probably M-Disc (optical discs with a claimed lifespan of up to 1000 years). What it'll be tomorrow — I don't know.

Copies accumulate... What to do with them? Don't throw them away. Just distribute them across bunkers, nooks, caves, and at the first opportunity, send them off after the Voyagers. So no matter what happens to civilization, there will always be a copy of the messages and photos from their authors.

Technically, we had to figure out the format. We decided that the simplest filesystem, like on CDs, is the most survivable and easiest to recover — even for alien intelligence.

Scale
Obviously, the next question is: what volumes are we talking about? You can calculate it yourself, even considering we use UTF-16 characters to support all languages. 15 TB on SSD sounds scary today. Especially since they need at least double duplication. But remember: I once had a friend bragging about his new 1 GB hard drive! Cost insane money. And now? In short, we're not afraid of scale issues.

When Will Problems Start?
Clustering and sharding are already designed in... but that's a matter of when we register at least the 200-millionth profile (yes, I allowed myself to dream big).

The Interface
This turned out to be extremely difficult — going without libraries and frameworks while maintaining full autonomy and independence. I had to write everything from scratch in vanilla JavaScript.


How It Looks: The Map and StarsThe main page is a map of the universe (looping, 5000×5000 pixels). Galaxies (circular previews with nebulae) are scattered across it. You can drag with the mouse, zoom with the wheel, or on the phone — with your fingers.

Click a galaxy — you dive inside. Thousands of stars: gray (empty), pulsating white (living), shimmering (frozen). Double-click an empty one — you create your star. Click a living one — you read the manifesto, see the photo, view the dates. Everything is minimalistic, without unnecessary animation, but there's a sense of space.

For search — a token input field. Find a star — the map centers on it, and the object highlights. There's also a "Journey" button: random stars appear one after another on screen. Since these are real thoughts from real people, as they wanted to express them... it gives you chills.

What's Next and Where to Try It
The project currently lives on my servers. It's available at: Project-ECHO.org There might still be occasional downtime for updates, but you can already use it — for free and without limitations.

Of course, I need testers and UI/UX specialists — maybe someone wants to help polish the interface? I'd welcome feedback. Don't be shy — I've read criticism of my books and survived.

Why I Believe in This
Because every one of us has something to say. Not for likes, not for reach, but simply to remain. So that in a hundred, two hundred, a thousand years, someone might stumble upon your star and read: "I loved, I raised children, I believed the world could become better." This is ECHO — a quiet voice that will not disappear.

If you feel like it — come in, give it a try. And if you've picked up some solutions for your own challenges... I'm glad. Thank you for your attention!

PS. Huge thanks to everyone who participated, helped analyze, and offered advice. May borders and languages separate us — in Eternity, we're always close.

Top comments (0)