1
00:00:03,980 --> 00:00:11,490
Welcome to server-side development with NodeJS, Express and MongoDB.

2
00:00:11,490 --> 00:00:15,125
This is the final course of the specialization.

3
00:00:15,125 --> 00:00:19,680
In this course, we will be concentrating mainly on the server-side.

4
00:00:19,680 --> 00:00:24,425
We will look at how we use the Node runtime to

5
00:00:24,425 --> 00:00:30,555
develop server-side business logic layer using JavaScript.

6
00:00:30,555 --> 00:00:34,515
Then we'll look at the Express framework which enables

7
00:00:34,515 --> 00:00:38,775
us to quickly develop a server-side application.

8
00:00:38,775 --> 00:00:41,555
We will also look at MongoDB as

9
00:00:41,555 --> 00:00:48,400
a document storage for our persistent data in the database.

10
00:00:48,400 --> 00:00:51,625
Before you embark on this course,

11
00:00:51,625 --> 00:00:57,490
let me emphasize that you should have a very good working knowledge of JavaScript.

12
00:00:57,490 --> 00:01:03,005
I expect that you have deep enough knowledge of ES 5 version of

13
00:01:03,005 --> 00:01:09,770
JavaScript and at least familiar with ES 2015 plus version of JavaScript,

14
00:01:09,770 --> 00:01:13,090
specifically the use of arrow functions.

15
00:01:13,090 --> 00:01:20,170
Also preferably, you should have completed Angular/React module of this specialization.

16
00:01:20,170 --> 00:01:26,265
So that you would have an understanding of the picture from the front end perspective,

17
00:01:26,265 --> 00:01:30,530
you know what kind of data would be required on the front end in

18
00:01:30,530 --> 00:01:35,520
order to construct the user interface for our front-end application.

19
00:01:35,520 --> 00:01:40,970
This understanding helps you to enable to see how

20
00:01:40,970 --> 00:01:43,820
our Node and Express application

21
00:01:43,820 --> 00:01:48,585
supports the delivery of the data required by the front-end.

22
00:01:48,585 --> 00:01:51,800
Also how the REST API,

23
00:01:51,800 --> 00:01:55,310
that is developed in this course will be useful to support

24
00:01:55,310 --> 00:02:00,484
the front-end of our entire application.

25
00:02:00,484 --> 00:02:03,150
Now, before we embark on this story,

26
00:02:03,150 --> 00:02:09,860
I would emphasize that Web development and design can be looked at from two perspectives.

27
00:02:09,860 --> 00:02:13,340
First of course, the design aspect of

28
00:02:13,340 --> 00:02:18,295
the design and development where we are looking at UI/UX design,

29
00:02:18,295 --> 00:02:21,190
visual design, prototyping, colors,

30
00:02:21,190 --> 00:02:23,510
animation and graphics and so on.

31
00:02:23,510 --> 00:02:26,385
This is beyond the scope of this course.

32
00:02:26,385 --> 00:02:34,525
In this course, we are looking at developing hardcore skills for actual design,

33
00:02:34,525 --> 00:02:42,340
deployment and development of their publications including the server-side application.

34
00:02:42,340 --> 00:02:44,360
In this course, we are concentrating on

35
00:02:44,360 --> 00:02:49,310
the server-side development using NodeJS, Express and MongoDB.

36
00:02:49,310 --> 00:02:53,030
This is a picture that we have been seeing over the courses of

37
00:02:53,030 --> 00:02:55,370
this specialization where I

38
00:02:55,370 --> 00:02:58,690
delineate the difference between the front-end and the backend.

39
00:02:58,690 --> 00:03:01,600
So, in this course we are now moving towards the backend,

40
00:03:01,600 --> 00:03:09,745
the business logic and the data access layer of this entire full-stack picture.

41
00:03:09,745 --> 00:03:15,040
So, having understood what this course is concentrating upon,

42
00:03:15,040 --> 00:03:18,745
let's look at the actual structure of this course.

43
00:03:18,745 --> 00:03:25,925
This course itself covers NodeJS and Node modules as explained earlier.

44
00:03:25,925 --> 00:03:31,775
We'll also look at the Express framework for developing server-side applications,

45
00:03:31,775 --> 00:03:35,100
again based upon NodeJS.

46
00:03:35,100 --> 00:03:41,790
We'll look at MongoDB as the persistent layer in our entire full stack,

47
00:03:41,790 --> 00:03:48,375
and we'll look at how MongoDB supports the storage of data in the form of documents.

48
00:03:48,375 --> 00:03:52,430
We'll also look at backend as a service and look at

49
00:03:52,430 --> 00:03:56,490
a few examples of pre-packaged backends

50
00:03:56,490 --> 00:04:04,730
that will enable us to quickly set up the server-side for our entire full stack story.

51
00:04:04,730 --> 00:04:12,455
Having said that, let's look briefly at the structure of the four modules in this course.

52
00:04:12,455 --> 00:04:17,560
Each module corresponds to one week of work for this course.

53
00:04:17,560 --> 00:04:19,005
In the first module,

54
00:04:19,005 --> 00:04:22,830
we'll look at the big picture view of full stack web development.

55
00:04:22,830 --> 00:04:25,435
Then in case you don't know Git,

56
00:04:25,435 --> 00:04:28,385
I will give you a quick introduction to Git.

57
00:04:28,385 --> 00:04:29,750
If you already know Git,

58
00:04:29,750 --> 00:04:35,380
you can skip this and then proceed on to the introduction to Node.js and NPM.

59
00:04:35,380 --> 00:04:38,900
Where we'll look at the purpose of Node.js and how

60
00:04:38,900 --> 00:04:43,460
this runtime helps us to develop server-side applications.

61
00:04:43,460 --> 00:04:48,525
Then we'll look at node modules and how they are structured and how they are useful,

62
00:04:48,525 --> 00:04:50,680
the different kinds of node modules.

63
00:04:50,680 --> 00:04:56,630
Then this will take us on to actually examining node and how we can scaffold out

64
00:04:56,630 --> 00:05:03,270
a very simple server-side using the HTTP core module of node.

65
00:05:03,270 --> 00:05:06,949
Then, we will move on to examine the express framework

66
00:05:06,949 --> 00:05:12,775
and learn how to scaffold out a server-side application.

67
00:05:12,775 --> 00:05:18,545
Then this will take you all the way to the very first assignment of this course.

68
00:05:18,545 --> 00:05:22,340
The second module primarily concentrates on

69
00:05:22,340 --> 00:05:26,570
the data storage side of the story, in particular MongoDB.

70
00:05:26,570 --> 00:05:30,800
We'll quickly look at how we can use the express generator to

71
00:05:30,800 --> 00:05:36,010
quickly scaffold out a REST API based server.

72
00:05:36,010 --> 00:05:38,670
Then we'll move on to examining MongoDB,

73
00:05:38,670 --> 00:05:41,900
understand what MongoDB is and how it supports

74
00:05:41,900 --> 00:05:45,415
the storage retrieval and manipulation of data.

75
00:05:45,415 --> 00:05:51,780
We'll look at how MongoDB can be accessed from our node application.

76
00:05:51,780 --> 00:05:56,090
This is essential because from within our express application,

77
00:05:56,090 --> 00:06:02,165
we will be accessing the MongoDB in order to store and retrieve data.

78
00:06:02,165 --> 00:06:06,530
Then we'll look at the Mongoose object data model,

79
00:06:06,530 --> 00:06:10,430
and understand how Mongoose enables us to define schema

80
00:06:10,430 --> 00:06:15,170
and model to structure our applications.

81
00:06:15,170 --> 00:06:22,120
Then we will look at how we will scaffold out a complete REST API server with

82
00:06:22,120 --> 00:06:25,280
Express and also being able to interact with

83
00:06:25,280 --> 00:06:29,270
the MongoDB server from our express application.

84
00:06:29,270 --> 00:06:33,735
This should take you all the way to the second assignment in this course.

85
00:06:33,735 --> 00:06:38,555
The third module concentrates mainly on user authentication.

86
00:06:38,555 --> 00:06:42,830
How we can allow users to register themselves,

87
00:06:42,830 --> 00:06:46,850
authenticate themselves and then restrict access to certain operations to

88
00:06:46,850 --> 00:06:50,990
only registered or authenticated users or look at

89
00:06:50,990 --> 00:06:54,950
different category of users who can do different kinds of

90
00:06:54,950 --> 00:06:59,875
operations on the server-side through that client side application.

91
00:06:59,875 --> 00:07:03,140
We'll look at basic authentication which is

92
00:07:03,140 --> 00:07:06,910
a very simple way of authenticating your client side.

93
00:07:06,910 --> 00:07:13,325
We will move on to look at cookies and how cookies can be used for user authentication.

94
00:07:13,325 --> 00:07:19,690
Then also look at express sessions again based upon signed cookies.

95
00:07:19,690 --> 00:07:23,945
We'll also look at user authentication with the passport module.

96
00:07:23,945 --> 00:07:27,260
The passport module consolidates and provides

97
00:07:27,260 --> 00:07:33,695
a comprehensive way of providing various ways of doing user authentication.

98
00:07:33,695 --> 00:07:41,125
In particular, we will concentrate on local authentication using passport first.

99
00:07:41,125 --> 00:07:48,260
We'll look at mongoose population and how we can include parts of

100
00:07:48,260 --> 00:07:52,400
one document into another document and then automatically populate

101
00:07:52,400 --> 00:07:56,780
this information into a document before delivering it to the user.

102
00:07:56,780 --> 00:08:02,515
This should take you all the way up to the third assignment in this course.

103
00:08:02,515 --> 00:08:09,470
The final module concentrates on finishing up with the understanding of how

104
00:08:09,470 --> 00:08:16,240
we develop a server-side application and also quickly review backend as a service.

105
00:08:16,240 --> 00:08:22,925
So, in this module we'll look at secure communication using HTTPS.

106
00:08:22,925 --> 00:08:26,600
I will briefly review cryptography and security in

107
00:08:26,600 --> 00:08:30,965
the context of how it is useful to set up an HTTPS server.

108
00:08:30,965 --> 00:08:36,220
We'll look at how we can upload files using a Node module.

109
00:08:36,220 --> 00:08:40,715
We'll also look at cross-origin resource sharing or costs.

110
00:08:40,715 --> 00:08:44,370
What is it? Why should we be aware of it?

111
00:08:44,370 --> 00:08:49,425
How we can set up our express server to support costs?

112
00:08:49,425 --> 00:08:53,390
Then, we'll look at OAuth and

113
00:08:53,390 --> 00:08:59,240
third party authentication and how we can use OAuth for doing user authentication.

114
00:08:59,240 --> 00:09:05,440
In particular, we'll look at an example of using Facebook for authenticating our users.

115
00:09:05,440 --> 00:09:09,135
Finally, review backend as a service.

116
00:09:09,135 --> 00:09:13,705
That should take you all the way to the final assignment in this course.

117
00:09:13,705 --> 00:09:20,555
I hope you have a lot of fun going through the various modules in this course and develop

118
00:09:20,555 --> 00:09:28,735
a strong understanding of server-side development using Node, Express and MongoDB.

119
00:09:28,735 --> 00:09:31,415
Of course, we would be covering to

120
00:09:31,415 --> 00:09:35,875
a reasonable extent so that we can quickly get started up and running,

121
00:09:35,875 --> 00:09:40,280
but there are more issues that you can learn beyond this course.

122
00:09:40,280 --> 00:09:45,785
So, I would strongly encourage you to continue learning further about

123
00:09:45,785 --> 00:09:50,330
both the server-side development as well as front-end development that you've

124
00:09:50,330 --> 00:09:54,960
seen in the previous courses of this specialization.

125
00:09:54,960 --> 00:09:57,920
Wish you good luck in completing this course,

126
00:09:57,920 --> 00:10:00,650
and I hope you enjoy your journey through

127
00:10:00,650 --> 00:10:04,880
the various topics that we cover in this course.