HACKER Q&A
📣 aslukili

What is your advice for someone trying to build a “Hacker News clone”


I am a learning a new stack and I thought of building a HN clone to use what I'm learning (Spring boot & Angular). I don't have so much experience with web development (haven't used any front-end framework before), but I was messing around with some PHP/Laravel for (almost) the last year.

would you encourage me to go with this Idea? or you have another suggestion? if yes, which database do you think a should use? a relational (I'm a bit comfortable with Postgres) or some non relational (MongoDB). also if I want to put this in a micro-services format, how do I split up my services (like submissions, profiles...) I am new to this. I'm asking about which database since the mentioned stack is terminated by my school, but not the database.

as I said, the purpose of this project is education purposes only (also to show off on my resume/portfolio).

Thanks in advance


  👤 PaulHoule Accepted Answer ✓
If you are starting out don't even think about microservices.

I haven't heard about anybody using Angular for like... 6 years now. Look at React, Vue or Svelte.

You can't get fired for choosing Postgres. Mongo is no damn good.

If I wasn't preoccupied with making social systems intelligent (e.g. use classifiers and clustering to only show you good stuff) I'd be thinking about using websockets to make the site update itself in real time. It would make one heck of a demo (one person posts something, the post appears right away in another browser) but I am not so sure what kind of database you'd use to support that. If you use React or svelte the front-end for that would be easy.


👤 Nextgrid
Don't just start with a relational database, but keep using it. There's very few use-cases for NoSQL document-oriented databases and this one is definitely not it (at least not as a primary datastore - you may use those for search in addition to your primary which will be the source of truth).

👤 dflock
The PHP/Laravel community seem to like VueJS for frontend work, so there's lots of documentation/articles around using them together.

If I was you, I'd just to VueJS -> Laravel -> Postgres to start with.