freeCodeCamp / chapter

A self-hosted event management tool for nonprofits
BSD 3-Clause "New" or "Revised" License
1.92k stars 360 forks source link

Tech Stack #2

Closed AryanJ-NYC closed 5 years ago

AryanJ-NYC commented 5 years ago

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.

francocorreasosa commented 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?

sivatheja10 commented 5 years ago

Loopback is good for API's

briancbarrow commented 5 years ago

I personally prefer Vue on the frontend, but I'm open to others.

keyserfaty commented 5 years ago

My vote for BE goes to Node/Postgres/GraphQL

Guusy commented 5 years ago

I think we can use react, it is very popular and has a big community

mikelnorth commented 5 years ago

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

AryanJ-NYC commented 5 years ago

For those voting for Node, are you opposed to using NestJS as a framework to get up and running?

francocorreasosa commented 5 years ago

@AryanJ-NYC I like Nest, but being realistic that could block people without knowledge of Typescript from contributing.

AryanJ-NYC commented 5 years ago

I agree with that. FWIW, you can use NestJS with vanilla JS instead of TS.

Abott1222 commented 5 years ago

Golang ftw. One of the best languages for creating microservices. Also has a lot of strong ORM packages and it is built by Google.

ericvicenti commented 5 years ago

Conversation here is trending towards Node.js/React/Next.js

https://discordapp.com/channels/633401573002969128/633422435865329674

kylemh commented 5 years ago

I'd love to use https://github.com/OperationCode/front-end as a template.

It's worked well with a lot of open source contributors around the world.

chrismgonzalez commented 5 years ago

I’m going to echo what @kylemh said with regards to the stack. As far as API/DB goes - Node, Postgres, & GraphQL

francocorreasosa commented 5 years ago

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.

AryanJ-NYC commented 5 years ago

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.
QuincyLarson commented 5 years ago

After discussing this for a while, I think the consensus is:

prakashpandey commented 5 years ago

Yet another techstack suggestion!

amark commented 5 years ago

@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.

allella commented 5 years ago

Not my thread, but TypeScript folks are saying things at https://github.com/freeCodeCamp/chapter/issues/24

tesla809 commented 5 years ago

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?

amark commented 5 years ago

@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).