Clickvote takes the hassle of building your own reaction components around your content.<p>Showing real-time updates of likes, upvotes, and reviews between clients.<p>Learn about your members through deep analytics.<p>Deal with an unlimited amount of clicks per second.<p>You can read the full article here:<p><a href="https://links.github20k.com/click-vote" rel="nofollow noreferrer">https://links.github20k.com/click-vote</a><p>The open-source Library is here:<p><a href="https://github.com/clickvote/clickvote">https://github.com/clickvote/clickvote</a><p>Please let me know your thoughts!<p>Am I building something useless?
Why do you need Kafka, Redis, Mongo, AND Postgres? Arguably it could all be done with Postgres or Redis: both have great pubsub implementations. But what could you possibly need two databases for and a queue implementation alongside a popular backend for queues?<p>I don't mean to criticize, but the complexity of this is what I'd expect for something handling hundreds if not thousands of qps. Even then I'd expect you could probably fine-tune a Redis Cluster setup and cross out 2/3 of that architecture diagram. Hell, you don't even need WebSockets: a system like this polling for an integer or two should be scalable to tens of thousands of qps.
Is the application architecture diagram a satire? It needs a lot more justification! Your documentation should very clearly explain why `upsert into user_rating (user_id, rating, thing_id)` doesn’t work at scale, and the limit where it breaks down.<p>Maybe if you’re running a “upvotes SaaS” the architecture makes sense but the given architecture diagram is more complicated than the production product I work on (<a href="https://notion.so" rel="nofollow noreferrer">https://notion.so</a>).<p>Are real-time updates a feature users want here? I’ve never used a voting or rating site with real-time updates.
Congratulations for creating a product that I believe will most certainly find a market. Like the others, I believe you could dramatically simplify the architecture, but mad props for just publishing your MVP, and throwing it to the sharks of HN.<p>It seems very clear to me that many of these sharks have never tried to implement a similar system.
I got everything that you said!
I might change it to be a bit simpler<p><a href="https://media.discordapp.net/attachments/1062038639112097872/1128353418315051038/image.png" rel="nofollow noreferrer">https://media.discordapp.net/attachments/1062038639112097872...</a><p>Happy to get some feedback on the product also :)
I actually made something similar where you can add likes and reviews to any URL. It’s at voterr.io but I never really focused on trying to make it take off
When designing a tool, scalability should be a feature not a requirement. There isn't so much value in creating scalable tools these days as they exist in abundance. What is rarer and more useful are tools that are easy to use at small scale that work without minimal modification and headaches at scale.<p>Unless you're only running one instance of this, it probably makes sense to scale back immediately otherwise your costs are going to balloon. Even then the horizontal scaling requirements of some of the "parallel" subsystems will get incredibly expensive fast.
I've been looking for something to integrate in my site that just lets unauthed users to add upvotes, downvotes, and maybe some extra ones like 'recommend' or a few general ones like 'cat/dog'. Dont need any alaytics or extras.<p>Are there any recommended good self-hosted alternatives? This looks nice but requires quite the stack of services.
congrats on learning some new tools! it is a bit 'astronaut architected' but you seem to have a history of building stuff and asking for feedback, that will always result in learning fast. hope you got some useful replies here!<p>a much simpler build system that's easy for people to adopt might have a higher chance of getting initial traction, and then you can add the layers only when they're needed. See YAGNI (You Ain't Gonna Need It) <a href="https://martinfowler.com/bliki/Yagni.html" rel="nofollow noreferrer">https://martinfowler.com/bliki/Yagni.html</a>
For me, this looks like it's useful for those wanting to create a new Reddit or similar style site. It removes the need to build a scalable upvote system.