diff --git a/fonts/华康少女字体.ttf b/assets/fonts/华康少女字体.ttf
similarity index 100%
rename from fonts/华康少女字体.ttf
rename to assets/fonts/华康少女字体.ttf
diff --git a/icons.qrc b/assets/icons.qrc
similarity index 82%
rename from icons.qrc
rename to assets/icons.qrc
index 0814530..bdfa1be 100644
--- a/icons.qrc
+++ b/assets/icons.qrc
@@ -34,18 +34,18 @@
         <file>icons/refresh-page.svg</file>
     </qresource>
     <qresource prefix="/">
-        <file>Logo-Spark.png</file>
-        <file>big_image.cpp</file>
-        <file>big_image.h</file>
-        <file>downloadlist.cpp</file>
-        <file>downloadlist.h</file>
-        <file>image_show.cpp</file>
-        <file>image_show.h</file>
-        <file>main.cpp</file>
-        <file>progressload.cpp</file>
-        <file>progressload.h</file>
-        <file>widget.cpp</file>
-        <file>widget.h</file>
+        <file>../Logo-Spark.png</file>
+        <file>../src/big_image.cpp</file>
+        <file>../src/big_image.h</file>
+        <file>../src/downloadlist.cpp</file>
+        <file>../src/downloadlist.h</file>
+        <file>../src/image_show.cpp</file>
+        <file>../src/image_show.h</file>
+        <file>../src/main.cpp</file>
+        <file>../src/progressload.cpp</file>
+        <file>../src/progressload.h</file>
+        <file>../src/widget.cpp</file>
+        <file>../src/widget.h</file>
         <file>tags/a2d.png</file>
         <file>tags/community.svg</file>
         <file>tags/deepin.svg</file>
diff --git a/icons/category_active.svg b/assets/icons/category_active.svg
similarity index 100%
rename from icons/category_active.svg
rename to assets/icons/category_active.svg
diff --git a/icons/category_active_dark.svg b/assets/icons/category_active_dark.svg
similarity index 100%
rename from icons/category_active_dark.svg
rename to assets/icons/category_active_dark.svg
diff --git a/icons/category_chat.svg b/assets/icons/category_chat.svg
similarity index 100%
rename from icons/category_chat.svg
rename to assets/icons/category_chat.svg
diff --git a/icons/category_chat_dark.svg b/assets/icons/category_chat_dark.svg
similarity index 100%
rename from icons/category_chat_dark.svg
rename to assets/icons/category_chat_dark.svg
diff --git a/icons/category_develop.svg b/assets/icons/category_develop.svg
similarity index 100%
rename from icons/category_develop.svg
rename to assets/icons/category_develop.svg
diff --git a/icons/category_develop_dark.svg b/assets/icons/category_develop_dark.svg
similarity index 100%
rename from icons/category_develop_dark.svg
rename to assets/icons/category_develop_dark.svg
diff --git a/icons/category_game.svg b/assets/icons/category_game.svg
similarity index 100%
rename from icons/category_game.svg
rename to assets/icons/category_game.svg
diff --git a/icons/category_game_dark.svg b/assets/icons/category_game_dark.svg
similarity index 100%
rename from icons/category_game_dark.svg
rename to assets/icons/category_game_dark.svg
diff --git a/icons/category_graphic.svg b/assets/icons/category_graphic.svg
similarity index 100%
rename from icons/category_graphic.svg
rename to assets/icons/category_graphic.svg
diff --git a/icons/category_graphic_dark.svg b/assets/icons/category_graphic_dark.svg
similarity index 100%
rename from icons/category_graphic_dark.svg
rename to assets/icons/category_graphic_dark.svg
diff --git a/icons/category_music.svg b/assets/icons/category_music.svg
similarity index 100%
rename from icons/category_music.svg
rename to assets/icons/category_music.svg
diff --git a/icons/category_music_dark.svg b/assets/icons/category_music_dark.svg
similarity index 100%
rename from icons/category_music_dark.svg
rename to assets/icons/category_music_dark.svg
diff --git a/icons/category_network.svg b/assets/icons/category_network.svg
similarity index 100%
rename from icons/category_network.svg
rename to assets/icons/category_network.svg
diff --git a/icons/category_network_dark.svg b/assets/icons/category_network_dark.svg
similarity index 100%
rename from icons/category_network_dark.svg
rename to assets/icons/category_network_dark.svg
diff --git a/icons/category_office.svg b/assets/icons/category_office.svg
similarity index 100%
rename from icons/category_office.svg
rename to assets/icons/category_office.svg
diff --git a/icons/category_office_dark.svg b/assets/icons/category_office_dark.svg
similarity index 100%
rename from icons/category_office_dark.svg
rename to assets/icons/category_office_dark.svg
diff --git a/icons/category_others.svg b/assets/icons/category_others.svg
similarity index 100%
rename from icons/category_others.svg
rename to assets/icons/category_others.svg
diff --git a/icons/category_others_dark.svg b/assets/icons/category_others_dark.svg
similarity index 100%
rename from icons/category_others_dark.svg
rename to assets/icons/category_others_dark.svg
diff --git a/icons/category_reading.svg b/assets/icons/category_reading.svg
similarity index 100%
rename from icons/category_reading.svg
rename to assets/icons/category_reading.svg
diff --git a/icons/category_reading_dark.svg b/assets/icons/category_reading_dark.svg
similarity index 100%
rename from icons/category_reading_dark.svg
rename to assets/icons/category_reading_dark.svg
diff --git a/icons/category_system.svg b/assets/icons/category_system.svg
similarity index 100%
rename from icons/category_system.svg
rename to assets/icons/category_system.svg
diff --git a/icons/category_system_dark.svg b/assets/icons/category_system_dark.svg
similarity index 100%
rename from icons/category_system_dark.svg
rename to assets/icons/category_system_dark.svg
diff --git a/icons/category_video.svg b/assets/icons/category_video.svg
similarity index 100%
rename from icons/category_video.svg
rename to assets/icons/category_video.svg
diff --git a/icons/category_video_dark.svg b/assets/icons/category_video_dark.svg
similarity index 100%
rename from icons/category_video_dark.svg
rename to assets/icons/category_video_dark.svg
diff --git a/icons/downloads-symbolic.svg b/assets/icons/downloads-symbolic.svg
similarity index 100%
rename from icons/downloads-symbolic.svg
rename to assets/icons/downloads-symbolic.svg
diff --git a/icons/downloads-symbolic_dark.svg b/assets/icons/downloads-symbolic_dark.svg
similarity index 100%
rename from icons/downloads-symbolic_dark.svg
rename to assets/icons/downloads-symbolic_dark.svg
diff --git a/icons/homepage.svg b/assets/icons/homepage.svg
similarity index 100%
rename from icons/homepage.svg
rename to assets/icons/homepage.svg
diff --git a/icons/homepage_dark.svg b/assets/icons/homepage_dark.svg
similarity index 100%
rename from icons/homepage_dark.svg
rename to assets/icons/homepage_dark.svg
diff --git a/icons/refresh-page-dark.svg b/assets/icons/refresh-page-dark.svg
similarity index 100%
rename from icons/refresh-page-dark.svg
rename to assets/icons/refresh-page-dark.svg
diff --git a/icons/refresh-page.svg b/assets/icons/refresh-page.svg
similarity index 100%
rename from icons/refresh-page.svg
rename to assets/icons/refresh-page.svg
diff --git a/icons/theme-symbolic.svg b/assets/icons/theme-symbolic.svg
similarity index 100%
rename from icons/theme-symbolic.svg
rename to assets/icons/theme-symbolic.svg
diff --git a/icons/theme-symbolic_dark.svg b/assets/icons/theme-symbolic_dark.svg
similarity index 100%
rename from icons/theme-symbolic_dark.svg
rename to assets/icons/theme-symbolic_dark.svg
diff --git a/tags/a2d-small.png b/assets/tags/a2d-small.png
similarity index 100%
rename from tags/a2d-small.png
rename to assets/tags/a2d-small.png
diff --git a/tags/a2d.png b/assets/tags/a2d.png
similarity index 100%
rename from tags/a2d.png
rename to assets/tags/a2d.png
diff --git a/tags/community-small.png b/assets/tags/community-small.png
similarity index 100%
rename from tags/community-small.png
rename to assets/tags/community-small.png
diff --git a/tags/community.png b/assets/tags/community.png
similarity index 100%
rename from tags/community.png
rename to assets/tags/community.png
diff --git a/tags/community.svg b/assets/tags/community.svg
similarity index 100%
rename from tags/community.svg
rename to assets/tags/community.svg
diff --git a/tags/deepin-small.png b/assets/tags/deepin-small.png
similarity index 100%
rename from tags/deepin-small.png
rename to assets/tags/deepin-small.png
diff --git a/tags/deepin.svg b/assets/tags/deepin.svg
similarity index 100%
rename from tags/deepin.svg
rename to assets/tags/deepin.svg
diff --git a/tags/dtk-small.png b/assets/tags/dtk-small.png
similarity index 100%
rename from tags/dtk-small.png
rename to assets/tags/dtk-small.png
diff --git a/tags/dwine2-small.png b/assets/tags/dwine2-small.png
similarity index 100%
rename from tags/dwine2-small.png
rename to assets/tags/dwine2-small.png
diff --git a/tags/dwine5-small.png b/assets/tags/dwine5-small.png
similarity index 100%
rename from tags/dwine5-small.png
rename to assets/tags/dwine5-small.png
diff --git a/tags/dwine5.svg b/assets/tags/dwine5.svg
similarity index 100%
rename from tags/dwine5.svg
rename to assets/tags/dwine5.svg
diff --git a/tags/logo_icon.svg b/assets/tags/logo_icon.svg
similarity index 100%
rename from tags/logo_icon.svg
rename to assets/tags/logo_icon.svg
diff --git a/tags/ubuntu-small.png b/assets/tags/ubuntu-small.png
similarity index 100%
rename from tags/ubuntu-small.png
rename to assets/tags/ubuntu-small.png
diff --git a/tags/ubuntu.png b/assets/tags/ubuntu.png
similarity index 100%
rename from tags/ubuntu.png
rename to assets/tags/ubuntu.png
diff --git a/tags/uos-small.png b/assets/tags/uos-small.png
similarity index 100%
rename from tags/uos-small.png
rename to assets/tags/uos-small.png
diff --git a/tags/uos.svg b/assets/tags/uos.svg
similarity index 100%
rename from tags/uos.svg
rename to assets/tags/uos.svg
diff --git a/spark-store-project.pro b/spark-store-project.pro
new file mode 100644
index 0000000..329b096
--- /dev/null
+++ b/spark-store-project.pro
@@ -0,0 +1,7 @@
+TEMPLATE = subdirs
+CONFIG += ordered
+
+SUBDIRS = third-party/QtNetworkService \
+    src/spark-store.pro
+    
+spark-store.depends = third-party/QtNetworkService
\ No newline at end of file
diff --git a/spark-store-project.pro.user b/spark-store-project.pro.user
new file mode 100644
index 0000000..4c6991a
--- /dev/null
+++ b/spark-store-project.pro.user
@@ -0,0 +1,355 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE QtCreatorProject>
+<!-- Written by QtCreator 4.13.2, 2020-11-13T22:47:27. -->
+<qtcreator>
+ <data>
+  <variable>EnvironmentId</variable>
+  <value type="QByteArray">{00b3f4d7-8db0-4253-a398-d3de963c3817}</value>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.ActiveTarget</variable>
+  <value type="int">0</value>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.EditorSettings</variable>
+  <valuemap type="QVariantMap">
+   <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
+   <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
+   <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
+   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
+    <value type="QString" key="language">Cpp</value>
+    <valuemap type="QVariantMap" key="value">
+     <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
+    </valuemap>
+   </valuemap>
+   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
+    <value type="QString" key="language">QmlJS</value>
+    <valuemap type="QVariantMap" key="value">
+     <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
+    </valuemap>
+   </valuemap>
+   <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
+   <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
+   <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
+   <value type="int" key="EditorConfiguration.IndentSize">4</value>
+   <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
+   <value type="int" key="EditorConfiguration.MarginColumn">80</value>
+   <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
+   <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
+   <value type="int" key="EditorConfiguration.PaddingMode">1</value>
+   <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
+   <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
+   <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
+   <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
+   <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
+   <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
+   <value type="int" key="EditorConfiguration.TabSize">8</value>
+   <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
+   <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
+   <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
+   <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
+   <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
+   <value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
+   <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
+   <value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.PluginSettings</variable>
+  <valuemap type="QVariantMap">
+   <valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
+    <value type="bool" key="AutoTest.Framework.Boost">true</value>
+    <value type="bool" key="AutoTest.Framework.Catch">true</value>
+    <value type="bool" key="AutoTest.Framework.GTest">true</value>
+    <value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
+    <value type="bool" key="AutoTest.Framework.QtTest">true</value>
+   </valuemap>
+   <valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
+   <value type="int" key="AutoTest.RunAfterBuild">0</value>
+   <value type="bool" key="AutoTest.UseGlobal">true</value>
+   <valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey"/>
+   <value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
+   <value type="QString" key="ClangCodeModel.WarningConfigId">Builtin.Questionable</value>
+   <valuemap type="QVariantMap" key="ClangTools">
+    <value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
+    <value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
+    <value type="int" key="ClangTools.ParallelJobs">2</value>
+    <valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
+    <valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
+    <valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
+    <value type="bool" key="ClangTools.UseGlobalSettings">true</value>
+   </valuemap>
+  </valuemap>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.Target.0</variable>
+  <valuemap type="QVariantMap">
+   <value type="QString" key="DeviceType">Desktop</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qt5.11.3</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">qt5.11.3</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{138a9e55-4e7e-4c77-90d9-30ea9975c6ad}</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
+    <value type="bool">true</value>
+    <value type="int" key="EnableQmlDebugging">0</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/metanoia1989/WorkSpace/build-spark-store-project-qt5_11_3-Debug</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/home/metanoia1989/WorkSpace/build-spark-store-project-qt5_11_3-Debug</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+      <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
+     </valuemap>
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+    </valuemap>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
+    <value type="int" key="QtQuickCompiler">2</value>
+    <value type="int" key="SeparateDebugInfo">2</value>
+   </valuemap>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
+    <value type="bool">true</value>
+    <value type="int" key="EnableQmlDebugging">2</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/metanoia1989/WorkSpace/build-spark-store-project-qt5_11_3-Release</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/home/metanoia1989/WorkSpace/build-spark-store-project-qt5_11_3-Release</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+      <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
+     </valuemap>
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+    </valuemap>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+    <value type="int" key="QtQuickCompiler">0</value>
+    <value type="int" key="SeparateDebugInfo">2</value>
+   </valuemap>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
+    <value type="bool">true</value>
+    <value type="int" key="EnableQmlDebugging">0</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/metanoia1989/WorkSpace/build-spark-store-project-qt5_11_3-Profile</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/home/metanoia1989/WorkSpace/build-spark-store-project-qt5_11_3-Profile</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+      <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
+     </valuemap>
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+    </valuemap>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+      <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+    <value type="int" key="QtQuickCompiler">0</value>
+    <value type="int" key="SeparateDebugInfo">0</value>
+   </valuemap>
+   <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
+    <value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
+   </valuemap>
+   <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
+    <value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
+    <valuelist type="QVariantList" key="Analyzer.Perf.Events">
+     <value type="QString">cpu-cycles</value>
+    </valuelist>
+    <valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
+    <value type="int" key="Analyzer.Perf.Frequency">250</value>
+    <valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
+     <value type="QString">-e</value>
+     <value type="QString">cpu-cycles</value>
+     <value type="QString">--call-graph</value>
+     <value type="QString">dwarf,4096</value>
+     <value type="QString">-F</value>
+     <value type="QString">250</value>
+    </valuelist>
+    <value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
+    <value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
+    <value type="int" key="Analyzer.Perf.StackSize">4096</value>
+    <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
+    <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
+    <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
+    <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
+    <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
+    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
+    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
+    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
+    <value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
+    <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
+    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
+    <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
+    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
+    <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
+    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
+    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
+     <value type="int">0</value>
+     <value type="int">1</value>
+     <value type="int">2</value>
+     <value type="int">3</value>
+     <value type="int">4</value>
+     <value type="int">5</value>
+     <value type="int">6</value>
+     <value type="int">7</value>
+     <value type="int">8</value>
+     <value type="int">9</value>
+     <value type="int">10</value>
+     <value type="int">11</value>
+     <value type="int">12</value>
+     <value type="int">13</value>
+     <value type="int">14</value>
+    </valuelist>
+    <valuelist type="QVariantList" key="CustomOutputParsers"/>
+    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
+    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+    <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
+    <value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey"></value>
+    <value type="QString" key="RunConfiguration.Arguments"></value>
+    <value type="bool" key="RunConfiguration.Arguments.multi">false</value>
+    <value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
+    <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
+    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
+    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
+    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+    <value type="QString" key="RunConfiguration.WorkingDirectory"></value>
+    <value type="QString" key="RunConfiguration.WorkingDirectory.default"></value>
+   </valuemap>
+   <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.TargetCount</variable>
+  <value type="int">1</value>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
+  <value type="int">22</value>
+ </data>
+ <data>
+  <variable>Version</variable>
+  <value type="int">22</value>
+ </data>
+</qtcreator>
diff --git a/src/appitem.cpp b/src/appitem.cpp
new file mode 100644
index 0000000..2e845f9
--- /dev/null
+++ b/src/appitem.cpp
@@ -0,0 +1,14 @@
+#include "appitem.h"
+#include "ui_appitem.h"
+
+AppItem::AppItem(QWidget *parent) :
+    QWidget(parent),
+    ui(new Ui::AppItem)
+{
+    ui->setupUi(this);
+}
+
+AppItem::~AppItem()
+{
+    delete ui;
+}
diff --git a/src/appitem.h b/src/appitem.h
new file mode 100644
index 0000000..93f4da3
--- /dev/null
+++ b/src/appitem.h
@@ -0,0 +1,22 @@
+#ifndef APPITEM_H
+#define APPITEM_H
+
+#include <QWidget>
+
+namespace Ui {
+class AppItem;
+}
+
+class AppItem : public QWidget
+{
+    Q_OBJECT
+
+public:
+    explicit AppItem(QWidget *parent = nullptr);
+    ~AppItem();
+
+private:
+    Ui::AppItem *ui;
+};
+
+#endif // APPITEM_H
diff --git a/src/appitem.ui b/src/appitem.ui
new file mode 100644
index 0000000..9d5d09c
--- /dev/null
+++ b/src/appitem.ui
@@ -0,0 +1,21 @@
+<ui version="4.0">
+ <author/>
+ <comment/>
+ <exportmacro/>
+ <class>AppItem</class>
+ <widget name="AppItem" class="QWidget">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+ </widget>
+ <pixmapfunction/>
+ <connections/>
+</ui>
diff --git a/big_image.cpp b/src/big_image.cpp
similarity index 100%
rename from big_image.cpp
rename to src/big_image.cpp
diff --git a/big_image.h b/src/big_image.h
similarity index 100%
rename from big_image.h
rename to src/big_image.h
diff --git a/downloadlist.cpp b/src/downloadlist.cpp
similarity index 100%
rename from downloadlist.cpp
rename to src/downloadlist.cpp
diff --git a/downloadlist.h b/src/downloadlist.h
similarity index 100%
rename from downloadlist.h
rename to src/downloadlist.h
diff --git a/downloadlist.ui b/src/downloadlist.ui
similarity index 100%
rename from downloadlist.ui
rename to src/downloadlist.ui
diff --git a/image_show.cpp b/src/image_show.cpp
similarity index 100%
rename from image_show.cpp
rename to src/image_show.cpp
diff --git a/image_show.h b/src/image_show.h
similarity index 100%
rename from image_show.h
rename to src/image_show.h
diff --git a/main.cpp b/src/main.cpp
similarity index 100%
rename from main.cpp
rename to src/main.cpp
diff --git a/progressload.cpp b/src/progressload.cpp
similarity index 100%
rename from progressload.cpp
rename to src/progressload.cpp
diff --git a/progressload.h b/src/progressload.h
similarity index 100%
rename from progressload.h
rename to src/progressload.h
diff --git a/spark-store.pro b/src/spark-store.pro
similarity index 66%
rename from spark-store.pro
rename to src/spark-store.pro
index 221fbfb..61089ea 100644
--- a/spark-store.pro
+++ b/src/spark-store.pro
@@ -26,6 +26,7 @@ DEFINES += QT_DEPRECATED_WARNINGS
 #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
 
 SOURCES += main.cpp\
+    appitem.cpp \
     widget.cpp \
     downloadlist.cpp \
     image_show.cpp \
@@ -34,6 +35,7 @@ SOURCES += main.cpp\
     workerthreads.cpp
 
 HEADERS  += \
+    appitem.h \
     widget.h \
     downloadlist.h \
     image_show.h \
@@ -42,31 +44,32 @@ HEADERS  += \
     workerthreads.h
 
 FORMS += \
+    appitem.ui \
     widget.ui \
     downloadlist.ui
 
 RESOURCES += \
-    icons.qrc
+    ../assets/icons.qrc
 
 DISTFILES += \
-    tags/a2d-small.png \
-    tags/a2d.png \
-    tags/community-small.png \
-    tags/community.png \
-    tags/deepin-small.png \
-    tags/dtk-small.png \
-    tags/ubuntu-small.png \
-    tags/ubuntu.png \
-    tags/uos-small.png \
-    tags/community.svg \
-    tags/deepin.svg \
-    tags/logo_icon.svg \
-    tags/uos.svg
+    ../assets/tags/a2d-small.png \
+    ../assets/tags/a2d.png \
+    ../assets/tags/community-small.png \
+    ../assets/tags/community.png \
+    ../assets/tags/deepin-small.png \
+    ../assets/tags/dtk-small.png \
+    ../assets/tags/ubuntu-small.png \
+    ../assets/tags/ubuntu.png \
+    ../assets/tags/uos-small.png \
+    ../assets/tags/community.svg \
+    ../assets/tags/deepin.svg \
+    ../assets/tags/logo_icon.svg \
+    ../assets/tags/uos.svg
 
-TRANSLATIONS = ./trans/spark-store_en.ts \
-               ./trans/spark-store_zh_CN.ts
-               ./trans/spark-store_fr.ts\
+TRANSLATIONS = ../trans/spark-store_en.ts \
+               ../trans/spark-store_zh_CN.ts
+               ../trans/spark-store_fr.ts\
 
 DEFINES += QT_APP_DEBUG
-include(./third-party/QtNetworkService/QtNetworkService.pri)
+include(../third-party/QtNetworkService/QtNetworkService.pri)
 
diff --git a/widget.cpp b/src/widget.cpp
similarity index 100%
rename from widget.cpp
rename to src/widget.cpp
diff --git a/widget.h b/src/widget.h
similarity index 100%
rename from widget.h
rename to src/widget.h
diff --git a/widget.ui b/src/widget.ui
similarity index 100%
rename from widget.ui
rename to src/widget.ui
diff --git a/workerthreads.cpp b/src/workerthreads.cpp
similarity index 100%
rename from workerthreads.cpp
rename to src/workerthreads.cpp
diff --git a/workerthreads.h b/src/workerthreads.h
similarity index 100%
rename from workerthreads.h
rename to src/workerthreads.h
diff --git a/third-party/QtNetworkService/HttpRequest.cpp b/third-party/QtNetworkService/HttpRequest.cpp
index 8d44c11..f34b147 100644
--- a/third-party/QtNetworkService/HttpRequest.cpp
+++ b/third-party/QtNetworkService/HttpRequest.cpp
@@ -118,17 +118,17 @@ HttpRequest &HttpRequest::body(const QVariant &body)
             m_body = QJsonDocument(QJsonObject::fromVariantMap(body.toMap())).toJson();
         }
         else {
-            warning << "This is not data in JSON format(QVariantMap or QJsonObject).";
+            log_warning << "This is not data in JSON format(QVariantMap or QJsonObject).";
             m_body = QByteArray();
             // warning output
         }
     }
     else {
         m_body = QByteArray();
-        warning << "Disable body.";
+        log_warning << "Disable body.";
     }
 
-    debugger << "Body Content:" << m_body;
+    log_debugger << "Body Content:" << m_body;
     return *this;
 }
 #endif
@@ -211,9 +211,9 @@ HttpResponse *HttpRequest::exec()
         sendBuffer->setData(m_body);
     }
 
-    debugger << "Http Client info: ";
-    debugger << "Type: " << s_httpOperation[m_op];
-    debugger << "Url: " << m_networkRequest.url().toString();
+    log_debugger << "Http Client info: ";
+    log_debugger << "Type: " << s_httpOperation[m_op];
+    log_debugger << "Url: " << m_networkRequest.url().toString();
     QString headers;
     for (int i = 0; i < m_networkRequest.rawHeaderList().count(); i++) {
         QString each = m_networkRequest.rawHeaderList().at(i);
@@ -221,8 +221,8 @@ HttpResponse *HttpRequest::exec()
         headers += QString("%1: %2;").arg(each)
                                      .arg(header);
     }
-    debugger << "Header: " << headers;
-    debugger << "Send buffer(Body):\r\n" << m_body;
+    log_debugger << "Header: " << headers;
+    log_debugger << "Send buffer(Body):\r\n" << m_body;
 
     reply = m_httpService->createRequest(m_op, m_networkRequest, sendBuffer);
 
diff --git a/third-party/QtNetworkService/HttpRequest.h b/third-party/QtNetworkService/HttpRequest.h
index 44672a1..b7358c3 100644
--- a/third-party/QtNetworkService/HttpRequest.h
+++ b/third-party/QtNetworkService/HttpRequest.h
@@ -19,15 +19,15 @@ LISCENSE: MIT
 namespace AeaQt {
 
 #ifdef QT_APP_DEBUG
-#define debugger qDebug().noquote().nospace() \
+#define log_debugger qDebug().noquote().nospace() \
                           << "[AeaQt::Network] Debug: -> " \
                           << "function: " << __func__ << "; " \
                           << "line: " << __LINE__ << "; "
 #else
-#define debug QString()
+#define log_debugger QString()
 #endif
 
-#define warning qWarning().noquote().nospace() \
+#define log_warning qWarning().noquote().nospace() \
                            << "[AeaQt::Network] Warning: -> " \
                            << "function: " << __func__ << "; " \
                            << "line: " << __LINE__ << "; "
diff --git a/third-party/QtNetworkService/QtNetworkService.pri b/third-party/QtNetworkService/QtNetworkService.pri
index 891bcb2..1d01eb2 100644
--- a/third-party/QtNetworkService/QtNetworkService.pri
+++ b/third-party/QtNetworkService/QtNetworkService.pri
@@ -11,5 +11,5 @@ INCLUDEPATH += $$PWD/
 QT += network
 
 !CONFIG(QT_APP_MODE) {
-    LIBS += -L$$OUT_PWD/Lib -lQtNetworkService
+    LIBS += -L$$OUT_PWD/../third-party/QtNetworkService/Lib -lQtNetworkService
 }
diff --git a/third-party/QtNetworkService/QtNetworkService.pro b/third-party/QtNetworkService/QtNetworkService.pro
index 446ccfb..47bbcf9 100644
--- a/third-party/QtNetworkService/QtNetworkService.pro
+++ b/third-party/QtNetworkService/QtNetworkService.pro
@@ -13,8 +13,8 @@ DEFINES += QT_APP_DEBUG
 
 QT += network
 
-CONFIG += staticlib
 TEMPLATE = lib
+CONFIG += staticlib
 unix:TARGET = $$OUT_PWD/Lib/QtNetworkService
 
 win32: {