From this course title, you might get an impression that you will be building a bunch of codes and you'll actually be building an app. Well, that is almost true. In reality, we are going to provide you with an app, a backbone app. And you'll be tasked along the way to see how it works, to understand how it operates, and to manipulate the data that it generates and reacts with. You'll also be tasked along the way to do some things slightly of MFlix to either improve it or to just change a little bit of the application behavior. But more of that's ahead of us. For now, we are just going to be looking to how this application actually works and which dependencies we have. The application that we're going to build is called MFlix. Now any resemblance with the popular media streaming service is pure coincidence. This application concretes our MFlix will have a few considerations in functionality. First, we will have some sort of user management where we can create users and log in users, and so on. We will have a video catalog, where we can scroll and see some interesting information about popular videos that are available on the platform. With a list of details of the movies based on several different rankings, or some other sets of different filters that we can create, and obviously, the actual detail of the movies. So once you log in and have your account created, if you look for videos, the application will allow you to look for them, and find them. And obviously, we can also look into the details, and have some sort of user interaction with this particular application. Okay, so this is how the application is supposed to work. We're also going to see internally in terms of code, how it is actually being composed, and which are the components that make for the application. The application itself, it's built so that it can run on your local laptop, and using Atlas to store all the data. For that, the version that you will be downloading from the lecture notes and from the handout material will have some slight code gaps somewhere that we will ask you to download and improve, or complete the functionality. But more of that's a little bit further down the road. For now, what I will ask you guys to do is pretty much just have a folder path that you will be using for this course. In my case, I'm going to be using users/mongodb/coursera. And in it, I'm going to have a folder. And I'm going to call it first_app or building app. Whatever you choose, it's okay. Once I am inside my first_app, my working data set for my MFlix application, and after downloading to my local laptop the handout material, I will unzip inside this folder, my working folder, that same code. This is running code that you should be able to run in your local machine. I also recommend you to, on this working folder, create a notebooks folder. Now this is where I'm going to be storing the handouts that we're going to be providing to make sure you can follow through with the lectures that we are going to be teaching in this course. So this is where I'm going to put all my Jupyter Notebooks. Not needed for now, but will be needed later. Once I have the folder for notebooks and unzipped my MFlix application, this should be the directory structure that I have in my working folder. As in any application, the README file is always convenient to have, and this is no exception. This here will tell you the dependencies that you need to install for running our application, and some other instructions like the run.sh file that will allow you to run the application. It will be our executor. Now make sure that you have all the dependencies installed. As you figured out by now, we are going to be using Python, the best, most beautiful language in the world. Flask, which is a very popular web framework for Python. PyMongo, obviously, we need to talk to MongoDB and PyMongo is the way to do so. And some other libraries like Faker and flask-login and bcrypt, all nice libraries to work and to use for our needs. Now before we go and run our init run file, you can see it here that it will launch an application, a Flask application. There's a couple of things that we need to edit before hand. The first file that we need to be editing would be our db.py, this file here that will control all access to the database. Now the first thing that we need to edit on this file will be the MongoClient connection string. As you can see here, I already done my due diligence and added up my own personal MFlix cluster on Atlas. You should do the same thing, and put your connection string here. Once you've added it to your db.py file, you are ready to run your run.sh or run.exe. Once we have it up and running, you will see that we're going to have a up and running server on 127.0.0.1 and port 5000, right? And as you can see, this will be the exact same location that I'm going to be connecting to show you MFlix up and running. Sweet, but let's understand what's going on under the hood. Now, the MFlix app itself, it's composed by a couple of different interesting modules. The first one is our mflix.py. This is where we are going to actually instantiate all the Flask application library and consequent libraries that we need to run the application. Then we have another Python module called db.py. Now db.py is responsible for the connections between the application and the database. Think about it as our model layer, if you're coming from an MVC kind of standpoint. Therefore the db.py talks to MongoDB. In our case, in Atlas, this is where we're going to store all of our information. And mflix.py instantiates and uses the db.py methods to forward all the requests. There are other things like the templates that we'll be using to prettify and show you their correct HTML. Well formatted with all the information that we need, that you can have access and scroll around within the templates folder. There's also obviously static information like the CSS that we are using or even the source data file, movies.json, that you previously imported in other lectures. Another important one, or not really that important, but just a important functionality of our application is that we allow you to log in and log out. And that's controlled by the auth.py file. Give it a look to understand how we are dealing with the authentication. So to sum it up, our MFlix application is a runnable application. You need to configure the connection string to Atlas, and put it up and running with run.sh that will instantiate the Flask application called db.py to request and submit any information to MongoDB on Atlas. Once you have that, the only thing that you need to do, go to your local browser and browse away the magnificent interface that we built just for this course.