From 06b4d1107e22e114cd27821b1cae7946902acdd3 Mon Sep 17 00:00:00 2001
From: Jessie Mongeon <jessie.mongeon@dfinity.org>
Date: Tue, 17 Dec 2024 13:06:46 -0600
Subject: [PATCH 1/3] Remove duplicate page

---
 .../getting-started/explore-examples.mdx      |  2 +-
 .../default-frontend.mdx                      | 97 -------------------
 .../level-1/1.3-first-dapp.mdx                |  2 +-
 plugins/utils/redirects.js                    | 20 ++--
 sidebars.js                                   |  1 -
 5 files changed, 13 insertions(+), 109 deletions(-)
 delete mode 100644 docs/developer-docs/web-apps/application-frontends/default-frontend.mdx

diff --git a/docs/developer-docs/getting-started/explore-examples.mdx b/docs/developer-docs/getting-started/explore-examples.mdx
index 7bb6f0b9e8..49ec10405b 100644
--- a/docs/developer-docs/getting-started/explore-examples.mdx
+++ b/docs/developer-docs/getting-started/explore-examples.mdx
@@ -74,7 +74,7 @@ https://2drrs-wqaaa-aaaab-qblbq-cai.icp1.io
 
 The **backend canister** URL will open the [Candid UI](/docs/current/developer-docs/smart-contracts/candid/candid-concepts) which can interact directly with the backend canister's methods. A **method** is a function exposed by the canister that can be called by a user, another canister, or the application's frontend.
 
-The **frontend** URL will open the application's frontend user interface. To create this frontend, the project's React files (shown in the ICP Ninja code editor within the `frontend/` folder) have been compiled and deployed as an [asset canister](/docs/current/developer-docs/web-apps/application-frontends/default-frontend).
+The **frontend** URL will open the application's frontend user interface. To create this frontend, the project's React files (shown in the ICP Ninja code editor within the `frontend/` folder) have been compiled and deployed as an [asset canister](/docs/current/developer-docs/web-apps/application-frontends/overview).
 
 :::info
 This application will be live for 20 minutes. After 20 minutes, it will expire, and the URLs will become invalid. The project code will still be accessible, and you can redeploy the application at any time to view it for another 20 minutes.
diff --git a/docs/developer-docs/web-apps/application-frontends/default-frontend.mdx b/docs/developer-docs/web-apps/application-frontends/default-frontend.mdx
deleted file mode 100644
index 811319ce9f..0000000000
--- a/docs/developer-docs/web-apps/application-frontends/default-frontend.mdx
+++ /dev/null
@@ -1,97 +0,0 @@
----
-keywords: [beginner, tutorial, frontend, frontend canister, asset canister, assets, default]
----
-
-import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
-import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip";
-
-# Hosting application frontends using an asset canister
-
-<MarkdownChipRow labels={["Beginner", "Tutorial"]} />
-
-When a dapp is deployed to ICP, it has the ability to host web assets natively. An ICP project's frontend is commonly referred to as the **frontend canister**, as it is a canister that hosts the frontend of the application.
-
-Dapps may have complex frontends that serve dynamic, interactive interfaces, or they can be simple, static webpages using HTML and CSS. Web assets can come in many forms, such as CSS, JavaScript, React, HTML, images, videos, or streaming content. Most web apps contain a combination of several assets and frameworks together.
-
-## What is an asset canister?
-
-When a project has a frontend canister configured in its `dfx.json` file, `dfx` will compile the project's web assets into an **asset canister**. An asset canister is a special type of custom canister that uses Rust to compile the project's asset files into a Wasm module that can be installed and deployed to ICP. This is because canisters deployed on ICP must have a Wasm module.
-
-## Application URLs
-
-Frontend canisters serve the application's web assets via a URL that contains the <GlossaryTooltip>canister</GlossaryTooltip>'s ID. Local deployments use local URLs such as `http://127.0.0.1:4943/?canisterId=<canister-id>`, while applications deployed to the mainnet use public URLs containing the canister's ID followed by `.ic0.app`, `.icp0.io` or `raw.icp0.io`.
-
-### Raw HTTP interfaces
-
-The `raw.icp0.io` domain provides a way to access the raw HTTP interface of that canister. For local deployments that want to simulate the behavior of the `raw.icp0.io` domain, you must implement a method in your canister that consumes an HTTP request and outputs an HTTP response. Here is an example written in Motoko:
-
-```motoko no-repl
-public shared(msg) func http_request(req: HttpRequest) : async HttpResponse {
-    {
-        status = { code = 200; reason = "OK" };
-        headers = [( "Content-Type", "text/plain" )];
-        body = Text.encodeUtf8("Hello, World!");
-    }
-};
-```
-
-## Default `dfx` project configuration
-
-By default, each project created with `dfx new` will include a frontend canister unless the `--no-frontend` flag is used. `dfx` supports default templates for the SvelteKit, React, Vue, and Vanilla JS frameworks, or you can select "No JS template" if you'd like no frontend template to be used.
-
-Frontend canisters will be defined in your project's `dfx.json` file as `PROJECT_NAME_frontend`.
-
-```json
-{
-  "canisters": {
-    "PROJECT_NAME_backend": {
-      "main": "src/PROJECT_NAME_backend/main.mo",
-      "type": "motoko"
-    },
-    "PROJECT_NAME_frontend": {
-      "dependencies": [
-        "PROJECT_NAME_backend"
-      ],
-      "source": [
-        "src/PROJECT_NAME_frontend/dist"
-      ],
-      "type": "assets",
-      "workspace": "PROJECT_NAME_frontend"
-    }
-  },
-  "defaults": {
-    "build": {
-      "args": "",
-      "packtool": ""
-    }
-  },
-  "output_env_file": ".env",
-  "version": 1
-}
-```
-
-Frontend canisters have the following default configuration settings:
-
-- Frontend assets for your project are compiled into their own canister. In this case, a canister named `PROJECT_NAME_frontend`.
-
-- The `PROJECT_NAME_frontend` canister has a default dependency on the `PROJECT_NAME_backend` canister for the project.
-
-- The `source` setting specifies the paths to the `src` directory that are used for the web assets that will be compiled into your `PROJECT_NAME_frontend` canister when you build the project.
-
-- The `type` setting specifies that the `PROJECT_NAME_frontend` should be deployed using the [asset canister](https://github.com/dfinity/sdk/tree/master/src/canisters/frontend/ic-frontend-canister), which compiles the web assets listed in `source` into a Wasm module.
-
-### Default frontend canister files
-
-The default files included in the frontend canister will depend on the framework you chose when you created your project, or you can use an [existing application frontend](existing-frontend.mdx).
-
-## Example frontend canisters
-
-A few example frontend canisters you can reference include:
-
-- [ICP Ninja sample projects](https://icp.ninja).
-
-- [Minimal counter dapp](https://github.com/dfinity/examples/tree/master/motoko/minimal-counter-dapp/src/minimal_dapp_frontend).
-
-- [Random maze](https://github.com/dfinity/examples/tree/master/motoko/random_maze/src/random_maze_assets).
-
-- [IC Point of sale](https://github.com/dfinity/examples/tree/master/motoko/ic-pos/src/icpos_frontend).q
diff --git a/docs/tutorials/developer-journey/level-1/1.3-first-dapp.mdx b/docs/tutorials/developer-journey/level-1/1.3-first-dapp.mdx
index 447f680c6a..3884d1f3bb 100644
--- a/docs/tutorials/developer-journey/level-1/1.3-first-dapp.mdx
+++ b/docs/tutorials/developer-journey/level-1/1.3-first-dapp.mdx
@@ -623,7 +623,7 @@ Start by creating the file `src/poll_frontend/src/index.html` that contains the
 **What does this code do?**
 The HTML code above is a simple form that provides the end user with options to select using radio buttons. There is nothing 'Web3' or specific to ICP about this code.
 
-Then, the `<head>` tag is used to include some basic CSS for the page's styling. To learn more about adding a stylesheet, see: [add a stylesheet](/docs/current/developer-docs/web-apps/application-frontends/default-frontend).
+Then, the `<head>` tag is used to include some basic CSS for the page's styling. To learn more about adding a stylesheet, see: [add a stylesheet](/docs/current/developer-docs/web-apps/application-frontends/overview).
 :::
 
 Next, you will need a `webpack.config.js` file that defines several parameters to facilitate your local development web server.
diff --git a/plugins/utils/redirects.js b/plugins/utils/redirects.js
index 99851dfc7d..9a9c67db29 100644
--- a/plugins/utils/redirects.js
+++ b/plugins/utils/redirects.js
@@ -54,7 +54,7 @@ const redirects = `
   /docs/rust-guide/rust-intro /docs/current/developer-docs/backend/rust/
   /docs/languages/languages-overview /docs/current/developer-docs/smart-contracts/write/overview
   /docs/current/developer-docs/smart-contracts/write/choosing-language /docs/current/developer-docs/smart-contracts/write/overview
-  /docs/current/developer-docs/frontend/my-contacts /docs/current/developer-docs/web-apps/application-frontends/default-frontend
+  /docs/current/developer-docs/frontend/my-contacts /docs/current/developer-docs/web-apps/application-frontends/overview
   /docs/ic-interface-spec /docs/current/references/ic-interface-spec
   /docs/interface-spec /docs/current/references/ic-interface-spec
   /docs/current/developer-docs/updates/computation-and-storage-costs /docs/current/developer-docs/gas-cost
@@ -77,7 +77,7 @@ const redirects = `
   /docs/current/developer-docs/build/using-an-agent /docs/current/developer-docs/smart-contracts/write/overview
   /docs/current/developer-docs/build/backend/reproducible-builds /docs/current/developer-docs/smart-contracts/best-practices/reproducible-builds
   /docs/current/developer-docs/build/cdks/ /docs/current/motoko/main/getting-started/motoko-introduction
-  /docs/current/developer-docs/build/frontend/default-frontend /docs/current/developer-docs/web-apps/application-frontends/default-frontend
+  /docs/current/developer-docs/build/frontend/default-frontend /docs/current/developer-docs/web-apps/application-frontends/overview
   /docs/current/developer-docs/build/frontend/webpack-config /docs/current/developer-docs/web-apps/application-frontends/overview#modifying-the-webpack-configuration
   /docs/current/developer-docs/build/install-upgrade-remove /docs/current/developer-docs/getting-started/install
   /docs/current/developer-docs/build/languages/rust/* /docs/current/developer-docs/backend/rust/
@@ -109,8 +109,8 @@ const redirects = `
   /docs/developers-guide/sdk-guide /docs/current/developer-docs/getting-started/install
   /docs/developers-guide/troubleshooting /docs/current/developer-docs/getting-started/troubleshooting
   /docs/developers-guide/tutorials-intro /docs/current/motoko/main/getting-started/motoko-introduction
-  /docs/developers-guide/tutorials/default-frontend /docs/current/developer-docs/web-apps/application-frontends/default-frontend
-  /docs/developers-guide/tutorials/my-contacts /docs/current/developer-docs/web-apps/application-frontends/default-frontend
+  /docs/developers-guide/tutorials/default-frontend /docs/current/developer-docs/web-apps/application-frontends/overview
+  /docs/developers-guide/tutorials/my-contacts /docs/current/developer-docs/web-apps/application-frontends/overview
   /docs/developers-guide/webpack-config /docs/current/developer-docs/web-apps/application-frontends/overview
   /docs/developers-guide/work-with-languages /docs/current/developer-docs/smart-contracts/write/overview
   /docs/developers-guide/working-with-canisters /docs/current/developer-docs/smart-contracts/maintain/settings
@@ -339,8 +339,8 @@ const redirects = `
   /docs/current/developer-docs/setup/best-practices/storage /docs/current/developer-docs/smart-contracts/best-practices/storage
   /docs/current/developer-docs/setup/best-practices/troubleshooting /docs/current/developer-docs/smart-contracts/best-practices/troubleshooting
   /docs/current/developer-docs/frontend/ /docs/current/developer-docs/web-apps/application-frontends/overview
-  /docs/current/developer-docs/frontend/default-frontend /docs/current/developer-docs/web-apps/application-frontends/default-frontend
-  /docs/current/developer-docs/frontend/add-stylesheet /docs/current/developer-docs/web-apps/application-frontends/default-frontend
+  /docs/current/developer-docs/frontend/default-frontend /docs/current/developer-docs/web-apps/application-frontends/overview
+  /docs/current/developer-docs/frontend/add-stylesheet /docs/current/developer-docs/web-apps/application-frontends/overview
   /docs/current/developer-docs/frontend/boilerplate-frontend /docs/current/developer-docs/web-apps/application-frontends/overview
   /docs/current/developer-docs/frontend/existing-frontend /docs/current/developer-docs/web-apps/application-frontends/existing-frontend
   /docs/current/developer-docs/production/custom-domain/ /docs/current/developer-docs/web-apps/custom-domains/using-custom-domains
@@ -597,8 +597,8 @@ const redirects = `
   /docs/current/references/t-ecdsa-how-it-works /docs/current/references/t-sigs-how-it-works
   /docs/current/developer-docs/web-apps/application-frontends/bundlers /docs/current/developer-docs/web-apps/application-frontends/webpack
   /docs/current/developer-docs/web-apps/application-frontends/webpack-dev-server /docs/current/developer-docs/web-apps/application-frontends/webpack
-  /docs/current/developer-docs/web-apps/application-frontends/serving-static-assets /docs/current/developer-docs/web-apps/application-frontends/default-frontend
-  /docs/current/developer-docs/web-apps/application-frontends/custom-frontend /docs/current/developer-docs/web-apps/application-frontends/default-frontend
+  /docs/current/developer-docs/web-apps/application-frontends/serving-static-assets /docs/current/developer-docs/web-apps/application-frontends/overview
+  /docs/current/developer-docs/web-apps/application-frontends/custom-frontend /docs/current/developer-docs/web-apps/application-frontends/overview
   /docs/current/developer-docs/security/rust-canister-development-security-best-practices /docs/current/developer-docs/security/security-best-practices/inter-canister-calls
   /docs/developers-guide/computation-and-storage-costs.html /docs/current/developer-docs/gas-cost
   /docs/current/developer-docs/getting-started/ /docs/current/developer-docs/getting-started/network-overview
@@ -657,7 +657,9 @@ const redirects = `
   /docs/current/developer-docs/defi/tokens/ledger/usage/overview /docs/current/developer-docs/defi/overview
   /docs/current/developer-docs/web-apps/obtain-verify-ic-pubkey /docs/current/developer-docs/developer-tools/cli-tools/cli-reference/dfx-ping
   /docs/current/developer-docs/web-apps/design-dapps /docs/current/developer-docs/smart-contracts/overview/introduction
-  /docs/current/developer-docs/web-apps/application-frontends/add-stylesheet /docs/current/developer-docs/web-apps/application-frontends/default-frontend
+  /docs/current/developer-docs/web-apps/application-frontends/add-stylesheet /docs/current/developer-docs/web-apps/application-frontends/overview
+  /docs/current/developer-docs/web-apps/application-frontends/default-frontend /docs/current/developer-docs/web-apps/application-frontends/overview
+
 
   `
   .split(/[\r\n]+/)
diff --git a/sidebars.js b/sidebars.js
index 58489500ff..dcade40f77 100644
--- a/sidebars.js
+++ b/sidebars.js
@@ -519,7 +519,6 @@ const sidebars = {
             id: "developer-docs/web-apps/application-frontends/overview",
           },
           items: [
-            "developer-docs/web-apps/application-frontends/default-frontend",
             "developer-docs/web-apps/application-frontends/existing-frontend",
             "developer-docs/web-apps/application-frontends/asset-security",
             "developer-docs/web-apps/application-frontends/webpack",

From bab84d0cc488c639645e569892ea8f1397d5ae0d Mon Sep 17 00:00:00 2001
From: Jessie Mongeon <133128541+jessiemongeon1@users.noreply.github.com>
Date: Tue, 17 Dec 2024 13:21:34 -0600
Subject: [PATCH 2/3] Update overview.mdx

---
 .../application-frontends/overview.mdx        | 22 +++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/docs/developer-docs/web-apps/application-frontends/overview.mdx b/docs/developer-docs/web-apps/application-frontends/overview.mdx
index c64548f258..cda7f5f65a 100644
--- a/docs/developer-docs/web-apps/application-frontends/overview.mdx
+++ b/docs/developer-docs/web-apps/application-frontends/overview.mdx
@@ -107,7 +107,25 @@ The [Express HTTP server](https://demergent-labs.github.io/azle/) package via Az
 
 The frontend canister can host roughly 1GiB in static files. It is recommended that you distribute your files across multiple canisters if the total size of all your assets begins to exceed this amount. Once you exceed this figure, your canister may fail to upgrade.
 
-## Dynamic URLs
+## Application URLs
+
+Frontend canisters serve the application's web assets via a URL that contains the <GlossaryTooltip>canister</GlossaryTooltip>'s ID. Local deployments use local URLs such as `http://127.0.0.1:4943/?canisterId=<canister-id>`, while applications deployed to the mainnet use public URLs containing the canister's ID followed by `.ic0.app`, `.icp0.io` or `raw.icp0.io`.
+
+### Raw HTTP interfaces
+
+The `raw.icp0.io` domain provides a way to access the raw HTTP interface of that canister. For local deployments that want to simulate the behavior of the `raw.icp0.io` domain, you must implement a method in your canister that consumes an HTTP request and outputs an HTTP response. Here is an example written in Motoko:
+
+```motoko no-repl
+public shared(msg) func http_request(req: HttpRequest) : async HttpResponse {
+    {
+        status = { code = 200; reason = "OK" };
+        headers = [( "Content-Type", "text/plain" )];
+        body = Text.encodeUtf8("Hello, World!");
+    }
+};
+```
+
+### Dynamic URLs
 
 Dynamic URLs are currently not supported by the default frontend canister.
 
@@ -141,4 +159,4 @@ let path = HttpCertificationPath::wildcard("/js");
 
 ## Next steps
 
-[Learn how to use and customize the default frontend canister](default-frontend.mdx).
\ No newline at end of file
+[Learn how to use and customize the default frontend canister](default-frontend.mdx).

From 1df716ba11ee6ef83692bd61587119c440278c98 Mon Sep 17 00:00:00 2001
From: Jessie Mongeon <133128541+jessiemongeon1@users.noreply.github.com>
Date: Tue, 17 Dec 2024 13:46:01 -0600
Subject: [PATCH 3/3] Update overview.mdx

---
 .../web-apps/application-frontends/overview.mdx               | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/docs/developer-docs/web-apps/application-frontends/overview.mdx b/docs/developer-docs/web-apps/application-frontends/overview.mdx
index cda7f5f65a..617e5900bf 100644
--- a/docs/developer-docs/web-apps/application-frontends/overview.mdx
+++ b/docs/developer-docs/web-apps/application-frontends/overview.mdx
@@ -156,7 +156,3 @@ let path = HttpCertificationPath::wildcard("/js");
 - [Vite + SvelteKit + Motoko](https://github.com/letmejustputthishere/vite-sveltekit-motoko-ii/tree/main) template example.
 
 - Deploying an [existing Next.js application](./existing-frontend.mdx) as a frontend canister.
-
-## Next steps
-
-[Learn how to use and customize the default frontend canister](default-frontend.mdx).