2019 Web Stack
What is everyone’s go-to web stack today in 2019?
If you plan to quickly put together a simple web app or website with React.JS.
YMMV depending on what you’re doing, but the following is a good bet if you want to make the project accessible to other developer, and it doesn’t need to quickly scale.
Use React.JS with TypeScript.
Create React App now makes it dead easy. Just run this command:
create-react-app myapp --typescript
The general consensus is, do not use Redux until you know React well. You might not need it. If you do need it, use boilerplate/starter kit such as
redux-starter-kit, offered by the core Redux team.
If you go with Node.js:
- Express is a good starting point if you need a simple abstraction around Node HTTP/web server
- Sequelize for SQL ORM library
- Async/await has made things much easier on the Node.js side though. Express doesn’t still have async support by default, but there are middlewares and native support is coming with Express v5.
- Use relational databases (PostgreSQL) by default for all data (primary/important and secondary/meta-data)
- If possible, avoid NoSQL database such as MongoDB. I wouldn’t want to put my important transactional data such as subscription and e-commerce sales data there.
RabbitMQ or Kafka.
Authentication and Authorization#
- Put nginx (app proxy) in front of Node.js and your static files (React, etc) from the same domain so that you do not have to use CORS, JWT, etc. So, an easy choice is ‘mydomain.com/static’ serves your React bundle while the cookies are on ‘mydomain.com’
- Use Jest and VS Code’s Jest extension (Orta’s) for automated tests within the editor.
- For deployment, I roll my own using Docker container. As a one-man shop, I try to minimize sysadmin/DevOps works by off-loading as much as I can to the Cloud service providers by going the managed/zero-ops direction.
- CodeSandbox.io, REPL.it etc are amazing for testing out various stuff without downloading stuff. You can get a React/Vue/whatever environment within seconds that will give you a public url for your app.
- json-server in NPM will get you a mock REST API with GET/POST/etc support within seconds from a JSON file.