
Develop a full stack invoice web app using docker, nginx, portainer, makefiles, and redux toolkit with rtk query, and deploy securely on a custom domain with letsencrypt ssl.
Create a working directory and initialize git, then set up a new gitHub repository for the invoice app, configure node and npm versions, and generate a .gitignore for the project.
Initialize the project with npm to create a package.json, create a backend folder and .env file, install express and mongoose, and scaffold server.js using ECMAScript modules.
Learn logging in Node.js with Morgan and Winston, understand NPM logging levels from error to silly, and use logs for tracing, http transactions, and debugging with stack traces.
Learn how nginx acts as a reverse proxy and load balancer to route frontend and backend requests, enable https encryption, and support path-based routing for single-port production.
Set up the mern invoice app backend with nginx alpine by creating a dockerfile, defining upstream api port 1997 and client port 3000, and configuring proxy rules and websocket support.
Configure the backend database connection in the config directory's connect db.js using mongoose and env vars, then wire into server.js and install node mailer, express mongo sanitize, and validator.
Implement role-based access and authentication middlewares using JWT, with JSON error handling, not found routing, and API plus login rate limiters to secure the MERN app.
Distinguish authentication from authorization, then examine access and refresh tokens, JWTs, and token rotation with reuse detection to secure API calls and user sessions.
Learn to implement a refresh token controller that issues new access tokens, rotates refresh tokens, deletes old tokens, and detects token reuse to secure authentication.
Master resending of email verification tokens for tokens that expire after 15 minutes in a mern app, including backend controller logic, crypto-based token generation, and sending verification links by email.
Hi, welcome to this course on building a functional fullstack MERN app, that can be used for generating invoices, quotations and receipts.
We shall build this app, step by step, by leveraging tools and technologies such as Docker, NGINX, NGINX Proxy manager, Makefiles,Portainer, shell scripts, MongoDB, Express, ReduxToolkit and Redux Toolkit query, also called RTK-Query.
You will also learn how to serve your application on a custom domain name, and serve it securely over HTTPS with SSL Certificates from letsencrypt.
This course is NOT for absolute beginners. It is aimed at those with at least 1 year of relevant Fullstack Javascript experience. Having prior exposure to the MERN Stack will be advantageous.
This app was built by one person(myself), so of course, none of us is perfect. You might discover bugs here and there , or see ways of improving the codebase. Kindly, if you are able to fix any bugs you come across,or see ways of improving the codebase, please raise a PR on the repo.
I will review and merge in the changes for the benefit of all the other learners of this course.
Who am I? I am Alpha Ogilo, a self-taught full-stack software developer, currently working as a Senior Software Engineering Manager.
My Hope is that you shall gain immense value from this.