Build a complete Job Portal from scratch using Node.js, TypeScript, SQL, Redis, and Prisma
What you'll learn
Develop a scalable and efficient backend for a job portal using NodeJS and TypeScript
Implement robust RESTful APIs to manage job listings, applications, and user authentication.
Master SQL for efficient data storage, retrieval, and manipulation.
Use Prisma as an ORM to streamline database operations and interactions.
Optimize backend performance with Redis for caching and improving response times.
Secure your application with JWT-based authentication and authorization.
Handle file uploads and data validation in a professional manner.
Implement pagination and search functionalities in the backend.
Learn best practices for structuring and organizing backend code in a scalable way.
Requirements
Basic understanding of JavaScript
Basic understanding SQL
No need for any NodeJS experience
No need for any Typescript experience
Description
Unlock the power of web development by focusing on the backend with "The Ultimate NodeJS TypeScript SQL - Job Portal Project." In this comprehensive course, you will learn how to build a scalable and efficient job portal from the ground up, concentrating on the server-side technologies that make modern web applications possible.Starting with Node.js and TypeScript, you will dive deep into backend development, creating a robust API for managing job listings, applications, and user authentication. You'll harness the power of SQL databases for efficient data storage and retrieval, and use Prisma for seamless database interaction. Additionally, Redis will be utilized to optimize performance, implementing caching mechanisms that enhance the user experience.By the end of this course, you will have a complete backend solution for a job portal, equipped with authentication, data management, and optimization techniques that are essential for any large-scale application.This course is perfect for developers looking to strengthen their backend skills and gain hands-on experience with industry-standard tools and practices.Why Learn SQL?There are a lot of courses out there that teach you MongoDB (NoSQL), but in the real world, many companies use SQL. This course focuses on SQL, ensuring you are equipped with the skills that are in demand in the industry.Problem-Solving SkillsOne of the most effective ways to level up as a programmer is to "fix bugs and research" and many courses out there don't teach you that. I will do the opposite. I will guide you on how to "research and fix bugs" equipping you with the problem-solving skills essential for any professional developer.Why Class?As a backend developer, learning and mastering classes is crucial. Classes in TypeScript allow you to define object blueprints, enabling more structured and maintainable code. This course will cover the essential concepts of object-oriented programming (OOP) and how to effectively use classes to build scalable and reusable components in your applications.
Overview
Section 1: Introduction
Lecture 1 Introduction
Section 2: Web Development
Lecture 2 Note for bonus section
Lecture 3 Client Server Model
Lecture 4 HTTP Protocol
Lecture 5 HTTP Request
Lecture 6 What's happen if we go to a website?
Lecture 7 What is a port number?
Lecture 8 How to build a website?
Lecture 9 HTTP Status Code
Lecture 10 How to run a website?
Section 3: NodeJS Fundementals
Lecture 11 Install NodeJS
Lecture 12 Global variables
Lecture 13 Module: require keyword
Lecture 14 Module: export keyword
Lecture 15 Bult-in Module: path
Lecture 16 Bult-in Module: fs
Lecture 17 Benefits of Asynchrony
Lecture 18 Event Emitter
Lecture 19 Create a first web server
Lecture 20 Response html file
Lecture 21 Check url
Lecture 22 Response JSON
Lecture 23 Send data to server
Lecture 24 Separate URL
Lecture 25 Handle not found exception
Lecture 26 Update item
Lecture 27 Delete item
Section 4: ExpressJS Fundementals
Lecture 28 Introduction to NPM
Lecture 29 What is ExpressJS ?
Lecture 30 Create a web server
Lecture 31 Response in express.js
Lecture 32 Explore HTTP method in express.js
Lecture 33 Explore parts of URL
Lecture 34 What is a REST/RESTFUL API ?
Lecture 35 Get one item
Lecture 36 Auto restart server
Lecture 37 Create item
Lecture 38 Update item
Lecture 39 Delete item
Lecture 40 Middleware
Lecture 41 Model View Controller (MVC)
Lecture 42 Refactor code to MVC
Lecture 43 Router in express.js
Section 5: Express.js Simple Project
Lecture 44 Project Overview
Lecture 45 Create a new project
Lecture 46 Setup MVC folder
Lecture 47 Create a MongoDB database
Lecture 48 Mongoose ODM
Lecture 49 Create user collection
Lecture 50 Insert user document
Lecture 51 Handle database error
Lecture 52 What is JWT?
Lecture 53 Create a JWT
Lecture 54 Check email unique
Lecture 55 Login user
Lecture 56 Hash password
Lecture 57 Create task collection
Lecture 58 Create a task
Lecture 59 Task authentication
Lecture 60 Get all tasks
Lecture 61 Get single task
Lecture 62 Update task
Lecture 63 Delete task
Lecture 64 Wrap up
Section 6: TypeScript
Lecture 65 Basic type system
Lecture 66 Array
Lecture 67 Object
Lecture 68 Array of object
Lecture 69 Function
Lecture 70 Interface
Lecture 71 Introduction to class
Lecture 72 Class - object creation
Lecture 73 Class - constructor
Lecture 74 Class - method
Lecture 75 Class - inheritance
Lecture 76 Class - override method
Lecture 77 Class - access modifiers
Lecture 78 Abstract class - part 1
Lecture 79 Abstract class - part 2
Lecture 80 Type alias
Lecture 81 Union type
Lecture 82 Intersection type
Lecture 83 Tuple
Lecture 84 Interface inheritance
Lecture 85 Type vs Interface
Lecture 86 Enum type
Section 7: Setup - Big Project Time
Lecture 87 Prepare project
Lecture 88 Setup server
Lecture 89 Setup eslint and prettierrc
Lecture 90 Setup auto format
Lecture 91 Setup some methods
Lecture 92 Setup folder structure project
Lecture 93 Environment variables
Lecture 94 Setup router like pro!
Lecture 95 Install PG Admin
Lecture 96 Setup Prisma ORM
Lecture 97 How to create & get data in Prisma ?
Lecture 98 Adding new column on existing table
Lecture 99 Single Responsibility Principle
Section 8: Express Error Handling
Lecture 100 Not Found error
Lecture 101 HTTP Status Constant
Lecture 102 Create custom error class
Lecture 103 Async wrapper
Lecture 104 Common error
Lecture 105 How to validate req.body ?
Lecture 106 Create a re-use middlware for validation
Lecture 107 next()
Section 9: Feature: Authentication
Lecture 108 Setup auth controller
Lecture 109 Signup functionality
Lecture 110 Signin functionalify
Lecture 111 Send token via cookie
Lecture 112 sendTokenToCookie function
Lecture 113 Verify User middleware
Lecture 114 Logout functionality
Lecture 115 Another way to throw error
Section 10: Feature: Candidate Profile
Lecture 116 Design a candidate profile model
Lecture 117 Setup folder structure
Lecture 118 Create candidate profile
Lecture 119 Get candidate profile
Lecture 120 Update candidate profile
Lecture 121 Delete candidate profile
Lecture 122 Fix any type
Lecture 123 A big gotcha with get method
Lecture 124 Reuseable function
Lecture 125 Allow access middleware
Lecture 126 Schema validation
Lecture 127 Candidate open to work property
Section 11: Feature: Candidate Language
Lecture 128 Design a language model
Lecture 129 How to seed data in prisma?
Lecture 130 Many to Many relationship
Lecture 131 Folder structure
Lecture 132 Add language to candidate profile
Lecture 133 Read my languages
Lecture 134 Update language level
Lecture 135 Delete language
Lecture 136 Interface & Schema
Section 12: Feature: Education
Lecture 137 Create an education model
Lecture 138 Seed some educations
Lecture 139 Again! Many to Many relationship
Lecture 140 Folder structure
Lecture 141 Add education to candidate profile
Lecture 142 Get my educations
Lecture 143 Update education
Lecture 144 Delete education
Lecture 145 Interface
Lecture 146 Schema validation
Section 13: Feature: Skill
Lecture 147 Create skill model
Lecture 148 Seed some skills
Lecture 149 Candidate skill model
Lecture 150 Add skill for candidate profile
Lecture 151 Get my skills
Lecture 152 Remove skill
Section 14: Feature: Experience
Lecture 153 One to Many relationship
Lecture 154 Folder structure
Lecture 155 Create candidate experience
Lecture 156 Get my experiences
Lecture 157 Get candidate experience
Lecture 158 Delete experience
Lecture 159 Interface & Schema validation
Section 15: Feature: Company
Lecture 160 Design a company model
Lecture 161 Folder structure
Lecture 162 Create company
Lecture 163 Get company
Lecture 164 Pagination
Lecture 165 Response with pagination
Lecture 166 Filtering
Lecture 167 How to re-use pagination logic?
Lecture 168 How to apply pagination logic to different method?
Lecture 169 Update company
Lecture 170 Approve company
Lecture 171 Delete company
Lecture 172 Interface & Schema validation
Section 16: Feature: Company Images
Lecture 173 One to Many relationship
Lecture 174 Folder structure
Lecture 175 How to send multiple images?
Lecture 176 Get company image
Lecture 177 How to delete an image?
Section 17: Feature: Industry
Lecture 178 Create model & seed data
Lecture 179 Create company industry model
Lecture 180 Folder structure
Lecture 181 Add industry to company
Lecture 182 Get all companies
Lecture 183 Delete an industry
Section 18: Feature: Role (Job)
Lecture 184 Create a job role model
Lecture 185 Folder structure
Lecture 186 Create role
Lecture 187 Get all job roles
Lecture 188 Delete job role
Section 19: Feature: Job
Lecture 189 Design a model
Lecture 190 Folder structure
Lecture 191 Create a job
Lecture 192 Add more filtering criteria
Lecture 193 Order data
Lecture 194 Get one job
Lecture 195 Join table in prisma
Lecture 196 Best serialize data strategy
Lecture 197 Update job
Lecture 198 Update status
Lecture 199 Soft delete
Lecture 200 Interface & Schema validation
Section 20: Feature: Job Skill
Lecture 201 Create a job skill model
Lecture 202 Create folder structure
Lecture 203 Create skill for job
Lecture 204 Get job skill
Lecture 205 Remove job skill
Section 21: Feature: Job Benefit
Lecture 206 Create model
Lecture 207 Many to Many relationship
Lecture 208 Folder structure
Lecture 209 Create job benefit
Lecture 210 Get job benefits
Lecture 211 Delete benefit
Section 22: Feature: Apply Job
Lecture 212 Create an apply model
Lecture 213 Folder structure
Lecture 214 Apply job
Lecture 215 Get applications
Lecture 216 Improve get applications
Lecture 217 Update apply status
Lecture 218 Apply the active job
Section 23: Feature: Package
Lecture 219 Create a package model
Lecture 220 Folder structure
Lecture 221 Create a package
Lecture 222 Get all packages
Lecture 223 Update package
Lecture 224 Update package status
Lecture 225 Create recruiter package model
Lecture 226 Create order model
Lecture 227 Recruiter package folder structure
Lecture 228 Track it in order
Lecture 229 Prevent buy package second times
Lecture 230 Limit job posting
Lecture 231 Recruiter buy package
Lecture 232 Order folder structure
Lecture 233 Get orders
Lecture 234 Get one order
Lecture 235 Update order status
Section 24: On Delete Cascade
Lecture 236 Disable delete candidate route
Section 25: Feature: User
Lecture 237 Create a new user
Lecture 238 Get user & pagination
Lecture 239 Update user
Lecture 240 Update password
Lecture 241 Update status
Lecture 242 Interface & Schema validation
Lecture 243 Exclude fields function
Section 26: Redis Installiation
Lecture 244 What is redis?
Lecture 245 What is redis data structure?
Lecture 246 How to install redis? (Docker)
Section 27: Redis String
Lecture 247 SET command
Lecture 248 SET command with options
Lecture 249 How to increment number?
Section 28: Redis List
Lecture 250 Add element into list
Lecture 251 Add element at the beginning of the list
Lecture 252 Remove element in list
Lecture 253 Get element in list
Lecture 254 LLEN & LREM
Section 29: Redis Hash
Lecture 255 Store a hash
Lecture 256 Key convention
Lecture 257 Increment value
Lecture 258 Get all keys in hash
Section 30: Redis Set
Lecture 259 Store member in set
Lecture 260 SCARD & SISMEMBER
Lecture 261 Remove member in set
Section 31: Redis Sorted Set
Lecture 262 Add member to sorted set
Lecture 263 Get members
Aspiring backend developers looking to build practical, real-world applications.,Intermediate developers wanting to deepen their knowledge of NodeJS, TypeScript, and SQL.,Professionals aiming to enhance their skills in backend development and database management.,Students interested in learning how to create scalable and optimized server-side solutions.,Developers seeking hands-on experience with industry-standard tools and best practices.