# Overview of the project

We have now learned about the fundamentals of SQL and how to interact with databases using Python's sqlite3 module. In this section, we'll learn some more SQL syntax and focus on working with relational data.

As part of this, we will learn about primary and foreign keys, JOINs, and atomicity.

The project we'll be building in this section is a movie watchlist app. By the end of this section we'll have a project that allows users to:

  • Keep track of movies they're interested in and their release dates.
  • Store the movies a user has seen out of all movies in the database.
  • Add a new user to keep track of their watched movies.

This multi-user support will really help us learn about relational data!

# The User Interface

Let's talk about the user interface of this project (what the user will see).

When they start the application they'll get a welcome and the user menu:

Welcome to the watchlist app!

Please select one of the following options:
1) Add new movie.
2) View upcoming movies.
3) View all movies
4) Add watched movie
5) View watched movies.
6) Add user to the app.
7) Exit.

Your selection:

When they enter their selection we'll proceed accordingly (detailed in the next few headings).

After we've processed their request, we will show the menu again and again until they press 7 to exit.

# Adding new movies

...

Your selection: 1

Movie name:
Release date (dd-mm-YYYY):

The user must enter a date in the correct format, so something like 17-10-2021 is fine, but 10-17-2021 is not because the format we'll expect is dd-mm-YYYY which stands for day as two digits, month as two digits and year as four digits.

We will learn how to change the format our program expects, of course!

# Viewing upcoming movies

...

Your selection: 2

-- Upcoming movies --

2: The Matrix (on 01-01-2020)
3: Pulp Fiction (on 02-01-2020)

These movies will only be those movies that are actually upcoming--we'll have some logic to only show movies where the release date is after today.

# Viewing all movies

...

Your selection: 3

-- All movies --

1: Gone Girl (on 01-01-1990)
2: The Matrix (on 01-01-2020)
3: Pulp Fiction (on 02-01-2020)

# Adding a watched movie for a user

...

Your selection: 4

Username:
Movie ID:

# Viewing a user's watched movies

...

Your selection: 5

Username: 

-- Watched movies --

3: Pulp Fiction (on 02-01-2020)

# Adding a user

...

Your selection: 6

Username:

That is an overview of how users will interact with our project. Let's get started in the next chapter!