- Start with github
- Installling Git
- Installing WebStorm
- start with a console.log(‘hello world’);
- run with res.json({ message: “hello world” })
- Using webstorm for nodejs backend projects
- .ediorconfig
- Unhandled errors and rejections
- ES6
- Typescript
- ts-node-dev
- request-promise
- express-middlewares & config/express.js
- routes.js & Modularity with express routers
- components folder
- eslint 6.8.0
- using dotenv for environment file
- Inspired by generator-angular-fullstack developed by Google, Yeoman
- mocha spec file for unit tests
- unit tests vs integration test vs api tests
- mocha service.spec.js for functional tests
- mocha controller.spec.js for express api tests with supertest
- nyc for test coverage
- devDependencies vs Dependecies
- what is package-lock.json
- using scripts section in package json
- what is license
- nodemon for restarting as soon code changes
- how webstorm save developer time with autosave feature and nodemon restart the code
- browsersync vs livereload
- REST Api standards
- sinatra standards from naming functions in controller
- service.js for functions with async and not using req, res objects
- unit.js for simple javascript without async
- Promise vs Async
- eslint – global module
- eslint local devDependency
- eslintrc file
- airbnb
- es6 vs normal javascript
- Semantic commit messages
- mysql2
- sequelize orm
- migrations
- seeding
- .sequelizerc
- Sequelize best practices
- Do not run email/notifications crons on midnight
- cron vs ttl events
- best and worst delay with crons, achieving realtime processing with websockets using redis kue, rabbitmq
- cron over code vs http api
- how nginx logs help to monitor and improve performance of cron jobs
- Cron job performance issues & Dividing long running cron jobs
- cron job boot up time vs api based crons without per request boot
- using amazon sns for cron jobs
- unifying cron jobs with event processing
- keeping log of failed cron jobs and get alerts to debug, fix and rerun
- gronit vs cron logs with cron
- API response time with simple-api-response-logger
- Runtime errors with Sentry
- Logging with winston
- Logging cron executions time metrics
- Disable logs as much as possible in production
- use PM2
- Pm2 cluster mode & scaling with pm2
- building webhooks with node-webhooks
- lambda
- creating your first npm package
- npm package for easy integrations
- nodejs developers feel using npm module is easy. compared to reading api documentation
- Example: Your marketing-server(website) creates a lead in sales-server(lead management system) – instead of sharing a common db
- eventlistners
- socketio client for angular
- socket io config with express
- enabling websocket support in nginx
- Github Actions
- Drone CI
- Write github issues link or asana task link in github commit
- codecov for code coverage
- drone for running tests and submitting report to codecov
- in memory db to improve test run performance
- sinon to stub integrations tests
- nyc & istanbul for test coverage
- precommit-hook to run basic quality checks before commit & eslint
- staging prefix for servers
- avoiding production data in staging to avoid hacks
- captain-definition file
- create a app in caprover
- adding caprover link to github webhooks for autodeploy on gith push
- Integrate your angular project with OAuth 2.0
- Asana(Free)
- Github Markdown/Github Pages
References: