1
00:00:01,350 --> 00:00:06,930
So let's think about what we're going to build as the first project in this course, and it's always

2
00:00:06,930 --> 00:00:10,650
good to have a sense of what you want to do before you actually start working.

3
00:00:11,280 --> 00:00:14,870
Otherwise, you just kind of make it up as you go along and that rarely turns out well.

4
00:00:15,210 --> 00:00:20,490
So just in general terms, let's think about what kind of project we will build that will allow us to

5
00:00:20,910 --> 00:00:28,350
learn some important techniques and methodology in the go language and what our actual Web application

6
00:00:28,350 --> 00:00:28,650
will be.

7
00:00:28,650 --> 00:00:30,900
And we are going to build a Web application.

8
00:00:31,380 --> 00:00:37,080
So we, first of all, need to decide what we're going to build, have an overall sense of the project's

9
00:00:37,080 --> 00:00:42,510
scope, what's going to be included in the project and what key functionality has to exist.

10
00:00:43,020 --> 00:00:49,080
And what I want to do is I want to pretend that we own a bed and breakfast and that bed and breakfast

11
00:00:49,080 --> 00:00:52,660
has two rooms and we want to rent those out to people online.

12
00:00:53,280 --> 00:00:55,320
So we're going to have a bed and breakfast.

13
00:00:55,320 --> 00:00:56,400
It's going to have two rooms.

14
00:00:56,400 --> 00:01:01,860
And people should be able to come to a website, look at what's available, search for certain dates

15
00:01:01,860 --> 00:01:06,260
that they might want to stay with us and then make a booking and reservation.

16
00:01:07,470 --> 00:01:08,220
How do we do that?

17
00:01:08,250 --> 00:01:09,430
Well, what are we going to need to do?

18
00:01:09,480 --> 00:01:12,960
We're going to, first of all, have to have a Web site that showcases the property.

19
00:01:13,230 --> 00:01:20,310
So we'll go through the procedure of building templates and go and populating that with information

20
00:01:20,310 --> 00:01:25,590
that shows all the wonderful features that our bed and breakfast has and why people should choose to

21
00:01:25,590 --> 00:01:26,010
stay there.

22
00:01:26,790 --> 00:01:30,750
We also need to allow people to book a room for one or more nights.

23
00:01:30,780 --> 00:01:35,790
That means they have to come to the site, choose what room they might want to stay in, and then search

24
00:01:35,790 --> 00:01:39,360
to say, hey, I want to stay here from July the 6th to July the 10th.

25
00:01:39,720 --> 00:01:41,160
Is the room available?

26
00:01:41,160 --> 00:01:46,350
And we have to decide if that room has already been booked by somebody else and if it has to say sorry,

27
00:01:46,350 --> 00:01:50,760
those dates aren't available, would you like to try different ones or say, sure, the room is available,

28
00:01:50,760 --> 00:01:51,600
would you like to book it?

29
00:01:52,200 --> 00:01:57,300
And if the room is available, the guest should be able to enter some information and have information

30
00:01:57,300 --> 00:02:01,560
that the host knows what to prepare for when the person arrives or the people arrive.

31
00:02:02,160 --> 00:02:07,530
And then we need to notify the guests that their reservation was successful either by sending them an

32
00:02:07,530 --> 00:02:09,120
email or a text or whatever.

33
00:02:09,390 --> 00:02:13,050
And we also need to notify the property owner, hey, you got a new reservation.

34
00:02:13,050 --> 00:02:16,740
You might want to pay attention to it and make sure that things are ready before the guest arrives.

35
00:02:16,950 --> 00:02:22,200
OK, that seems like reasonable, unreasonable assumptions, key functionality.

36
00:02:22,200 --> 00:02:28,200
In addition to allowing someone to book a room, we need to have a kind of back end system that the

37
00:02:28,200 --> 00:02:33,570
owner of the bed and breakfast logs into to see who's coming and when they're coming, they need to

38
00:02:33,570 --> 00:02:35,700
be able to review existing reservations.

39
00:02:36,480 --> 00:02:41,700
We should probably show a calendar of their upcoming reservations and past reservations.

40
00:02:42,390 --> 00:02:46,950
They should be able to change or cancel the booking because, you know, people's plans change and someone

41
00:02:46,950 --> 00:02:50,850
might say, oh, we're going to stay for an extra day or no, we can't come at all, whatever it may

42
00:02:50,850 --> 00:02:51,140
be.

43
00:02:51,480 --> 00:02:53,850
So these are the kinds of things that we need to do.

44
00:02:54,210 --> 00:02:58,950
Now, this only takes a couple of minutes to go over in general terms, but there's a lot of work to

45
00:02:58,950 --> 00:02:59,700
make this happen.

46
00:02:59,700 --> 00:03:02,730
And it doesn't matter if you're building the program and go or are you doing it in.

47
00:03:02,730 --> 00:03:03,570
No, Jess.

48
00:03:03,580 --> 00:03:08,520
Or or whatever it may be, there's a lot of functionality that we need to think about.

49
00:03:08,970 --> 00:03:12,790
So to make this happen, what kinds of things are we going to need?

50
00:03:13,470 --> 00:03:16,380
Well, obviously, we're going to have to have some kind of authentication system.

51
00:03:16,380 --> 00:03:23,220
We want the owner to be the only person that can go in and change a booking or look at bookings and

52
00:03:23,220 --> 00:03:24,210
get this information.

53
00:03:24,450 --> 00:03:29,370
So it has to be a secured with a password or some means of logging into a backend system.

54
00:03:29,370 --> 00:03:31,080
So we're going to have to have authentication.

55
00:03:31,740 --> 00:03:34,890
We're also going to have to somewhere have somewhere to store this information.

56
00:03:35,520 --> 00:03:36,750
Where are the bookings go?

57
00:03:36,930 --> 00:03:39,480
What about users that can log into the back system?

58
00:03:39,480 --> 00:03:40,920
This has to be stored somewhere.

59
00:03:41,220 --> 00:03:45,030
So clearly a database seems like the obvious place to store this information.

60
00:03:45,630 --> 00:03:49,080
And we also need some means of sending notifications around.

61
00:03:49,170 --> 00:03:53,850
We need to be able to send an email or send an SMS message, a text or both.

62
00:03:54,180 --> 00:03:57,780
So we need to think about how we're going to implement these things.

63
00:03:58,260 --> 00:04:00,570
And it's a fair bit of work, but it's kind of fun.

64
00:04:00,570 --> 00:04:07,230
And we're going to go through and build a fully functional system that allows people to book reservations

65
00:04:07,230 --> 00:04:07,830
online.
