ADVANCED
Blog Capstone Project Part 4 -
Adding Users + Comment Section

Goal:
Creating a user database for the blog so that there is a blog owner and viewers. Allow the owner to fully control the website features while viewers/ registered members can view the blog posts and add comments on it.

Exercise:

  • Revisit Day 68

  • Registering New Users

  • Encryption and Hashing

  • Salting Passwords

  • Hashing and Salting passwords using Werkzeug

  • Authenticating User with Flask-Login

  • Flask Flash Messages

  • Passing Authentication Status to Templates

Requirements for the project:

  • Registering New Users in the User database

  • Login registered users

  • protect routes / website owner accessible

  • Creating Relational Database using “ForeignKey” and “relationship()”

  • Allow any users to add comments to blog posts

ADVANCED
Authentication with Flask

Goal:
Login and Registering Users with Authentication to allow users to download a certain file that is only accessible for registered accounts

Lessons:

  • What is Authentication?

  • Registering New Users

  • Encryption and Hashing

  • How to Hack Passwords 101

  • Salting Passwords

  • Hashing and Salting passwords using Werkzeug

  • Authenticating User with Flask-Login

  • Flask Flash Messages

  • Passing Authentication Status to Templates

ADVANCED
Blog Capstone Project Part 3:
RESTful Routing

Goal:
Building a RESTful Blog with Editing Capabilities.

Lessons + Requirements:

  • Be able to “GET” blog post Items

  • Be able to “POST” a new blog post

  • Be able to Edit existing blog post

  • Be able to “DELETE” blog posts

ADVANCED
Build your own API for Coffee Shop Locator Website with RESTful Routing

Goal:
Creating an API from scratch for locating best coffee shops to work/study and provide API documentation using Postman

Lessons:

  • What is REST?

  • All In One API Testing Tool (Postman)

  • Serialization - SQLAlchemy Object into a JSON / jsonify()

  • Creating Documentation using Postman

Exercises:

  • HTTP GET

  • HTTP POST

  • HTTP PUT

  • HTTP PATCH

  • HTTP DELETE

ADVANCED
Introduction to Web Design

Goal:
Learning about how to design a visually attractive website (Hotel Example) that people will be attracted to.

Lessons:

  • Importance of Color Theory

  • Importance of Typography

  • Importance of User Interface (UI) Design

  • Importance of User Experience (UX) Design

ADVANCED
My Top 10 Movies Website

Goal:
Creating a personal movie blog website to rank my own favorite movies

Requirements:

  • Be able to view movie list items

  • Be able to edit a movie’s rating and review

  • Create a movie database

  • Be able to delete movies from the database

  • Be able to add new movies via the add page

  • Be able to sort and rank the movies by rating

ADVANCED
Databases with SQLite and SQLAlchemy

Goal:
Creating a virtual bookshelf where you can document and rate books you’ve read. You can modify the rating and delete books along the way.

Lessons:

  • SQLite Databases

  • SQLAlchemy

  • CRUD Operations with SQLAlchemy

  • Build a SQLite Database into the Flask website

ADVANCED
Flask, WTForms, Bootstrap and CSV

Goal:
Cafe and Wifi Search Website

Exercise:

  • Revisit WTForms to review and submit coffeeshop for ideal working space

  • Revisit Bootstrap to modify looks of the website with visually pleasing table list

  • Revisit CSV to retrieve and modify existing coffee shop data

ADVANCED
Building Advanced Forms with Flask WTForms

Goal:
Build a website that holds some secret data. Only with the right username and password can you access the page with secret data.

Lessons:

  • Installing Flask-WTF

  • Creating forms with Flask-WTF

  • Code improvements for the project’s WTF

  • Adding validation to forms with Flask WTF

  • Receiving form data with WTF

  • Inheriting Templates using Jinja2

  • Using Bootstrap-Flask as Inherited Template

  • Bootstrap-Flask supporting WTForms

ADVANCED
Make POST Requests with Flask and HTML Forms

Goal:
Finishing up contact form page on Day-59’s blog website

Exercise:

  • Creating a form from scratch

  • Applying ‘Action’ and ‘Method’ into index.html

Lessons:

  • Submitting HTML forms and catching the submitted data in the Flask server.

  • Understand how HTML forms are submitted and how to use the data from the form to actually send an email to ourselves with the data submitted by the user.

ADVANCED BLOG CAPSTONE - STYLING

Project:
Upgraded blog from Day-57

  • Multi-Page website with an interactive navigation bar

Walkthrough:

  • Getting homepage to work

  • Fix header and footer

  • Using Jinja Include for Render Templates

  • Make ‘About’ and ‘Contact’ pages to work

  • Fetch and render the blog posts from an API

  • Rendering Individual Posts

WEB FOUNDATION - BOOTSTRAP

Exercise:
Startup Website for Tindog

  • Tindog is a meet-up platform for dogs to meet other new dogs and make more playmates.

Lessons:

  • Introduction to popular front-end toolkits called Bootstrap.

  • Laying out and formatting website with ease

  • Cutting down on the amount of CSS code by using Bootstrap.

INTERMEDIATE +

Exercise:
Simple blog with a number of blog posts

  • Creating a web blog with multiple blog posts. Click hyper-link to go into the blog page with detailed information.

Lessons:

  • Using Jinja to produce dynamic HTML pages.

  • Multi-line statements with Jinja

  • URL building with Flask

INTERMEDIATE +

Exercise:
Name Card Website Modification

  • Using my current knowledge of HTML and CSS techniques, this exercise delves into the integration of Python servers to customize web content for my specific needs.

Lessons:

  • Rendering HTML Files with Flask

  • Serving Static Files using Flask

  • How to use website templates to speed up web development process

INTERMEDIATE +

Project:
Higher Lower Game using URLs

  • Interacting with webpage to play Higher Lower game

Lessons:

  • Rendering HTML Elements with Flask

  • Working with Flask URL and the Flask Debugger

  • Advanced Decorators with *args and **kwargs

INTERMEDIATE +

Exercise:
Creating Python Decorator

  • Learning about wrapping / decorating a function.

Lessons:

  • Introduction to Web Development with Flask

  • Command Line / Terms for the Terminal

  • Python Decorator

INTERMEDIATE +

Project:
Auto Game Clicker

  • Python to automatically click cookie as fast as possible and upgrade items to click even more faster.

Lessons:

  • How to web scrape a browser using Selenium module and auto-fill and click available features without typing in anything.

INTERMEDIATE +

Project:
Automated Amazon Price Tracker

  • Allow user to insert Amazon link and set an ideal price for the program to send email notification when conditions meet.

Lessons:

  • Web Scraping Amazon product page for price and product title

  • Use SMTP to send email notification

INTERMEDIATE +

Project:
Create a Spotify Playlist using the Musical Time Machine

  • User can search specific date (YYYY-MM-DD) to retrieve Billboard Hot 100 of that date. And user can populate a playlist on their own Spotify account with the retrieved data.

Lessons:

  • Web Scraping Billboard Hot 100 website to interact with Python code.

  • Use Spotify API and spotipy Python module to connect personal account

  • Create a playlist on Spotify based on the user’s date search input.

INTERMEDIATE +

WEB SCRAPING WITH:
BEAUTIFULSOUP MODULE

Project:
100 Movie list from movie review website

  • Scraping movie titles from a website and reverse the order from lowest/highest recommendation to highest/lowest recommendation.

Lessons:

Learning about:

  • BeautifulSoup Module

  • Web scraping

  • Legal cases of web scraping

  • What to AVOID when web scraping

  • Ethics of web scraping

WEB FOUNDATION:
INTERMEDIATE CSS

Project:
Meme Poster Web

  • Creating a meme poster online

Lessons:
Learning about -

  • CSS Colors

  • Font Properties

  • CSS Inspection / CSS Overview

  • Box Model

WEB FOUNDATION:
INTRODUCTION TO CSS

Project:
Color Vocab Website

  • Website displaying colors and matching
    Korean vocabulary

Lessons:

  • What is CSS?

Learning about:

  • 3 types of style (Inline, Internal, External)

  • CSS Selectors (Element, Class, ID, Attribute, and Universal)

WEB FOUNDATION:
INTERMEDIATE HTML

Project:
Old School Birthday Invite

  • Birthday invitation with link to google map location

Lessons:
Learning about -

  • Boilerplate

  • List Elements

  • Nesting + Indentation

  • Anchor Element

  • Image Element

WEB FOUNDATION:
INTRODUCTION TO HTML

Project:
My Movie Ranking

  • Showing blog article about my top 3 movies.

Lessons:

  • What is HTML?

Learning about:

  • Headings

  • Paragraphs

  • Horizontal Rule Element

  • Break Element

CAPSTONE PROJECT:

Flight Club

  • Allow users to signup their account by entering first name, last name, and email.

  • Users can search for cheapest flights that leave anytime between tomorrow and in 6 months.

  • Program returns a round trip that returns between 7 and 28 days in length.

Key-Development:

Stage1:

  • Search for cheap flights using Tequila API

  • Check if the price is lower than average price in the google sheet using Sheety API

  • Send text message notifivation to the user if cheaper flight is found using Twilio API

Stage 2:

  • On Google sheets, create new tab called “users” to archive new account registered

  • Exception handing code for all destinations without flight. (If no direct flights, search for 1 stop. If there is no 1 stop, pass)

  • Replace SMS notification to email notification for customers to receive

Project:
Exercise Tracker (Using Google Spread Sheet):

  • Allow users to keep track of their daily activities/exercises to record time and monitor their calories burn

  • Using Sheety API to transfer over rows of data into Google spread sheet

  • User type their activity in sentence and automatically categorize the activities.

  • ex) “I ran 4 miles and rode cycle for about 35 minutes.”

Lessons:

  • Continue practicing API endpoints

  • Continue practicing API parameters

Project:
Habit Tracker via Web (Pixela)

  • Allow user to keep record of their specific habits or activities (ex. reading, work-out, studying, etc.)

  • Using Pixela API to set up account, start a graph, and populate pixel graph from Python.

Lessons:

  • Continue practicing API endpoints

  • Continue practicing API parameters

  • Advanced Authentication

  • POST / PUT / DELETE Requests

Project:
Stock News Notification:

  • Allow users to get latest news of their favorite stock when stock is up or down

  • Using stock API to monitor increase or decrease in price

  • Using news API to retrieve couple of latest news

  • Using sms API to send text notification of the stock status and news to the user

Lessons:

  • Continue practicing API endpoints

  • Continue practicing API parameters

Project:
Rain Checker Notification via SMS (Twilio)

  • Using weather API, allow users to get notification in the morning, when forecast says it is going to rain during daytime.

Lessons:

  • Continue practicing API endpoints

  • Continue practicing API parameters

  • Using Twilio API

Project:
Quizzler App:

  • Advancement from Day 17 quiz game

  • Using UI to interact ‘True’ or ‘False’

  • Using API to generate questions instead of providing hard-coded questions.

Lessons:

  • Continue practicing API endpoints

  • Continue practicing API parameters

Project:
ISS Overhead Tracker

  • At the time point when the ISS is in the night sky, right above my location, it will send myself an email telling me to look up and spot the fast-moving ISS.

Exercise:

  • Retrieving quotes from Kanye API source and generate new quotes every time button is pressed

Lessons:

  • Application Programming Interface (API)

Project:
Automated Email Generator

  • Quote of the day - Allow user to receive motivational quote on specific day via email.

  • Birthday wisher - Allow user to send out happy birthday emails using their contact list with specific birthdays.

Lessons:

  • Email SMTP

  • Datetime Module

Project:
Flash Card App

  • Allow a user to learn new vocabularies.

  • Card flips after few seconds.

  • If user knows the word, that word gets deleted from the list.

Lessons:

  • Tkinter UI Cont’

  • Using Pandas and reading .csv Cont’

Project:
Password Manager Advanced Feature

  • On top of Day 29, building an additional feature for users to search through list of accounts they have saved and retrieve password information to a specific account.

Excercise:

  • NATO Phonetic using JSON

Lessons:

  • Tkinter UI Cont’

  • Introduction to JSON

  • Handling Errors and Exceptions

Project:
Password Manager

  • Allow a user to create new random password for any websites and catalog all the websites’ login data for later use.

Learning About:

  • Tkinter UI Cont’

Lessons:

Standard Dialogs

  • Pop-Up UI

Project:
Pomodoro Timer App

  • Allow user to take breaks in between work time so that they can be efficient with their time management when working on something.

Lessons:

  • Tkinter UI Cont’

Project:

  • Mi to Km Unit Converter

Learning About:

  • Introduction to Tkinter

  • Args = *args

  • Kwargs = **kwargs

Lessons:

Creating basic:

  • New window

  • Labels

  • Buttons

  • Entry

  • Entry box

  • Spin box

  • Scale

  • Check box

  • Radio button

  • List box

Positioning types:

  • Pack()

  • Place()

  • Grid()

Lessons:

  • List Comprehensions

  • Conditional List Comprehensions

  • Dictionary Comprehensions

  • Conditional Dictionary Comprehensions

Project:
NATO Alphabet Output

  • Allow user to type a word and program output words to define those alphabets

Project:

  • U.S. States Game

Learning About:

  • Working with CSV Files

  • Analyzing Data with Pandas

Small Projects:

  • Analyzing Weather Report

  • Squirrel Census Data Analysis

Lessons:

  • Working with Local Files System

  • Working with Directories

Projects:
1. Improving Snake Game

  • Allow program to keep the highest score when exiting the program and coming back to play again.

  • Using text file to keep track of the highest score.

2. Mail Merging

  • Allow program to duplicate an invitation letter for every individual in the invite list.

  • Using name list of individuals in the text to be applied to invitation letter text and creating new text file for each invited individuals with invitation letter that have their name on it.

Capstone Project:

  • Turtle Crossing Game

Utilizing:

  • Turtle Package

  • Creating classes

  • Object boundaries

  • Inheritance

Key-Development:

  1. Move the turtle with keypress

  2. Create and move the cars

  3. Detect collision with car

  4. Detect when turtle reaches the other side

  5. Create a scoreboard

Final Outcome:
Pong Game

Utilizing:

  • Turtle Package

  • Creating classes

  • Object boundaries

  • Inheritance

Key-Development:

  1. Creating Screen

  2. Create and move paddle

  3. Create opposing paddle

  4. Create the ball and make it move

  5. Detect collision with wall and bounce

  6. Detect collision with paddles and bounce

  7. Detect when paddle misses the ball

  8. Keep track of the score

Side Project:

Project:

  • Car Registry for Garage

Utilizing:

  • Everything that has been learned so far

Objective:

  • Able to manage list of cars for all the registry users.

  • Users are able to print out their list of cars, add new cars, update car details, and delete cars from/to the list.

  • Able to add new users when user name is not detected on the registry.

Final Outcome:
Snake Game

Lessons:

  • Inheritance

  • How to Slice Lists

  • Tuples in Python


Key-Development:

Stage1:

  • Creating Snake Body

  • Making Snake to Move

  • Controlling Snake using Keys

Stage 2:

  • Detecting Collision with Food

  • Creating Scoreboard

  • Detecting Collision with Wall

  • Detecting Collision with Tail

Lesson:

  • More Turtle Graphics

  • Higher Order Functions

  • Event Listeners

  • State and Multiple Instances

  • Understanding Coordinate Systems

Project:

  • Etch a Sketch

  • Turtle Race Bet Game

Final Outcome:
Hirst Spot Painting Generator


Key-lessons:

  • In-depth Turtle Graphics

  • Tuples and Importing Modules

  • Extracting RGB Values

  • Installing Packages

  • Working with Aliases

  • Working with Documents

Exercise:

  • Drawing Dashed Lines on Turtle

  • Drawing Different Shapes on Turtle

  • Generating “Random Walk” on Turtle

Lesson:

  • Creating Class

  • Working with Attributes, Class Constructors and the __init__() Function

  • Adding Methods to a Class

  • Creating Data

  • Using open trivia DB

Project:

  • Quiz Game

Final Outcome:
Coffee Machine using OOP


Key-lessons:

  • Introduction to Object Oriented Programming (OOP)

  • History of Procedural Programming

  • Key concepts of OOP

Exercise:

  • Using Turtle Graphics Package

  • Using Python package to create a chart

Lesson:

  • Local development tools

Project:

  • Coffee Machine Project

Final Outcome:
Higher or Lower Game


Key-points for the exercise:

  • Write my own code from scratch without the lecturer’s hints.

  • Idea of breaking down the problem into smaller problems.

  • Making a To-Do list .

  • Make sure to debug as you go along.

Lesson:

  • Tips on Debugging

Exercises:

  • Debug Odd or Even Exercise / Day 04

  • Debug Fizz Buzz Exercise / Day 05

Final Outcome:
Guess The Number Game


Learning Fundamentals of:

  • Namespaces / Local VS Global

  • Understanding Scopes

CAPSTONE PROJECT:
Blackjack Program

Using:

  • Import

  • Functions

  • For Loop

  • While Loop

  • Variables

  • If / Elif

Final Outcome:
Basic Calculator App


Learning Fundamentals of:

  • Functions with Output

  • Making Title Case Function

  • Docstrings

  • Prints VS Return

  • Recursion

Small Projects:

  • Days in month cont. / Adding a day for leap February

Final Outcome:
Blind Auction Program


Learning fundamentals of:

  • Dictionary

  • Nesting (Little bit more depth)

Using:

  • Import

  • Dictionary

  • For Loop

  • While Loop

  • If / Elif

Final Outcome:
Caesar Cipher Program
- Encrypting messages


Learning Fundamentals of:

  • Functions with inputs

  • Understanding difference between Arguments + Parameters

  • More on functions

Small Projects:

  • Paint the area calculator

  • Prime number checker

Final Outcome:
Hangman Game


Using:

  • IF / ELSE

  • Lists

  • Strings

  • Range

  • Modules

  • Import files and lists

Final Outcome:
Escaping the maze
writing a code to allow robot to exit the maze


Learning Fundamentals of:

  • More about functions

  • More about blocks

  • While Loops

  • Reeborg’s World Hurdle challenges

  • Creating Pay the bill roulette program

Final Outcome:
Random Password Generator Program


Learning Fundamentals of:

  • For Loops

  • Range

  • Code Blocks

  • Creating FizzBuzz program

  • Creating Filtering High Number program

Final Outcome:
Random Rock Paper Scissor Challenge Program


Learning Fundamentals of:

  • Randomization

  • Python Lists

  • Nested Lists

  • Creating Flip the coin program

  • Creating Pay the bill roulette program

Final outcome:
Make your own story game


Learnings about fundamentals of:

  • Conditional Statements

  • Logical Operators

  • Comparisons

  • Additional functions

Final Outcome:
Golf Bill Splitter


Learning Fundamentals of:

  • Data Types

  • Numbers

  • Operations

  • Type Conversion

  • f-Strings

Final outcome:
Team Name Generator Program


Learnings about fundamentals of:

  • Printing

  • Commenting

  • Debugging

  • String Manipulation

  • Variables

Date:
06.18.2023