Skip to content
This repository has been archived by the owner on Jun 9, 2023. It is now read-only.

Tech Stack #2

Closed
AryanJ-NYC opened this issue Oct 14, 2019 · 21 comments
Closed

Tech Stack #2

AryanJ-NYC opened this issue Oct 14, 2019 · 21 comments

Comments

@AryanJ-NYC
Copy link
Contributor

AryanJ-NYC commented Oct 14, 2019

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
Copy link
Member

francocorreasosa commented Oct 14, 2019

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
Copy link

Loopback is good for API's

@briancbarrow
Copy link

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

@keyserfaty
Copy link

My vote for BE goes to Node/Postgres/GraphQL

@Guusy
Copy link
Contributor

Guusy commented Oct 14, 2019

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

@mikelnorth
Copy link

mikelnorth commented Oct 14, 2019

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
Copy link
Contributor Author

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

@francocorreasosa
Copy link
Member

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

@AryanJ-NYC
Copy link
Contributor Author

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

@Abott1222
Copy link

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
Copy link

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

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

@kylemh
Copy link

kylemh commented Oct 14, 2019

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

  • Next.js (React) with Now for continuous deployment.
  • Jest for unit tests and Cypress for integration tests. @testing-library as an adapter for both.
  • Storybook for component workbenching
  • Mergify for automatic dependency upgrades
  • CircleCI for continuous integration.

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

@chrismgonzalez
Copy link
Contributor

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

@francocorreasosa
Copy link
Member

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
Copy link
Contributor Author

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
Copy link
Contributor

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

  • Node.js / Express backend
  • Postgres with Sequalize (no GraphQL for now)
  • React front end using JS (not TypeScript) and CSS (not Sass)

@prakashpandey
Copy link

Yet another techstack suggestion!

  • Golang for backend
  • React for frontend
  • Rest over any RPC framework
  • Postgres/MySql/Mongodb
  • CircleCI for continuous integration

@amark
Copy link

amark commented Oct 15, 2019

@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
Copy link
Contributor

allella commented Oct 15, 2019

Not my thread, but TypeScript folks are saying things at
#24

@tesla809
Copy link

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
Copy link

amark commented Oct 15, 2019

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

This was referenced Oct 16, 2019
@QuincyLarson QuincyLarson mentioned this issue Oct 17, 2019
7 tasks
Zeko369 pushed a commit that referenced this issue Oct 21, 2019
* basic app skeleton

* update readme

* remove body parser

* tsconfig target esnext

* nodemon -> dev dep

* api route examples

* custom typing for responseErrorHandler

* oops fix speccy location

* tslint -> eslint

* add dockerfile, update installation instructions in README

* emptyline at end of eslintignore

* Revert "add dockerfile, update installation instructions in README"

This reverts commit 8075dc4.

* Revert "Revert "add dockerfile, update installation instructions in README""

This reverts commit cf502e5.

* fix dockerfile and use npm ci

* update readme, update nodemon watch files

* add next to the docs

* Add suggestions/fixes to skeleton (#1)

* chore: added speccy to docker compose dev environment

* chore: added speccy to dev deps, added/updated scripts, fixed husky warning

* test: added test for SomeComponent

* docs: updated scripts and added testing

* chore: setup jest testing

* no more dockerfile, update docs

* add js and jsx extensions to configs

* chore: removed unnecessary network, switched to using top level volume (#2)

* Mvp/skeleton (#3)

* fix(setup) Add note for linux users about docker-compose problem with PWD

* fix(client) Use named functions for components

* fix(setup) Turn of ts noImplicitAny

* fix(setup) Use es6 imports in next config

* fix(docker) Remove top level volumes

* fix(setup) add newline to end of package.json
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests