diff --git a/public/vis_workshop/img/1.JPG b/public/vis_workshop/img/1.JPG
new file mode 100644
index 0000000000000000000000000000000000000000..93a22b50d6c6c20852b4a2616f91eaaf9c050277
Binary files /dev/null and b/public/vis_workshop/img/1.JPG differ
diff --git a/public/vis_workshop/img/1a.JPG b/public/vis_workshop/img/1a.JPG
new file mode 100644
index 0000000000000000000000000000000000000000..62b304d8b44fbf4890cc99508331d761f06f4014
Binary files /dev/null and b/public/vis_workshop/img/1a.JPG differ
diff --git a/public/vis_workshop/img/2.JPG b/public/vis_workshop/img/2.JPG
new file mode 100644
index 0000000000000000000000000000000000000000..64590256650049491e1aac97dc7550adcf4abbae
Binary files /dev/null and b/public/vis_workshop/img/2.JPG differ
diff --git a/public/vis_workshop/img/3.JPG b/public/vis_workshop/img/3.JPG
new file mode 100644
index 0000000000000000000000000000000000000000..c70c3cbe0d40417f22eee88fda5084b8ef73b386
Binary files /dev/null and b/public/vis_workshop/img/3.JPG differ
diff --git a/public/vis_workshop/img/4.JPG b/public/vis_workshop/img/4.JPG
new file mode 100644
index 0000000000000000000000000000000000000000..6c9d6872e1b2c6d1c2542a5f24be7d1dc81b9ed2
Binary files /dev/null and b/public/vis_workshop/img/4.JPG differ
diff --git a/public/vis_workshop/img/5.JPG b/public/vis_workshop/img/5.JPG
new file mode 100644
index 0000000000000000000000000000000000000000..52bae0b1ecfa3c7ccf7227d5b4e6ff89b87fb47b
Binary files /dev/null and b/public/vis_workshop/img/5.JPG differ
diff --git a/public/vis_workshop/img/6.JPG b/public/vis_workshop/img/6.JPG
new file mode 100644
index 0000000000000000000000000000000000000000..ce01040ebeee458aa64dc01593e90ef85b8a407e
Binary files /dev/null and b/public/vis_workshop/img/6.JPG differ
diff --git a/public/vis_workshop/img/Deutschland3D.JPG b/public/vis_workshop/img/Deutschland3D.JPG
new file mode 100644
index 0000000000000000000000000000000000000000..16623b6792154ce6a5fc31db95fb54defc4ba77d
Binary files /dev/null and b/public/vis_workshop/img/Deutschland3D.JPG differ
diff --git a/public/vis_workshop/img/StreamlinesMultipart.png b/public/vis_workshop/img/StreamlinesMultipart.png
new file mode 100644
index 0000000000000000000000000000000000000000..068a15c5d7faacb66b628cacb240f08f92c77baa
Binary files /dev/null and b/public/vis_workshop/img/StreamlinesMultipart.png differ
diff --git a/public/vis_workshop/img/architecture.JPG b/public/vis_workshop/img/architecture.JPG
new file mode 100644
index 0000000000000000000000000000000000000000..d5d15fcaf7b044a9d89c861c740f58bfaedb32d4
Binary files /dev/null and b/public/vis_workshop/img/architecture.JPG differ
diff --git a/public/vis_workshop/img/logo.jpg b/public/vis_workshop/img/logo.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..bd8c86fab2f655d74d20dac9b2defbccd0ba2d3a
Binary files /dev/null and b/public/vis_workshop/img/logo.jpg differ
diff --git a/public/vis_workshop/index.html b/public/vis_workshop/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..e3e192af975b863f6b8009105b0cc47baa616d7b
--- /dev/null
+++ b/public/vis_workshop/index.html
@@ -0,0 +1,232 @@
+<!doctype html>
+<html lang="en">
+
+<head>
+    <!-- Required meta tags -->
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+
+    <!-- Bootstrap CSS -->
+    <link rel="stylesheet" href="source/bootstrap.min.css">
+    <link rel="stylesheet" href="index.css">
+    <link rel="icon" 
+      type="image/ico" 
+      href="favicon.ico">
+    <title>Web-based Visualization of the 3D City Models</title>
+    <style>
+        table {
+            border: 0px;
+            padding: 0px;
+            margin: 0px;
+            border-collapse: collapse;
+        }
+
+        td {
+            border-right: 1px solid black;
+            padding: 2px 2px 5px 2px;
+            margin: 0px;
+        }
+
+        th {
+            border-bottom: 1px solid black;
+            padding: 5px;
+            margin: 0px;
+        }
+
+        tr {
+            padding: 0px;
+            margin: 0px;
+        }
+    </style>
+</head>
+
+<body>
+    <div class="section topperStyle">
+        <!-- <a href="https://www.hft-stuttgart.de"><img src="HFT_logo.jpg"
+                style='width: 200px;margin-right: 20px;' /></a>
+        <a
+            href="http://www.steinbeis.de/de/experten/steinbeis-unternehmen-und-partner/detail.html?tx_z7suprofiles_detail%5Bprofile%5D=2618&cHash=db7d30240e803db2f04ccfd0425eb374"><img
+                src="https://www.hft-stuttgart.de/Forschung/Transfer/Steinbeislogo1.gif" /></a>
+        <br> The University of Applied Sciences Stuttgart
+        <h1>Examples of our projects and applications</h1> -->
+        <div class="row">
+            <div class="col">
+                <h1>Creating Interactive 3D Web Maps from 3D City Models with CesiumJS</h1>
+                <h6>by <a href="https://www.hft-stuttgart.de/p/thunyathep-santhanavanich">Joe T.S.</a></h6>
+            </div>
+            <div class="col-md-auto">
+                <!-- <a href="https://www.hft-stuttgart.de"><img src="HFT_logo.jpg"
+                        style='width: 200px;margin-right: 20px;' /></a> -->
+                University of Applied Science Stuttgart
+            </div>
+        </div>
+    </div>
+    <div style="margin:20px; padding:30px">
+        <h1>Introduction</h1>
+        <p>The recent technology of virtual globe-based 3D visualization is a unique opportunity to facilitate advanced
+            analysis and visualization tasks in a variety of application domains such as urban planning, indoor/outdoor
+            pedestrian navigation, environmental simulations, cultural heritage, or facility management. One core data
+            which make this concept come true is the development of the CityGML models by Open Geospatial Consortium
+            (OGC — https://www.ogc.org/). CityGML is the global data model schema for describing 3D
+            geo-spatially-enabled urban models. There are more and more cities that provide open-source CityGML models
+            publicly.</p>
+
+        <img src="img/6.JPG" alt="" style="width: 800px;">
+        <br>(An Expected Output from This Workshop — 3D Web App with 3D Semantic Building Models in Den Haag Area)
+        <br>
+        <hr>
+        <h3>Architecture and Workflow</h3>
+        <img src="img/architecture.JPG" alt="" style="width: 600px;"><br>
+        The overall system architecture of the 3D web-based app is shown in the figure above. It includes four main
+        components: CityGML dataset, 3D Tiles dataset, Web server, and Users.
+        <br> <b>So, let’s get started and create each component together</b> <br>
+        <hr>
+        <h3>Step 1: Preparing 3D City Models</h3>
+        <p>In this step, we will download the 3D city models in CityGML format. Then, convert the models to 3D Tiles
+            format for optimizing the 3D web visualization. In this article, I picked the 3D city models from Den Haag
+            area as it is a compact model. Of course, you are free to explore this method with any CityGML datasets.</p>
+        <li> Download the CityGML dataset from
+        <li style="list-style-type:none">
+            <ul>
+                <li>
+                    Den Haag (NL) 3D building model Dataset: <a
+                        href="https://denhaag.dataplatform.nl/#/data/36049d1a-4a0f-4c5d-8adb-21dbfb7252f9"
+                        target="_blank">https://denhaag.dataplatform.nl/#/data/36049d1a-4a0f-4c5d-8adb-21dbfb7252f9</a>
+                </li>
+                <li>
+                    Nordrhein-westfalen (Germany) 3D building model Dataset: <a
+                        href="https://www.opengeodata.nrw.de/produkte/geobasis/3dg/lod2_gml/"
+                        target="_blank">https://www.opengeodata.nrw.de/produkte/geobasis/3dg/lod2_gml/</a>
+                </li>
+            </ul>
+        </li>
+        </li>
+        <li> Using the FME Workbench to convert the CityGML models to 3D Tiles format. Starting by opening the FME
+            Workbench, Drag and drop all CityGML models to the FME window.<br>
+            <img src="img/1a.JPG" alt="" style="width: 800px;"><br>
+        </li>
+        <li>
+            Select input Format "CityGML" and Workflow option "Single Merged Feature Type".<br>
+            <img src="img/1.JPG" alt="" style="width: 400px;"><br>
+        </li>
+        <li>
+            Click on "Add a new writer" button and select Format "Cesium 3D Tiles"<br>
+            <img src="img/2.JPG" alt="" style="width: 400px;"><br>
+        </li>
+        <li>
+            The workflow should look like following figure. Click Run and then wait until the conversion complete. Then,
+            the final 3D Tile City Models will be in the destination folder you input.<br>
+            <img src="img/3.JPG" alt="" style="width: 600px;"><br>
+
+        </li>
+        <hr>
+        <h3>Step 2: Preparing HTML for CesiumJS</h3>
+        In this step, we will create an HTML web document containing the 3D Web Globe using CesiumJS library. You can
+        use any code Idle or editor. You can create the document with
+        the name you like and copy the following code. Don't forget to specify the URL on line 24 to the target
+        Tileset.json. If you do this for the first time, you can come back after you set up the web server in step
+        three.
+
+        <script src="https://gist.github.com/JoeThunyathep/0a97950f69952ea13759e0f245416604.js"></script>
+
+        <hr>
+        <h3>Step 3: Host the 3D Web App on the Web Server</h3>
+        This steps, we will host the Web App from step 2 and the 3D Tiles city models from step 1 on the web server. You
+        are freely to use any web server of your preferences.
+        <h5>3A: Python web server</h5>
+        <li>Install Python (3.xx)</li>
+        <li>open the CMD (Command Prompt) and check the python version <kbd>python --version</kbd>. If you get an error
+            message, please check your python installation.</li>
+        <li>Start the server by <kbd>python -m http.server 80</kbd> </li>
+
+        <h5>3B: XAMPP (Apache) web server.</h5>
+        (You can get it from <a
+            href="https://www.apachefriends.org/index.html">https://www.apachefriends.org/index.html</a>)
+        <li>Install XAMPP or Apache.</li>
+        <li>Open XAMPP Control Panel and start Apache HTTP web service. <br>Optionally, you can start the Apache
+            manually via <code> [(part to Apache)]\apache\bin\httpd.exe </code>. Or, use Terminal to enter <code>sudo
+                apachectl start</code> and <code>sudo apachectl stop</code> commands to start and stop Apache service.
+            <br>
+            <img src="img/4.JPG" alt="" style="width: 400px;"><br>
+        </li>
+        <li>Place the web document (denHaagApp.html) from step 2 and a folder of 3D Tiles city models from step 1 in the
+            C:\xampp\htdocs directory.<br>
+            <img src="img/5.JPG" alt="" style="width: 800px;"><br>
+        </li>
+        <li>In the html web document, update the URL value to the tileset.json file of your 3D Tiles model in the htdocs
+            folder. For example, if your 3D Tiles directory is at C:\xampp\htdocs\3dtile\tileset.json. You should set
+            the url value to "./3dtile/tileset.json" or "http://localhost/3dtile/tileset.json" as APACHE will serve
+            everything in the htdocs directory relatively to "http://localhost".
+        </li>
+        <hr>
+        <h3>Step 4: Test the 3D Web App</h3>
+
+        Finally, you can access your 3D web app visualizing 3D city model on your web browser.<br>
+        <img src="img/6.JPG" alt="" style="width: 800px;"><br>
+
+
+        <hr>
+        <h2>Overview of the software used</h2>
+        <ul>
+            <li><a href="https://cesiumjs.org/downloads/">CesiumJS</a> (Register for the token)</li>
+            <li>Web Server: Python 3 HTTP server or 
+                &nbsp;<a href="https://httpd.apache.org/">Apache HTTP Server</a>&nbsp;, is also in&nbsp;<a
+                    href="https://www.apachefriends.org/de/index.html">XAMPP</a>&nbsp;included</li>
+            <li>Web browser:
+                Google Chrome or &nbsp;<a href="https://www.mozilla.org/de/firefox/new/">Firefox</a></li>
+            <li>FME Workbench 2021 <a href="https://www.safe.com/free-fme-licenses/students/">Student License</a> </li>
+        </ul>
+        <hr>
+        <h2>Other Example Use Cases</h2>
+        <!-- <div class="card" style="width: 25rem;">
+            <img class="card-img-top" src="img/StreamlinesMultipart.png" alt="Card image cap">
+            <div class="card-body">
+                <h5 class="card-title">Wind Simulation Platform</h5>
+                <p class="card-text">in the Cesium 3D Web Application</p>
+                <a href="https://transfer.hft-stuttgart.de/pages/urbanvis/index.html" class="btn btn-primary">Go</a>
+            </div>
+        </div>
+
+        <div class="card" style="width: 25rem;">
+            <img class="card-img-top" src="img/Deutschland3D.JPG" alt="Card image cap">
+            <div class="card-body">
+                <h5 class="card-title">Deutschland in 3D</h5>
+                <p class="card-text">3D Web Application Visualizing German Cities</p>
+                <a href="https://deutschland.virtualcitymap.de/#/" class="btn btn-primary">Go</a>
+            </div>
+        </div> -->
+
+        <li><a href="https://transfer.hft-stuttgart.de/pages/urbanvis/index.html">Wind Simulation Platform</a> in the
+            Cesium 3D Web Application</li>
+        <li><a href="https://steinbeis-3dps.eu/3DGeoVolumes/">3D Visualization Server</a> for hosting 3D building models
+            created by the 3D GeoVolumes API (3D Container API)Specification</li>
+        <li><a href="https://steinbeis-3dps.eu/geoportal_3diot/#/">OGC 3D IoT Pilot - Sejong, South Korea</a> with air
+            quality sensor data (SensorThings API)</li>
+        <li><a href="https://deutschland.virtualcitymap.de/#/">Deutschland in 3D</a> 3D Web Application Visualizing
+            German Cities</li>
+        <li>Explore other <a href="https://3d.bk.tudelft.nl/opendata/opencities/">CityGML Datasets</a></li>
+
+        <hr>
+        <h2>Copyright</h2>
+        <p>The texts and images provided in the blog are under the&nbsp;<a
+                href="https://creativecommons.org/licenses/by/3.0/de/">CC BY 3.0 DE</a>&nbsp;license.</p>
+        <h2>Author</h2>
+        <b>Thunyathep Santhanavanich (JOE)</b> PhD candidate<br>
+        Faculty of Geomatics, Computer Science and Mathematics, <br>University of Applied Sciences Stuttgart,
+        Schellingstr. 24, D-70174 Stuttgart<br>
+        <a href="mailto:thunyathep.santhanavanich@hft-stuttgart.de">thunyathep.santhanavanich@hft-stuttgart.de</a>
+    </div>
+
+
+    <!-- Optional JavaScript -->
+    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
+    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"
+        integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous">
+    </script>
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"
+        integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous">
+    </script>
+    <script src="source/bootstrap.min.js"></script>
+</body>
+
+</html>
\ No newline at end of file