Show HN: I made my first Open-Source Software – synchronizes computational power
TECH STACK So, what tech stack did I use to create this software, the server, and the website?
> For the software, I used Electron with an Electron template I made that makes making software with Electron feel even closer to how you’d create a Next.js website. I configured it to use TypeScript, React, TailwindCSS, and ShadCN with Vite. In my honest opinion, it’s pretty fly. Now, the reason why I chose Electron is simple. I didn’t need something that’s really performant since I was just receiving, saving, and sending data, so I instead wanted something elegant and easy to plug and play on multiple OSes. Since I already knew TypeScript, it wasn’t a difficult choice. Next time I’m creating software, though, I would probably go for something like Avalonia UI with C# since I like trying out new things.
> For the server, I used Express.js with plans to switch it all to Bun soon so I can get that sweet, sweet multi-threaded performance. I store information like whitelisted and blacklisted MAC ids in a local SQLite database
> For the website, I used Next.js and a doc template I found online to create these beautiful documentation pages. It works quite well and I really like it.
If you like this project, I’d be very thankful if you could star it on GitHub!
HOW DOES THE DATA DISTRIBUTION WORK? And how is the data being distributed? In the software, you enter the specific URL where your server is hosted, and a WebSocket connection will be established between the device and the server, which sends slices of the data. When the data is processed, it is then sent back to the server, which flips a boolean in the database for the device, which tells the server that the device is ready to accept more data. Another thing that happens when the server receives the data is that it stores it in a MongoDB collection. Every document in MongoDB has a unique ID in a collection. When work is sent, the IDs are “assigned” to the device so that you can track what data went where.
WHY DID I CREATE THIS I created Quantum Grid because I had a hard time using the already existing options that synchronize multiple computers from a distance, allowing them to work together. More specifically, I had a hard time with BOINC. That’s what led me down the rabbit hole of looking at distributed computing systems, volunteer computing, and distributed computing frameworks. Now, these topics are so broad that they each deserve an article of their own, but for now, all you need to know is that Quantum Grid is a distributed computing framework. It means that my software and the server that comes with it allow you to create a distributed computing system, which, as we talked earlier, allows you to synchronize computational power between multiple devices, allowing for easy horizontal scaling.
HOW IS THIS DIFFERENT Let me explain to you what makes this different from the other already existing options out there. First of all, who are the already existing options out there?
> Well, there’s the main one: BOINC, which is mostly used for scientific research. > There are BOINC wrappers, which, as the name suggests, are software that use BOINC as their backbone, but for the completion of tasks give rewards. > There’s also the discontinued XGrid created by Apple 20 years ago > And all the ones custom-made for the private sector.
That’s why I realized there needs to be an open-source alternative that doesn’t take hours to set up properly.
No comments yet