Closed AryanJ-NYC closed 5 years ago
Thinking about a tech stack, the first thing it comes to my mind is using React with Next (for simplicity) and Node.js with any relational database (could be Postgres maybe) in the backend. connect those two with a REST/GraphQL API, and use Mandrill/Sendgrid/Custom SMTP for email sending.
Any thoughts on that?
Loopback is good for API's
I personally prefer Vue on the frontend, but I'm open to others.
My vote for BE goes to Node/Postgres/GraphQL
I think we can use react, it is very popular and has a big community
I think low point of entry should be highly considered as well including the scalability. This way we can try to get big buy-in from the community, especially those who have never contributed in open source.
The FCC curriculum should also be considered and built upon what is thought there IMO but am happy to contribute to what the general consensus is.
I think using either React or Vue on the frontend and Node on the backend gives great scalable benefits, as well as a massive community that could get involved.
I prefer a Postgres DB but could be swayed. same goes for REST VS GraphQL, I would hang towards REST for the simplicity of securing endpoints and providing only designated data
For those voting for Node, are you opposed to using NestJS as a framework to get up and running?
@AryanJ-NYC I like Nest, but being realistic that could block people without knowledge of Typescript from contributing.
I agree with that. FWIW, you can use NestJS with vanilla JS instead of TS.
Golang ftw. One of the best languages for creating microservices. Also has a lot of strong ORM packages and it is built by Google.
Conversation here is trending towards Node.js/React/Next.js
https://discordapp.com/channels/633401573002969128/633422435865329674
I'd love to use https://github.com/OperationCode/front-end as a template.
@testing-library
as an adapter for both.It's worked well with a lot of open source contributors around the world.
I’m going to echo what @kylemh said with regards to the stack. As far as API/DB goes - Node, Postgres, & GraphQL
I'm thinking we could use Next for both SSR and API routing (this is newly supported, but it seems promising) unless you want to go with something like raw express.
From the Discord channel:
- Node.js/Express backend
- Postgres as the database (with Sequalize as the ORM)
- React front end
- Maybe GraphQL but not too much fancier than that.
After discussing this for a while, I think the consensus is:
Yet another techstack suggestion!
@QuincyLarson if you want Chapter to be self-hosted & still synchronize events/accounts between different peers, please consider GUN - it is used in production by HackerNoon and others with millions of users and is Free & Open Source.
Every user/browser will also help host Chapter. What this also means is that a user account is not "tied" to a particular server, that same account can be re-used across all other self-hosted Chapters.
This isn't possible with Master-Slave database. However if portability between self-hosted Chapters is not a high priority, please ignore.
Not my thread, but TypeScript folks are saying things at https://github.com/freeCodeCamp/chapter/issues/24
Thoughts: For back end: make it completely decentralized. Libp2p: for peer routing protocols to create a website where the clients are also the servers. They have a JS implementation.
Databases, OrbitDB is a decentralized database built on top of IPFS. Thoughts?
@tesla809 the value+add for decentralization is being able to reuse same account across different self-hosted organization's Chapters.
Decentralizing Chapter for the sake of Decentralization is (I'm guessing) not in the spirit of freeCodeCamp's #shipping culture, especially given the performance problems of Orbit/IPFS (but hey, I'm biased with GUN, which is similar in letting users/browsers help host the data but already is running in production with 6M+ users).
In an effort to consolidate discussion, what tech stack should we use for the back-end? Front-end? Database? REST or GraphQL? Any services we should leverage? Should we use a monorepo?
I've had great success with NestJS as a backend framework (it's based off Node) and would suggest we use that.