diff --git a/viz-dev-frontend/src/components/Card.vue b/viz-dev-frontend/src/components/Card.vue
new file mode 100644
index 0000000000000000000000000000000000000000..ada6c8e2f21c315df20852d1403a71a6cb388691
--- /dev/null
+++ b/viz-dev-frontend/src/components/Card.vue
@@ -0,0 +1,40 @@
+<template>
+  <div class="card">
+    <img v-if="link" v-bind:src="require(`@/assets/${link}`)" class="logo"/>
+    <div class="container">
+      <h4><b>{{ name }}</b></h4>
+      <p>{{ desc }}</p>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'Card',
+  props: ['link', 'name', 'desc'],
+};
+</script>
+
+<style scoped>
+.logo {
+  max-height: 50px;
+  max-width: 100%;
+}
+
+.card {
+  box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2);
+  transition: 0.3s;
+  height: 100%;
+  width: 200px;
+  margin: 5px 10px;
+  padding: 10px;
+  cursor: pointer;
+  z-index: 0;
+}
+
+.card:hover {
+  box-shadow: 0 8px 16px 0 rgba(0,0,0,0.5);
+  transform: scale(1.1);
+  z-index: 100;
+}
+</style>
diff --git a/viz-dev-frontend/src/components/Cards.vue b/viz-dev-frontend/src/components/Cards.vue
deleted file mode 100644
index 4270b4cb4091db93366d43deb03e143317941237..0000000000000000000000000000000000000000
--- a/viz-dev-frontend/src/components/Cards.vue
+++ /dev/null
@@ -1,106 +0,0 @@
-<template>
-  <div class="flex-row flex-wrap container__card">
-    <div v-for="picture in pictures" v-bind:key="picture.link">
-      <div class="cards">
-        <img v-bind:src="require('@/assets/' + picture.link)" :class="picture.logo"/>
-        <div class="container">
-          <h4><b>{{ picture.name }}</b></h4>
-          <p> {{ picture.desc }} </p>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  name: 'Cards',
-  data() {
-    return {
-      pictures: [
-        {
-          name: 'Play Button', link: 'button_play.png', desc: 'Menampilkan data tahun ke tahun dalam animasi', logo: '',
-        },
-        {
-          name: 'Color', link: 'color.png', desc: 'Mengubah warna bulatan berdasarkan range nilai', logo: 'logo__follow--btnPlay',
-        },
-        {
-          name: 'Sumbu X', link: 'dropdown_x.png', desc: 'Mengubah variabel sumbu X', logo: 'logo__dropdown--x',
-        },
-        {
-          name: 'Sumbu Y', link: 'dropdown_y.png', desc: 'Mengubah variabel sumbu Y', logo: '',
-        },
-        {
-          name: 'Expand', link: 'expand.png', desc: 'Membuat grafik ditampilkan full screen', logo: 'logo__follow--btnPlay',
-        },
-        {
-          name: 'Find', link: 'find.png', desc: 'Memilih kota-kota secara spesifik', logo: 'logo__follow--btnPlay',
-        },
-        {
-          name: 'Option', link: 'option.png', desc: 'Mengatur tampilan grafik', logo: 'logo__follow--btnPlay',
-        },
-        {
-          name: 'Present', link: 'present.png', desc: 'Menyajikan grafik dalam presentasi bersih', logo: 'logo__follow--btnPlay',
-        },
-        {
-          name: 'Timeline', link: 'timeline.png', desc: 'Tahun-tahun pada data untuk ditampilkan', logo: 'logo__timeline',
-        },
-        {
-          name: 'Zoom', link: 'zoom.png', desc: 'Zoom in atau zoom out pada grafik', logo: 'logo__follow--btnPlay',
-        },
-      ],
-    };
-  },
-};
-</script>
-
-<style scoped>
-.logo__follow--btnPlay {
-  width: 45px;
-  height: 43px;
-}
-
-.logo__dropdown--x {
-  width: 200px;
-  height: 26px;
-}
-
-.logo__timeline {
-  width: 200px;
-  height: 29px;
-}
-
-.flex-row {
-  display: flex;
-  flex-direction: row;
-}
-
-.flex-wrap {
-  flex-wrap: wrap;
-}
-
-.container__card {
-  text-align: center;
-  align-items: center;
-  justify-content: center;
-}
-
-.cards {
-  box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2);
-  transition: 0.3s;
-  width: 200px;
-  height: 165px;
-  margin: 5px 10px;
-  padding: 5px;
-  cursor: pointer;
-}
-
-.cards:hover {
-  box-shadow: 0 8px 16px 0 rgba(0,0,0,0.5);
-  transform: scale(1.1);
-}
-
-.container {
-  padding: 2px 16px;
-}
-</style>
diff --git a/viz-dev-frontend/src/components/ChartLegend.vue b/viz-dev-frontend/src/components/ChartLegend.vue
new file mode 100644
index 0000000000000000000000000000000000000000..866806e481a2b82afa8d63e8c56d3f34e126859c
--- /dev/null
+++ b/viz-dev-frontend/src/components/ChartLegend.vue
@@ -0,0 +1,71 @@
+<template>
+  <div class="flex-row flex-wrap container__card">
+    <div v-for="propsCard in propsCards" v-bind:key="propsCard.name" class="card">
+      <Card v-bind="propsCard" />
+    </div>
+  </div>
+</template>
+
+<script>
+import Card from '@/components/Card.vue';
+
+export default {
+  name: 'ChartLegend',
+  components: {
+    Card,
+  },
+  data() {
+    return {
+      propsCards: [
+        {
+          name: 'Play Button', link: 'button_play.png', desc: 'Menampilkan data tahun ke tahun dalam animasi',
+        },
+        {
+          name: 'Color', link: 'color.png', desc: 'Mengubah warna bulatan berdasarkan range nilai',
+        },
+        {
+          name: 'Sumbu X', link: 'dropdown_x.png', desc: 'Mengubah variabel sumbu X',
+        },
+        {
+          name: 'Sumbu Y', link: 'dropdown_y.png', desc: 'Mengubah variabel sumbu Y',
+        },
+        {
+          name: 'Expand', link: 'expand.png', desc: 'Membuat grafik ditampilkan full screen',
+        },
+        {
+          name: 'Find', link: 'find.png', desc: 'Memilih kota-kota secara spesifik',
+        },
+        {
+          name: 'Option', link: 'option.png', desc: 'Mengatur tampilan grafik',
+        },
+        {
+          name: 'Present', link: 'present.png', desc: 'Menyajikan grafik dalam presentasi bersih',
+        },
+        {
+          name: 'Timeline', link: 'timeline.png', desc: 'Tahun-tahun pada data untuk ditampilkan',
+        },
+        {
+          name: 'Zoom', link: 'zoom.png', desc: 'Zoom in atau zoom out pada grafik',
+        },
+      ],
+    };
+  },
+};
+</script>
+
+<style scoped>
+.flex-row {
+  display: flex;
+  flex-direction: row;
+}
+
+.flex-wrap {
+  flex-wrap: wrap;
+}
+
+.container__card {
+  text-align: center;
+  align-items: stretch;
+  justify-content: center;
+}
+</style>
diff --git a/viz-dev-frontend/src/components/SeriesDescription.vue b/viz-dev-frontend/src/components/SeriesDescription.vue
new file mode 100644
index 0000000000000000000000000000000000000000..74c1418f99b4ec1983f9c166a57881c4f99375e0
--- /dev/null
+++ b/viz-dev-frontend/src/components/SeriesDescription.vue
@@ -0,0 +1,52 @@
+<template>
+  <div class="flex-row flex-wrap container__card">
+    <div v-for="propsCard in propsCards" v-bind:key="propsCard.name">
+      <Card v-bind="propsCard" />
+    </div>
+  </div>
+</template>
+
+<script>
+import Card from '@/components/Card.vue';
+import api from '@/api';
+
+export default {
+  name: 'SeriesDescription',
+  components: {
+    Card,
+  },
+  data() {
+    return {
+      propsCards: [],
+    };
+  },
+  created() {
+    api.get('/series').then((response) => {
+      const series = response.data;
+      for (let i = 0; i < series.length; i += 1) {
+        this.propsCards.push({
+          name: series[i].name,
+          desc: series[i].description,
+        });
+      }
+    });
+  },
+};
+</script>
+
+<style scoped>
+.flex-row {
+  display: flex;
+  flex-direction: row;
+}
+
+.flex-wrap {
+  flex-wrap: wrap;
+}
+
+.container__card {
+  text-align: center;
+  align-items: stretch;
+  justify-content: center;
+}
+</style>
diff --git a/viz-dev-frontend/src/views/Home.vue b/viz-dev-frontend/src/views/Home.vue
index 55cdc920289b9f22214f1001eadf2807abc7818d..ed48a9425cf0da942a0c7437f46fa1897d4744ab 100644
--- a/viz-dev-frontend/src/views/Home.vue
+++ b/viz-dev-frontend/src/views/Home.vue
@@ -2,23 +2,39 @@
   <div>
     <Navbar></Navbar>
     <Chart></Chart>
-    <Cards></Cards>
+    <div class="block">
+      <h3>Deskripsi</h3>
+      <SeriesDescription></SeriesDescription>
+    </div>
+    <div class="block">
+      <h3>Legenda</h3>
+      <ChartLegend></ChartLegend>
+    </div>
   </div>
 </template>
 
 <script>
+import ChartLegend from '@/components/ChartLegend.vue';
+import SeriesDescription from '@/components/SeriesDescription.vue';
 import Chart from '@/components/Chart.vue';
-import Cards from '@/components/Cards.vue';
 
 export default {
   name: 'Home',
   components: {
     Chart,
-    Cards,
+    ChartLegend,
+    SeriesDescription,
   },
 };
 </script>
 
 <style scoped>
+h3 {
+  text-align: center;
+  margin: 12px 0;
+}
 
+.block {
+  margin-bottom: 50px;
+}
 </style>