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:
Move the turtle with keypress
Create and move the cars
Detect collision with car
Detect when turtle reaches the other side
Create a scoreboard
Final Outcome:
Pong Game
Utilizing:
Turtle Package
Creating classes
Object boundaries
Inheritance
Key-Development:
Creating Screen
Create and move paddle
Create opposing paddle
Create the ball and make it move
Detect collision with wall and bounce
Detect collision with paddles and bounce
Detect when paddle misses the ball
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