Skip to content

Commit 97004de

Browse files
authored
Merge pull request #76 from tecladocode/jose/cou-211-web-dev-re-create-diff-store-links-for
2 parents da4e39b + 29f0544 commit 97004de

File tree

54 files changed

+84
-110
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+84
-110
lines changed

curriculum/section07/lectures/08_setting_up_microblog_with_flask/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@ draft: false
1414
# Setting up the Microblog project with Flask
1515

1616
::: tip
17-
List of all code changes made in this lecture: [https://diff-store.com/diff/60ac442d39c7427d815e1d4abd74526d](https://diff-store.com/diff/60ac442d39c7427d815e1d4abd74526d)
17+
List of all code changes made in this lecture: [https://diff-store.com/diff/section07__08_setting_up_microblog_with_flask](https://diff-store.com/diff/section07__08_setting_up_microblog_with_flask)
1818
:::

curriculum/section07/lectures/09_receive_form_data_flask/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@ draft: false
1414
# Receiving form data using Flask
1515

1616
::: tip
17-
List of all code changes made in this lecture: [https://diff-store.com/diff/475b5a22fd4b4d8194c1825889c6770e](https://diff-store.com/diff/475b5a22fd4b4d8194c1825889c6770e)
17+
List of all code changes made in this lecture: [https://diff-store.com/diff/section07__09_receive_form_data_flask](https://diff-store.com/diff/section07__09_receive_form_data_flask)
1818
:::

curriculum/section07/lectures/10_display_past_entries_microblog/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@ draft: false
1414
# Displaying past entries in the Microblog project
1515

1616
::: tip
17-
List of all code changes made in this lecture: [https://diff-store.com/diff/295f249cf29e46918c8d8391699f7c02](https://diff-store.com/diff/295f249cf29e46918c8d8391699f7c02)
17+
List of all code changes made in this lecture: [https://diff-store.com/diff/section07__10_display_past_entries_microblog](https://diff-store.com/diff/section07__10_display_past_entries_microblog)
1818
:::

curriculum/section07/lectures/11_formatting_dates_correctly_microblog/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@ draft: false
1414
# Formatting dates correctly in our entries
1515

1616
::: tip
17-
List of all code changes made in this lecture: [https://diff-store.com/diff/d183b361cc8d4b0d9626a4bdf4f93644](https://diff-store.com/diff/d183b361cc8d4b0d9626a4bdf4f93644)
17+
List of all code changes made in this lecture: [https://diff-store.com/diff/section07__11_formatting_dates_correctly_microblog](https://diff-store.com/diff/section07__11_formatting_dates_correctly_microblog)
1818
:::

curriculum/section07/lectures/14_storing_entries_mongodb/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@ draft: false
1414
# Storing Microblog entries in MongoDB
1515

1616
::: tip
17-
List of all code changes made in this lecture: [https://diff-store.com/diff/0c3715d611e148a78f6150003f689f74](https://diff-store.com/diff/0c3715d611e148a78f6150003f689f74)
17+
List of all code changes made in this lecture: [https://diff-store.com/diff/section07__14_storing_entries_mongodb](https://diff-store.com/diff/section07__14_storing_entries_mongodb)
1818
:::

curriculum/section07/lectures/15_retrieving_entries_mongodb/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@ draft: false
1414
# Retrieving Microblog entries from MongoDB
1515

1616
::: tip
17-
List of all code changes made in this lecture: [https://diff-store.com/diff/6e3c246e29ad46f6a9ac1e71d2876b37](https://diff-store.com/diff/6e3c246e29ad46f6a9ac1e71d2876b37)
17+
List of all code changes made in this lecture: [https://diff-store.com/diff/section07__15_retrieving_entries_mongodb](https://diff-store.com/diff/section07__15_retrieving_entries_mongodb)
1818
:::

curriculum/section07/lectures/16_flask_app_factory_pattern/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@ draft: false
1414
# Using Flask's app factory pattern
1515

1616
::: tip
17-
List of all code changes made in this lecture: [https://diff-store.com/diff/b474a5eb637c475db58af2bae2dab9b9](https://diff-store.com/diff/b474a5eb637c475db58af2bae2dab9b9)
17+
List of all code changes made in this lecture: [https://diff-store.com/diff/section07__16_flask_app_factory_pattern](https://diff-store.com/diff/section07__16_flask_app_factory_pattern)
1818
:::
Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,28 @@
11
---
2-
title: What is Heroku?
3-
slug: what-is-heroku
2+
title: What do deployment services do for us?
3+
slug: what-do-deployment-services-do
44
tags:
55
- Concept
66
- Published
77
categories:
88
- Presentation
9-
section_number: 8
10-
excerpt: "Learn about what Heroku is and how it can help us share our application with users."
9+
section\_number: 8
10+
excerpt: "Learn about what deployment services like Render.com do for us."
1111
draft: false
1212
---
1313

14-
# What is Heroku?
14+
# What do deployment services do for us?
1515

16-
This is a presentation lecture without a transcript. For now, it's only available in the Udemy course!
16+
When we run our app, people and programs can make requests to the address the app is running on. When we run our app with `flask run`, this starts a development server which is in charge of receiving those requests and sending them over to the Flask app. The app then runs the Python function and calculates the response.
17+
18+
For security reasons, when we run our app locally, people outside our network can't make requests to it. So if we want our app to be publicly available, we must deploy it somewhere that doesn't have this restriction.
19+
20+
Deployment services companies like Render.com or Heroku, run our applications in publicly accessible services and they give us a URL that we can use to make requests to the application.
21+
22+
These companies make it really easy to deploy our apps by taking care of provisioning hardware, setting it up, installing dependencies, etc. This kind of business is known as a PaaS: "Platform as a service."
23+
24+
If you don't mind doing some more work yourself, for example by setting up each individual server, then you can save money by renting servers directly. The benefit of this is you can run multiple applications in a single server and you get more flexibility. This can save money, but takes a lot more work. Plus, PaaS applications can do things like restart our services if they crash, they can handle backups and deployments, and much more. Overall, I think using a PaaS makes a lot of sense, especially for smaller applications.
25+
26+
Render.com has a generous free plan which means we can use their services for free. There are some limitations however. We only get 1500 hours per month, and builds are a bit slower than on paid plans (so when you deploy, it takes a few minutes for your application to run).
27+
28+
Let's get started in the next lecture!
Lines changed: 7 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,21 @@
11
---
2-
title: Getting our app ready for Heroku
3-
slug: getting-our-app-ready-for-heroku
2+
title: Getting our app ready for Render
3+
slug: getting-our-app-ready-for-render
44
tags:
55
- Project
66
- Published
77
categories:
88
- Video
99
section_number: 8
10-
excerpt: "Here we'll add some files that Heroku needs in order to run our application."
10+
excerpt: "Here we'll add some files that Render needs in order to run our application."
1111
draft: false
1212
---
1313

14-
- [Getting our app ready for Heroku](#getting-our-app-ready-for-heroku)
15-
- [The `runtime.txt` file](#the-runtimetxt-file)
16-
- [The `Procfile` file](#the-procfile-file)
17-
- [Install `gunicorn` in Heroku](#install-gunicorn-in-heroku)
14+
- [Getting our app ready for Render](#getting-our-app-ready-for-render)
1815

19-
# Getting our app ready for Heroku
16+
# Getting our app ready for Render
2017

21-
We need to tell Heroku:
18+
We need to add `gunicorn` to our `requirements.txt` file before we deploy to Render.
2219

23-
- What language our app uses.
24-
- How to run our app.
25-
- The dependencies required for our app.
20+
You won't be able to run `gunicorn` in Windows, but you can install it. In other platforms, you should be able to run `gunicorn`. Either way, you'll be using `flask run` to run your app locally most of the time. We'll only use `gunicorn` in Render.com for performance benefits.
2621

27-
We do this with three different files:
28-
29-
- `runtime.txt`, for the language.
30-
- `Procfile`, for "how to run the app".
31-
- `requirements.txt`, for the dependencies.
32-
33-
## The `runtime.txt` file
34-
35-
Here we want to tell Heroku what language and what version to use.
36-
37-
The contents of this file are very specific. You need to pick from the available languages and versions here: [https://devcenter.heroku.com/articles/python-runtimes](https://devcenter.heroku.com/articles/python-runtimes).
38-
39-
In our case, we're going with this content inside the file:
40-
41-
```
42-
python-3.10.2
43-
```
44-
45-
::: tip
46-
Other versions (e.g. older versions of Python) may also work. See this link for more information: https://devcenter.heroku.com/articles/python-support#supported-runtimes
47-
:::
48-
49-
## The `Procfile` file
50-
51-
::: warning
52-
The file should be called `Procfile`, and **not** `Procfile.txt`!
53-
:::
54-
55-
Here we're going to tell Heroku how to run our app:
56-
57-
```
58-
web: gunicorn "app:create_app()"
59-
```
60-
61-
This uses the `web` dyno type, and in it executes the `gunicorn "app:create_app()"` command. That will start our app with `gunicorn` serving it.
62-
63-
## Install `gunicorn` in Heroku
64-
65-
We need to add `gunicorn` to our `requirements.txt` file before we deploy to Heroku.
66-
67-
You won't be able to run `gunicorn` in Windows, but you can install it. In other platforms, you should be able to run `gunicorn`. Either way, you'll be using `flask run` to run your app locally most of the time.

curriculum/section09/lectures/02_new_jinja2_variables/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ draft: false
2525
## TL;DR (on this video...)
2626

2727
::: tip
28-
List of all code changes made in this lecture: [https://diff-store.com/diff/925a06fbecaf46fd998785a731e18af3](https://diff-store.com/diff/925a06fbecaf46fd998785a731e18af3)
28+
List of all code changes made in this lecture: [https://diff-store.com/diff/section09__02_new_jinja2_variables](https://diff-store.com/diff/section09__02_new_jinja2_variables)
2929
:::
3030

3131
Learn how to create variables inside a template, so that you can calculate values and re-use them in multiple places within a template.

curriculum/section09/lectures/03_jinja2_filters/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ draft: false
2222
## In this video... (TL;DR)
2323

2424
::: tip
25-
List of all code changes made in this lecture: [https://diff-store.com/diff/1b9f968ca55a408ea6b352730f3a336d](https://diff-store.com/diff/1b9f968ca55a408ea6b352730f3a336d)
25+
List of all code changes made in this lecture: [https://diff-store.com/diff/section09__03_jinja2_filters](https://diff-store.com/diff/section09__03_jinja2_filters)
2626
:::
2727

2828
In a nutshell, filters are to Jinja what functions are to Python. They take inputs, and return outputs. We use them where we use values, to transform them.

curriculum/section09/lectures/04_jinja2_macros/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ draft: false
2424
## In this video... (TL;DR)
2525

2626
::: tip
27-
List of all code changes made in this lecture: [https://diff-store.com/diff/f906ce3bb3d3403eb179770ffeda0743](https://diff-store.com/diff/f906ce3bb3d3403eb179770ffeda0743)
27+
List of all code changes made in this lecture: [https://diff-store.com/diff/section09__04_jinja2_macros](https://diff-store.com/diff/section09__04_jinja2_macros)
2828
:::
2929

3030
Another thing in Jinja similar to functions in Python, but here they're used for composition rather than transformation.

curriculum/section09/lectures/05_jinja2_inheritance/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ draft: false
2222
## In this video... (TL;DR)
2323

2424
::: tip
25-
List of all code changes made in this lecture: [https://diff-store.com/diff/f5d286715a154b448343cbdce1318fd7](https://diff-store.com/diff/f5d286715a154b448343cbdce1318fd7)
25+
List of all code changes made in this lecture: [https://diff-store.com/diff/section09__05_jinja2_inheritance](https://diff-store.com/diff/section09__05_jinja2_inheritance)
2626
:::
2727

2828
Instead of coding whole HTML documents in every Jinja template, we can code specific parts of a document and place them within a predefined HTML structure.

curriculum/section09/lectures/06_custom_css_jinja2/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ draft: false
2222
## In this video... (TL;DR)
2323

2424
::: tip
25-
List of all code changes made in this lecture: [https://diff-store.com/diff/3feb8bc5492849c182629df53776a768](https://diff-store.com/diff/3feb8bc5492849c182629df53776a768)
25+
List of all code changes made in this lecture: [https://diff-store.com/diff/section09__06_custom_css_jinja2](https://diff-store.com/diff/section09__06_custom_css_jinja2)
2626
:::
2727

2828
Let's create another `block` in our base template so that we can change things there per template. In this video I'll show you how you can use that together with `style` tags to customize the CSS easily.

curriculum/section09/lectures/07_handle_css_larger_pages/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ draft: false
2222
## In this video... (TL;DR)
2323

2424
::: tip
25-
List of all code changes made in this lecture: [https://diff-store.com/diff/b95f3d07a8cd4a3aa02d1ce1f1a3844a](https://diff-store.com/diff/b95f3d07a8cd4a3aa02d1ce1f1a3844a)
25+
List of all code changes made in this lecture: [https://diff-store.com/diff/section09__07_handle_css_larger_pages](https://diff-store.com/diff/section09__07_handle_css_larger_pages)
2626
:::
2727

2828
Using BEM and an external stylesheet (or more than one) is still the best way to go, for example by giving out `todo.html` paragraphs classes:

curriculum/section09/lectures/08_jinja2_tests/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ draft: false
2323
## In this video... (TL;DR)
2424

2525
::: tip
26-
List of all code changes made in this lecture: [https://diff-store.com/diff/6a481a2959a8483b83b5415cdef3c981](https://diff-store.com/diff/6a481a2959a8483b83b5415cdef3c981)
26+
List of all code changes made in this lecture: [https://diff-store.com/diff/section09__08_jinja2_tests](https://diff-store.com/diff/section09__08_jinja2_tests)
2727
:::
2828

2929
Jinja2 tests allow us to evaluate conditionals using the `is` keyword.

curriculum/section09/lectures/10_jinja_routing/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ draft: false
2121
## In this video... (TL;DR)
2222

2323
::: tip
24-
List of all code changes made in this lecture: [https://diff-store.com/diff/d57f52bee7a74e9991a8d26fad928011](https://diff-store.com/diff/d57f52bee7a74e9991a8d26fad928011)
24+
List of all code changes made in this lecture: [https://diff-store.com/diff/section09__10_jinja_routing](https://diff-store.com/diff/section09__10_jinja_routing)
2525

2626
Note that the code diffs are split into two. One implements a plain menu bar into the app (inside `/templates`), without using `url_for`.
2727

curriculum/section10/lectures/02_displaying_and_saving_habits/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ draft: true
1818
## In this video... (TL;DR)
1919

2020
::: tip
21-
List of all code changes made in this lecture: [https://diff-store.com/diff/18ad1f56e51d4239bc2ac024b877ae68](https://diff-store.com/diff/18ad1f56e51d4239bc2ac024b877ae68)
21+
List of all code changes made in this lecture: [https://diff-store.com/diff/section10__02_displaying_and_saving_habits](https://diff-store.com/diff/section10__02_displaying_and_saving_habits)
2222
:::
2323

2424
Let's start off our project by allowing users to add new habits and display the habits they've already added to the database.

curriculum/section10/lectures/03_styling_habit_tracker/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ draft: true
1818
## In this video... (TL;DR)
1919

2020
::: tip
21-
List of all code changes made in this lecture: [https://diff-store.com/diff/cf80936ec06e4a8c984c3bd2f41221e9](https://diff-store.com/diff/cf80936ec06e4a8c984c3bd2f41221e9)
21+
List of all code changes made in this lecture: [https://diff-store.com/diff/section10__03_styling_habit_tracker](https://diff-store.com/diff/section10__03_styling_habit_tracker)
2222
:::
2323

2424
Let's code some CSS! In this video we'll style the header and the add habit form. We won't worry about the habits themselves yet, that's coming later on when we talk about completions.

curriculum/section10/lectures/04_date_navigation/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ draft: true
1818
## In this video... (TL;DR)
1919

2020
::: tip
21-
List of all code changes made in this lecture: [https://diff-store.com/diff/ba9f5dd5fe6f41d589f1b39c867d3389](https://diff-store.com/diff/ba9f5dd5fe6f41d589f1b39c867d3389)
21+
List of all code changes made in this lecture: [https://diff-store.com/diff/section10__04_date_navigation](https://diff-store.com/diff/section10__04_date_navigation)
2222
:::
2323

2424
Let's add the date navigator: a few links under the header that allow the user to go to a date a few days in the past or in the future, to check past habits or what they'll be doing the next day.

curriculum/section10/lectures/05_styling_date_navigator/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ draft: true
1919
## In this video... (TL;DR)
2020

2121
::: tip
22-
List of all code changes made in this lecture: [https://diff-store.com/diff/0e898f37ca13458ba8cfacba3cfe0fa4](https://diff-store.com/diff/0e898f37ca13458ba8cfacba3cfe0fa4)
22+
List of all code changes made in this lecture: [https://diff-store.com/diff/section10__05_styling_date_navigator](https://diff-store.com/diff/section10__05_styling_date_navigator)
2323
:::
2424

2525
## Implementation

curriculum/section10/lectures/06_completing_habits/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ excerpt: "Implement the habit completion functionality and work on the styling f
1111
draft: true
1212
---
1313

14-
# Lecture Title
14+
# Completing habits
1515

1616
[[toc]]
1717
## In this video... (TL;DR)
1818

1919
::: tip
20-
List of all code changes made in this lecture: [https://diff-store.com/diff/568e68ad5fd84f5faa9abdc938f9074c](https://diff-store.com/diff/568e68ad5fd84f5faa9abdc938f9074c)
20+
List of all code changes made in this lecture: [https://diff-store.com/diff/section10__06_completing_habits](https://diff-store.com/diff/section10__06_completing_habits)
2121
:::
2222

2323
Let's add habit completion so that our users can complete habits on the day they've got currently selected.

curriculum/section10/lectures/07_flask_blueprints/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ draft: true
1717
## In this video... (TL;DR)
1818

1919
::: tip
20-
List of all code changes made in this lecture: [https://diff-store.com/diff/ce6051701cc947e5b5f2626eaf95fa59](https://diff-store.com/diff/ce6051701cc947e5b5f2626eaf95fa59)
20+
List of all code changes made in this lecture: [https://diff-store.com/diff/section10__07_flask_blueprints](https://diff-store.com/diff/section10__07_flask_blueprints)
2121
:::
2222

2323
A blueprint in Flask is basically a collection of routes. We can register zero or more blueprints with an application so that our routes can be split across different files and not all in `app.py`.

curriculum/section10/lectures/09_using_mongodb_in_project/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ draft: true
1818
## In this video... (TL;DR)
1919

2020
::: tip
21-
List of all code changes made in this lecture: [https://diff-store.com/diff/0e9a679a73a94df2ae3380772d0443ff](https://diff-store.com/diff/0e9a679a73a94df2ae3380772d0443ff)
21+
List of all code changes made in this lecture: [https://diff-store.com/diff/section10__09_using_mongodb_in_project](https://diff-store.com/diff/section10__09_using_mongodb_in_project)
2222
:::
2323

2424
We'll store habit data in MongoDB: a unique `_id` for each habit alongside the habit `name`.

curriculum/section10/lectures/10_deploy_app_heroku/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ draft: true
1616
## In this video... (TL;DR)
1717

1818
::: tip
19-
List of all code changes made in this lecture: [https://diff-store.com/diff/b898d123dec44165a886b32b0ab599fe](https://diff-store.com/diff/b898d123dec44165a886b32b0ab599fe)
19+
List of all code changes made in this lecture: [https://diff-store.com/diff/section10__10_deploy_app_heroku](https://diff-store.com/diff/section10__10_deploy_app_heroku)
2020
:::
2121

2222
Recap what we need in order to deploy a Flask app to Heroku: a GitHub repo, the `Procfile`, and `runtime.txt`.

curriculum/section12/lectures/02_making_flask_app/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ draft: true
1515
# Making the Flask app for our project
1616

1717
::: tip
18-
List of all code changes made in this lecture: [https://diff-store.com/diff/014e90fa830a48b8b7fea88ddff11c77](https://diff-store.com/diff/014e90fa830a48b8b7fea88ddff11c77)
18+
List of all code changes made in this lecture: [https://diff-store.com/diff/section12__02_making_flask_app](https://diff-store.com/diff/section12__02_making_flask_app)
1919
:::
2020

2121
So far we've been writing Flask apps using a very simple project structure:

curriculum/section12/lectures/03_base_template_and_nav_bar/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ draft: true
1515
# Creating the base template and navbar
1616

1717
::: tip
18-
List of all code changes made in this lecture: [https://diff-store.com/diff/a97d12da472546a2966a5198bcac71cd](https://diff-store.com/diff/a97d12da472546a2966a5198bcac71cd)
18+
List of all code changes made in this lecture: [https://diff-store.com/diff/section12__03_base_template_and_nav_bar](https://diff-store.com/diff/section12__03_base_template_and_nav_bar)
1919
:::
2020

2121
Let's get started by creating a base template for all our other templates.

curriculum/section12/lectures/04_adding_about_page_to_flask_app/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ draft: true
1414
# Adding an about page to our Flask app
1515

1616
::: tip
17-
List of all code changes made in this lecture: [https://diff-store.com/diff/af011a44b5aa42fcad724641709ecdd9](https://diff-store.com/diff/af011a44b5aa42fcad724641709ecdd9)
17+
List of all code changes made in this lecture: [https://diff-store.com/diff/section12__04_adding_about_page_to_flask_app](https://diff-store.com/diff/section12__04_adding_about_page_to_flask_app)
1818
:::
1919

2020
Let's continue our Portfolio project by adding the "About" page. These are usually very simple, often with a photo and some text telling the reader about you.

curriculum/section12/lectures/05_adding_contact_page_to_flask_app/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ draft: true
1515
# Adding a contact page to our Flask app
1616

1717
::: tip
18-
List of all code changes made in this lecture: [https://diff-store.com/diff/401766ee7dce439585678a83f6a7e314](https://diff-store.com/diff/401766ee7dce439585678a83f6a7e314)
18+
List of all code changes made in this lecture: [https://diff-store.com/diff/section12__05_adding_contact_page_to_flask_app](https://diff-store.com/diff/section12__05_adding_contact_page_to_flask_app)
1919
:::
2020

2121
Let's continue our Portfolio project by working on the contact page. Here, we'll display our contact information. Optionally you could add a contact form here, although that feels a bit too formal and businesslike, rather than belonging to a personal portfolio page.

0 commit comments

Comments
 (0)