1
00:00:00,199 --> 00:00:05,970
Great, as you may know we are approaching
the end of the course and this one, this

2
00:00:05,970 --> 00:00:11,880
is the last section of course where you'll
build your 10th application and this

3
00:00:11,880 --> 00:00:16,619
particular one is special. The special
thing is not about the application

4
00:00:16,619 --> 00:00:21,630
itself because every application is
actually special. The special thing about

5
00:00:21,630 --> 00:00:28,170
this application is that you'll build
this one independently so this is in the

6
00:00:28,170 --> 00:00:33,870
form of a project. You have to build this
from scratch and you have learned all

7
00:00:33,870 --> 00:00:38,250
the skills throughout the course so the
skills that are required to build this

8
00:00:38,250 --> 00:00:42,750
particular application and in this video
what I wanted to do is I want to give

9
00:00:42,750 --> 00:00:46,860
you a demonstration of what this
application does and then you can start

10
00:00:46,860 --> 00:00:51,719
building it right away after this video.
Then in the next video I'll show you the

11
00:00:51,719 --> 00:00:57,719
solution so I'll show you the code on
the video and explain what the code does and

12
00:00:57,719 --> 00:01:03,000
also the approach that I used to build the
application. Now, I could have

13
00:01:03,000 --> 00:01:07,229
recorded these videos just as I did
with the other 9 applications in the

14
00:01:07,229 --> 00:01:12,659
course but I really wanted you to do
something on your own and that will

15
00:01:12,659 --> 00:01:18,540
serve you for two things. One is that you'll
actually do something independently and

16
00:01:18,540 --> 00:01:22,770
you'll learn a lot from that and then
second you can use this as a portfolio.

17
00:01:22,770 --> 00:01:29,490
This is quite a nice web application but
this is tough. I mean I would be

18
00:01:29,490 --> 00:01:36,630
surprised to see anyone making this work
100% unless you're a genius. I really

19
00:01:36,630 --> 00:01:43,560
mean that, but you should be able to make
this work let's say at around 50%. If you

20
00:01:43,560 --> 00:01:48,180
make it work 50% then you have really
learned from the course. So what I mean

21
00:01:48,180 --> 00:01:53,159
by 50%? Well you may you must start
somewhere and then ask for help. Maybe you

22
00:01:53,159 --> 00:01:58,439
have an error there and you're not being
able to understanding and solve it for

23
00:01:58,439 --> 00:02:03,540
going forward or you just don't know
what to do next so in such scenarios

24
00:02:03,540 --> 00:02:09,989
you can step in and post a question in
the Q&A area, so in the discussion area of the

25
00:02:09,989 --> 00:02:16,260
course. I'll say don't ask me
right away. I mean I like questions but

26
00:02:16,260 --> 00:02:21,300
it's good for you to do solve the
problems yourself. You know, programming

27
00:02:21,300 --> 00:02:27,780
is hard. I mean often all you need is
a break like a coffee or tea to just

28
00:02:27,780 --> 00:02:32,940
refresh your brain and make it thing
better. Then you suddenly may find

29
00:02:32,940 --> 00:02:37,890
yourself cracking that problem but if it
doesn't work then I'm here to help you

30
00:02:37,890 --> 00:02:43,260
just drop a question and I respond to
within a day and my recommendation now.

31
00:02:43,260 --> 00:02:48,570
Try to start from scratch. Don't look
right away at the code or the lectures

32
00:02:48,570 --> 00:02:54,030
that we have gone through in the course.
Instead of doing that try to gather your

33
00:02:54,030 --> 00:02:58,830
thoughts in a sheet of paper. Write down
some steps such as step 1 make the user

34
00:02:58,830 --> 00:03:05,070
interface, step 2 build a script that
reads csv data and generates an outputs,

35
00:03:05,070 --> 00:03:10,350
and then make the Flask structure and so
on and then you go and implement these

36
00:03:10,350 --> 00:03:15,060
step by step. If you're stuck, then it's
perfectly okay to look at the

37
00:03:15,060 --> 00:03:23,400
resources. I do it all the time.
So now what is this application? Well

38
00:03:23,400 --> 00:03:29,940
this is a Flask application that expects
from the user a CSV file which should

39
00:03:29,940 --> 00:03:38,209
have at least a column named address.
For example here is a CSV file

40
00:03:38,209 --> 00:03:42,690
and you can see that we have an address
column in there so the user should

41
00:03:42,690 --> 00:03:48,780
have a column called address, so named
address in there either with a lower or

42
00:03:48,780 --> 00:03:52,709
upper case A, it doesn't matter, so you
should build your application to

43
00:03:52,709 --> 00:03:58,980
recognize both address with lowercase
a and address with uppercase A. Now the

44
00:03:58,980 --> 00:04:06,420
user can approve such file using the
choose file button in here and you can see

45
00:04:06,420 --> 00:04:13,440
that supermarkets was uploaded in there
and once the user uploads that fall, they'll

46
00:04:13,440 --> 00:04:20,540
press submit and this table shows up.
So once the user uploads such a file, the

47
00:04:23,229 --> 00:04:28,180
back end of your applications so the Python
script will read that file and if you

48
00:04:28,180 --> 00:04:34,539
add a latitude and longitude
column which are calculated out of the

49
00:04:34,539 --> 00:04:40,060
address column, so we're talking about
geocoding and you know how to the

50
00:04:40,060 --> 00:04:47,319
geocoding. You learnt that in the course
in the Pandas section and as you see the

51
00:04:47,319 --> 00:04:53,050
result table is displayed on the webpage
once the user presses the submit button.

52
00:04:53,050 --> 00:04:58,750
And you can see the two columns in there.
And lovely you also want to allow a user

53
00:04:58,750 --> 00:05:06,789
to download the CSV version so a file
that contains these data and therefore

54
00:05:06,789 --> 00:05:13,360
you need to display a download button
here as I did so once the user presses

55
00:05:13,360 --> 00:05:21,580
downloads a file is downloaded. Yeah, this
is the file. We also have some empty

56
00:05:21,580 --> 00:05:26,380
cells in there because Python was not
able, so that geocoding service was not

57
00:05:26,380 --> 00:05:34,930
able to geocode this address to latitude
and longitude so yeah you need to count

58
00:05:34,930 --> 00:05:41,979
for that and just pass some non values
to those cells. Now soon you may

59
00:05:41,979 --> 00:05:47,380
run into problems such as you know if
the user uploads some other files so

60
00:05:47,380 --> 00:05:58,449
let's change this to add instead of
address and I'll save this. So I don't

61
00:05:58,449 --> 00:06:04,979
have an address column in that file
anymore. Let me upload it again like that,

62
00:06:04,979 --> 00:06:11,199
submit and in this case you want to show
a message there saying that please make

63
00:06:11,199 --> 00:06:16,419
sure you have an address column in your
city fault or something like that so you

64
00:06:16,419 --> 00:06:22,690
don't want the program to crash to show
a Flask error in there, so yeah you

65
00:06:22,690 --> 00:06:27,099
need to try and accept some errors in
there. And yeah, that's it. At that

66
00:06:27,099 --> 00:06:32,560
point you have built a geocoding service.
I hope I was clear with the explanations

67
00:06:32,560 --> 00:06:37,099
but if you have questions please
ask them and I wish you good luck

68
00:06:37,099 --> 00:06:41,299
with this project!
It will be tough but fun and it's all

69
00:06:41,299 --> 00:06:44,209
about persistence so if you commit to
doing it

70
00:06:44,209 --> 00:06:50,569
you'll do it. The next video is dangerous
because I'll show you the solution in

71
00:06:50,569 --> 00:06:56,389
there so please watch it as a last
resort or watch it to compare your

72
00:06:56,389 --> 00:07:01,579
finished application with mine and also
when you compare your solution with my

73
00:07:01,579 --> 00:07:06,739
solution don't expect them to be the
same, they will never be. I mean there are

74
00:07:06,739 --> 00:07:11,449
different ways to make an application
and and mine could be better than yours

75
00:07:11,449 --> 00:07:16,339
or the other way around, so please keep
that in mind. And yeah that's what I

76
00:07:16,339 --> 00:07:22,069
wanted to say and I hope you enjoy my
course! I also appreciate if you left

77
00:07:22,069 --> 00:07:28,729
a review! I do look at all the reviews and I
appreciate them a lot. So yeah,

78
00:07:28,729 --> 00:07:31,000
thanks a lot
and I'll talk to you later.

