diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index bbaab2e2298c4dbdffac098396832457062318a8..14b10f28ec2af0c57e89c588254a14302630385d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -15,6 +15,7 @@ build:web-main:
   stage: build
   image: cirrusci/flutter
   script:
+    - flutter pub run flutter_launcher_icons:main
     - flutter build web --release --base-href '/article_flutter_riverpod/'
   artifacts:
     paths:
diff --git a/assets/icon/icon.png b/assets/icon/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..9cec09493649cd323554fd04762fb74bd37078c2
Binary files /dev/null and b/assets/icon/icon.png differ
diff --git a/flutter_launcher_icons.yaml b/flutter_launcher_icons.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..9245c7859cecf5c0333e777fa90350d1854c7c41
--- /dev/null
+++ b/flutter_launcher_icons.yaml
@@ -0,0 +1,9 @@
+flutter_icons:
+  image_path: "assets/icon/icon.png"
+  android: true
+  ios: true
+  remove_alpha_ios: true
+  web:
+    generate: true
+  windows:
+    generate: true
\ No newline at end of file
diff --git a/pubspec.lock b/pubspec.lock
index 18dd95a6ca838f20bfb24afc7991f7503c2cba19..8a2c7d75869fe1b30cefc0ef1d219e86d045af91 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -15,6 +15,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "4.7.0"
+  archive:
+    dependency: transitive
+    description:
+      name: archive
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "3.3.1"
   args:
     dependency: transitive
     description:
@@ -113,6 +120,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "2.0.1"
+  cli_util:
+    dependency: transitive
+    description:
+      name: cli_util
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "0.3.5"
   clock:
     dependency: transitive
     description:
@@ -188,6 +202,13 @@ packages:
     description: flutter
     source: sdk
     version: "0.0.0"
+  flutter_launcher_icons:
+    dependency: "direct dev"
+    description:
+      name: flutter_launcher_icons
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "0.10.0"
   flutter_lints:
     dependency: "direct dev"
     description:
@@ -254,6 +275,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "4.0.1"
+  image:
+    dependency: transitive
+    description:
+      name: image
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "3.2.0"
   io:
     dependency: transitive
     description:
@@ -338,6 +366,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "1.8.1"
+  petitparser:
+    dependency: transitive
+    description:
+      name: petitparser
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "5.0.0"
   pool:
     dependency: transitive
     description:
@@ -483,6 +518,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "2.2.0"
+  xml:
+    dependency: transitive
+    description:
+      name: xml
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "6.1.0"
   yaml:
     dependency: transitive
     description:
diff --git a/pubspec.yaml b/pubspec.yaml
index f48e12096c42686d676a7430e5ed1924f6f887d5..0d995360c176b3529be581771ee2c8c14279761b 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -49,6 +49,7 @@ dev_dependencies:
   flutter_lints: ^2.0.0
   mockito: ^5.1.0
   build_runner: ^2.1.10
+  flutter_launcher_icons: ^0.10.0
 
 # For information on the generic Dart part of this file, see the
 # following page: https://dart.dev/tools/pub/pubspec