diff --git a/FrontendFolder/switch-room/src/App.vue b/FrontendFolder/switch-room/src/App.vue
index d79ac650bb6d44f13b4efee3ebf71bfd23762286..a732bafee8722146197080e5e4898bdaacf18a5e 100644
--- a/FrontendFolder/switch-room/src/App.vue
+++ b/FrontendFolder/switch-room/src/App.vue
@@ -1,6 +1,11 @@
-<script setup lang="ts"></script>
+<script setup lang="ts">
+import AppFooter from "@/components/AppFooter.vue";
+import AppHeader from "@/components/AppHeader.vue";
+</script>
 <template>
+  <app-header></app-header>
   <router-view></router-view>
+  <app-footer></app-footer>
 </template>
 
 <style></style>
diff --git a/FrontendFolder/switch-room/src/components/AppHeader.vue b/FrontendFolder/switch-room/src/components/AppHeader.vue
index 1727560fbed815825e7f31e58a160f1504a52bc0..8b2491eba320e0e17721795730c0c5c2634648b3 100644
--- a/FrontendFolder/switch-room/src/components/AppHeader.vue
+++ b/FrontendFolder/switch-room/src/components/AppHeader.vue
@@ -1,73 +1,20 @@
 <template>
-  <header>
-    <div class="overlay">
-      <h1>Switch Room</h1>
-      <h3>Reasons for Choosing US</h3>
-      <p>
-        Wanna to pay for hotel for traveling? Switch Room provide the local
-        rooms for you. No need to pay rental. You can switch your living home
-        with other people who want to travel to your place.
-      </p>
-      <br />
-      <button>READ MORE</button>
-    </div>
-  </header>
+  <div class="h-6" />
+  <el-menu
+    :default-active="activeIndex2"
+    class="el-menu-demo"
+    mode="horizontal"
+    background-color="#545c64"
+    text-color="#fff"
+    active-text-color="#ffd04b"
+    @select="handleSelect"
+  >
+    <el-menu-item index="1">Main</el-menu-item>
+    <el-menu-item index="2">Wish List</el-menu-item>
+    <el-menu-item index="3">Flight Ticket</el-menu-item>
+  </el-menu>
 </template>
 
 <script lang="ts"></script>
 
-<style scoped>
-* {
-  padding: 0;
-  margin: 0;
-  box-sizing: border-box;
-}
-body {
-  height: 900px;
-}
-header {
-  background: url("@/assets/mainPage/headerPhoto.jpeg");
-  text-align: center;
-  width: 100%;
-  height: auto;
-  background-size: cover;
-  background-attachment: fixed;
-  position: relative;
-  overflow: hidden;
-  border-radius: 0 0 85% 85% / 30%;
-}
-header .overlay {
-  width: 100%;
-  height: 100%;
-  padding: 50px;
-  color: #fff;
-  text-shadow: 1px 1px 1px #333;
-  background-image: linear-gradient(135deg, #b3d1ff 10%, #fd5e086b 100%);
-}
-
-h1 {
-  font-family: "Dancing Script", cursive;
-  font-size: 80px;
-  margin-bottom: 30px;
-}
-
-h3,
-p {
-  font-family: "Open Sans", sans-serif;
-  margin-bottom: 30px;
-}
-
-button {
-  border: none;
-  outline: none;
-  padding: 10px 20px;
-  border-radius: 50px;
-  color: #333;
-  background: #fff;
-  margin-bottom: 50px;
-  box-shadow: 0 3px 20px 0 #0000003b;
-}
-button:hover {
-  cursor: pointer;
-}
-</style>
+<style scoped></style>
diff --git a/FrontendFolder/switch-room/src/components/MainPage.vue b/FrontendFolder/switch-room/src/components/MainPage.vue
new file mode 100644
index 0000000000000000000000000000000000000000..5f03d384905eb104392374b7b5b1e551e76e1cb1
--- /dev/null
+++ b/FrontendFolder/switch-room/src/components/MainPage.vue
@@ -0,0 +1,197 @@
+<template>
+  <div class="content">
+    <div class="leftPart">
+      <div class="overlay">
+        <h1>Switch Room</h1>
+        <h3>Reasons for Choosing US</h3>
+        <p>
+          Wanna to pay for hotel for traveling? Switch Room provide the local
+          rooms for you. No need to pay rental. You can switch your living home
+          with other people who want to travel to your place.
+        </p>
+        <br />
+        <router-link to="/login">
+          <button>READ MORE</button>
+        </router-link>
+      </div>
+    </div>
+    <div id="card">
+      <div id="card-content">
+        <div id="card-title">
+          <h2>LOGIN</h2>
+          <div class="underline-title"></div>
+        </div>
+        <form method="post" class="form">
+          <label for="user-email" style="padding-top: 13px">
+            &nbsp;Username
+          </label>
+          <input
+            id="user-email"
+            class="form-content"
+            type="text"
+            name="username"
+            autocomplete="on"
+            required
+          />
+          <div class="form-border"></div>
+          <label for="user-password" style="padding-top: 22px"
+            >&nbsp;Password
+          </label>
+          <input
+            id="user-password"
+            class="form-content"
+            type="password"
+            name="password"
+            required
+          />
+          <div class="form-border"></div>
+          <a href="#">
+            <legend id="forgot-pass">Forgot password?</legend>
+          </a>
+          <input id="submit-btn" type="submit" name="submit" value="LOGIN" />
+          <router-link to="/register">
+            <div id="signup">Don't have account yet?</div>
+          </router-link>
+        </form>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts"></script>
+
+<style scoped>
+.content {
+  display: flex;
+}
+* {
+  padding: 0;
+  margin: 0;
+  box-sizing: border-box;
+}
+body {
+  height: 900px;
+}
+.leftPart {
+  background: url("@/assets/mainPage/headerPhoto.jpeg");
+  text-align: center;
+  width: 70%;
+  height: auto;
+  background-size: cover;
+  background-attachment: fixed;
+  position: relative;
+  overflow: hidden;
+  border-radius: 0 0 85% 85% / 30%;
+}
+.leftPart .overlay {
+  width: 100%;
+  height: 100%;
+  padding: 50px;
+  color: #fff;
+  text-shadow: 1px 1px 1px #333;
+  background-image: linear-gradient(135deg, #b3d1ff 10%, #fd5e086b 100%);
+}
+
+h1 {
+  font-family: "Dancing Script", cursive;
+  font-size: 80px;
+  margin-bottom: 30px;
+}
+
+h3,
+p {
+  font-family: "Open Sans", sans-serif;
+  margin-bottom: 30px;
+}
+
+button {
+  border: none;
+  outline: none;
+  padding: 10px 20px;
+  border-radius: 50px;
+  color: #333;
+  background: #fff;
+  margin-bottom: 50px;
+  box-shadow: 0 3px 20px 0 #0000003b;
+}
+button:hover {
+  cursor: pointer;
+}
+a {
+  text-decoration: none;
+}
+label {
+  font-family: "Raleway", sans-serif;
+  font-size: 11pt;
+}
+#forgot-pass {
+  color: #2dbd6e;
+  font-family: "Raleway", sans-serif;
+  font-size: 10pt;
+  margin-top: 3px;
+  text-align: right;
+}
+#card {
+  background: #fbfbfb;
+  border-radius: 8px;
+  box-shadow: 1px 2px 8px rgba(0, 0, 0, 0.65);
+  height: 410px;
+  width: 30%;
+}
+#card-content {
+  padding: 12px 44px;
+}
+#card-title {
+  font-family: "Raleway Thin", sans-serif;
+  letter-spacing: 4px;
+  padding-bottom: 23px;
+  padding-top: 13px;
+  text-align: center;
+}
+#signup {
+  color: #2dbd6e;
+  font-family: "Raleway", sans-serif;
+  font-size: 10pt;
+  margin-top: 16px;
+  text-align: center;
+}
+#submit-btn {
+  background: -webkit-linear-gradient(right, #a6f77b, #2dbd6e);
+  border: none;
+  border-radius: 21px;
+  box-shadow: 0px 1px 8px #24c64f;
+  cursor: pointer;
+  color: white;
+  font-family: "Raleway SemiBold", sans-serif;
+  height: 42.3px;
+  margin: 0 auto;
+  margin-top: 50px;
+  transition: 0.25s;
+  width: 153px;
+}
+#submit-btn:hover {
+  box-shadow: 0px 1px 18px #24c64f;
+}
+.form {
+  align-items: left;
+  display: flex;
+  flex-direction: column;
+}
+.form-border {
+  background: -webkit-linear-gradient(right, #a6f77b, #2ec06f);
+  height: 1px;
+  width: 100%;
+}
+.form-content {
+  background: #fbfbfb;
+  border: none;
+  outline: none;
+  padding-top: 14px;
+}
+.underline-title {
+  background: -webkit-linear-gradient(right, #a6f77b, #2ec06f);
+  height: 2px;
+  margin: 0rem auto 0 auto;
+  width: 89px;
+}
+</style>
diff --git a/FrontendFolder/switch-room/src/components/RegisterPage.vue b/FrontendFolder/switch-room/src/components/RegisterPage.vue
new file mode 100644
index 0000000000000000000000000000000000000000..881f35b1bdfeea9a125ebef852d86746f0403f81
--- /dev/null
+++ b/FrontendFolder/switch-room/src/components/RegisterPage.vue
@@ -0,0 +1,330 @@
+<template>
+  <div class="form_wrapper">
+    <div class="form_container">
+      <div class="title_container">
+        <h2>Registration</h2>
+        <div class="underline-title"></div>
+      </div>
+      <div class="row clearfix">
+        <div class="">
+          <form method="post" class="form">
+            <!-- Username input -->
+            <label for="user-name" style="padding-top: 13px">
+              &nbsp;Username
+            </label>
+            <input
+              id="user-name"
+              class="form-content"
+              type="text"
+              name="username"
+              autocomplete="on"
+              required
+            />
+            <div class="form-border"></div>
+
+            <!-- Password input -->
+            <label for="user-password" style="padding-top: 13px">
+              &nbsp;Password
+            </label>
+            <input
+              id="user-password"
+              class="form-content"
+              type="password"
+              name="password"
+              required
+            />
+            <div class="form-border"></div>
+
+            <!-- retype Password input -->
+            <label for="user-retypePassword" style="padding-top: 13px">
+              &nbsp;Re-type Password
+            </label>
+            <input
+              id="user-password"
+              class="form-content"
+              type="password"
+              name="retypePassword"
+              required
+            />
+            <div class="form-border"></div>
+
+            <!-- Firstname input -->
+            <label for="user-firstname" style="padding-top: 13px">
+              &nbsp;First Name
+            </label>
+            <input
+              id="user-firstname"
+              class="form-content"
+              type="text"
+              name="firstname"
+              required
+            />
+            <div class="form-border"></div>
+
+            <!-- Lastname input -->
+            <label for="user-lastname" style="padding-top: 13px">
+              &nbsp;Last Name
+            </label>
+            <input
+              id="user-lastname"
+              class="form-content"
+              type="text"
+              name="lastname"
+              required
+            />
+            <div class="form-border"></div>
+
+            <!-- Gender Choose -->
+            <label for="user-gender" style="padding-top: 13px">
+              &nbsp;Gender
+            </label>
+            <div class="mb-2 flex items-center text-sm">
+              <el-radio-group v-model="radio1" class="ml-4">
+                <el-radio label="1" size="large">Male</el-radio>
+                <el-radio label="2" size="large">Female</el-radio>
+              </el-radio-group>
+            </div>
+
+            <!-- terms agreement -->
+            <div>
+              <el-checkbox
+                v-model="checked1"
+                label="I agree with terms and conditions"
+                size="large"
+              />
+            </div>
+            <input id="submit-btn" type="submit" value="Register" />
+          </form>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref } from "vue";
+const radio1 = ref("1");
+const checked1 = ref(false);
+</script>
+
+<style scoped>
+body {
+  font-family: Verdana, Geneva, sans-serif;
+  font-size: 14px;
+  background: #f2f2f2;
+}
+
+.form_wrapper {
+  justify-content: center;
+  align-items: center;
+  display: flex;
+}
+
+.form_container {
+  background: #fbfbfb;
+  border-radius: 8px;
+  box-shadow: 1px 2px 8px rgba(0, 0, 0, 0.65);
+  height: auto;
+  width: 30%;
+  padding: 12px 44px;
+}
+
+.title_container {
+  font-family: "Raleway Thin", sans-serif;
+  letter-spacing: 4px;
+  padding-bottom: 23px;
+  padding-top: 13px;
+  text-align: center;
+}
+
+.form {
+  align-items: left;
+  display: flex;
+  flex-direction: column;
+}
+
+.form-content {
+  background: #fbfbfb;
+  border: none;
+  outline: none;
+  padding-top: 14px;
+}
+
+.form-border {
+  background: -webkit-linear-gradient(right, #a6f77b, #2ec06f);
+  height: 1px;
+  width: 100%;
+}
+
+#submit-btn {
+  background: -webkit-linear-gradient(right, #a6f77b, #2dbd6e);
+  border: none;
+  border-radius: 21px;
+  box-shadow: 0px 1px 8px #24c64f;
+  cursor: pointer;
+  color: white;
+  font-family: "Raleway SemiBold", sans-serif;
+  height: 42.3px;
+  margin: 0 auto;
+  margin-top: 50px;
+  transition: 0.25s;
+  width: 153px;
+}
+#submit-btn:hover {
+  box-shadow: 0px 1px 18px #24c64f;
+}
+
+.underline-title {
+  background: -webkit-linear-gradient(right, #a6f77b, #2ec06f);
+  height: 2px;
+  margin: -1.1rem auto 0 auto;
+  width: 200px;
+}
+
+.input_field radio_option {
+  margin-top: 10px;
+}
+@-webkit-keyframes check {
+  0% {
+    height: 0;
+    width: 0;
+  }
+  25% {
+    height: 0;
+    width: 7px;
+  }
+  50% {
+    height: 20px;
+    width: 7px;
+  }
+}
+
+@keyframes check {
+  0% {
+    height: 0;
+    width: 0;
+  }
+  25% {
+    height: 0;
+    width: 7px;
+  }
+  50% {
+    height: 20px;
+    width: 7px;
+  }
+}
+
+@-webkit-keyframes expand {
+  0% {
+    -webkit-transform: scale3d(1, 0, 1);
+    opacity: 0;
+  }
+  25% {
+    -webkit-transform: scale3d(1, 1.2, 1);
+  }
+  50% {
+    -webkit-transform: scale3d(1, 0.85, 1);
+  }
+  75% {
+    -webkit-transform: scale3d(1, 1.05, 1);
+  }
+  100% {
+    -webkit-transform: scale3d(1, 1, 1);
+    opacity: 1;
+  }
+}
+
+@keyframes expand {
+  0% {
+    -webkit-transform: scale3d(1, 0, 1);
+    transform: scale3d(1, 0, 1);
+    opacity: 0;
+  }
+  25% {
+    -webkit-transform: scale3d(1, 1.2, 1);
+    transform: scale3d(1, 1.2, 1);
+  }
+  50% {
+    -webkit-transform: scale3d(1, 0.85, 1);
+    transform: scale3d(1, 0.85, 1);
+  }
+  75% {
+    -webkit-transform: scale3d(1, 1.05, 1);
+    transform: scale3d(1, 1.05, 1);
+  }
+  100% {
+    -webkit-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+    opacity: 1;
+  }
+}
+
+@-webkit-keyframes bounce {
+  0% {
+    -webkit-transform: translate3d(0, -25px, 0);
+    opacity: 0;
+  }
+  25% {
+    -webkit-transform: translate3d(0, 10px, 0);
+  }
+  50% {
+    -webkit-transform: translate3d(0, -6px, 0);
+  }
+  75% {
+    -webkit-transform: translate3d(0, 2px, 0);
+  }
+  100% {
+    -webkit-transform: translate3d(0, 0, 0);
+    opacity: 1;
+  }
+}
+
+@keyframes bounce {
+  0% {
+    -webkit-transform: translate3d(0, -25px, 0);
+    transform: translate3d(0, -25px, 0);
+    opacity: 0;
+  }
+  25% {
+    -webkit-transform: translate3d(0, 10px, 0);
+    transform: translate3d(0, 10px, 0);
+  }
+  50% {
+    -webkit-transform: translate3d(0, -6px, 0);
+    transform: translate3d(0, -6px, 0);
+  }
+  75% {
+    -webkit-transform: translate3d(0, 2px, 0);
+    transform: translate3d(0, 2px, 0);
+  }
+  100% {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+    opacity: 1;
+  }
+}
+@media (max-width: 600px) {
+  .form_wrapper {
+    .col_half {
+      width: 100%;
+      float: none;
+    }
+  }
+  .bottom_row {
+    .col_half {
+      width: 50%;
+      float: left;
+    }
+  }
+  .form_container {
+    .row {
+      .col_half.last {
+        border-left: none;
+      }
+    }
+  }
+  .remember_me {
+    padding-bottom: 20px;
+  }
+}
+</style>
diff --git a/FrontendFolder/switch-room/src/main.ts b/FrontendFolder/switch-room/src/main.ts
index 5945d532adf5e04b6e008cdcef3de8d36373c85c..d7d29c5051447ec96febc3bc3d79f73c347df6a4 100644
--- a/FrontendFolder/switch-room/src/main.ts
+++ b/FrontendFolder/switch-room/src/main.ts
@@ -1,6 +1,6 @@
 import { createApp } from "vue";
-import ElementPlus from 'element-plus'
-import 'element-plus/dist/index.css'
+import ElementPlus from "element-plus";
+import "element-plus/dist/index.css";
 import App from "./App.vue";
 import router from "./router";
 /* import the fontawesome core */
@@ -33,5 +33,5 @@ library.add(faGithub);
 createApp(App)
   .component("font-awesome-icon", FontAwesomeIcon)
   .use(router)
-    .use(ElementPlus)
+  .use(ElementPlus)
   .mount("#app");
diff --git a/FrontendFolder/switch-room/src/router/index.ts b/FrontendFolder/switch-room/src/router/index.ts
index 7f45b70750d27d72aa533510a00c950c8a01c655..443ca2e90dcc467611bcb7a1770eb783eb45a51e 100644
--- a/FrontendFolder/switch-room/src/router/index.ts
+++ b/FrontendFolder/switch-room/src/router/index.ts
@@ -1,5 +1,6 @@
 import { createRouter, createWebHistory, RouteRecordRaw } from "vue-router";
 import HomeView from "../views/HomeView.vue";
+import RegisterView from "../views/RegisterView.vue";
 
 const routes: Array<RouteRecordRaw> = [
   {
@@ -8,13 +9,9 @@ const routes: Array<RouteRecordRaw> = [
     component: HomeView,
   },
   {
-    path: "/about",
-    name: "about",
-    // route level code-splitting
-    // this generates a separate chunk (about.[hash].js) for this route
-    // which is lazy-loaded when the route is visited.
-    component: () =>
-      import(/* webpackChunkName: "about" */ "../views/AboutView.vue"),
+    path: "/register",
+    name: "register",
+    component: RegisterView,
   },
   {
     path: "/offer-page",
diff --git a/FrontendFolder/switch-room/src/views/HomeView.vue b/FrontendFolder/switch-room/src/views/HomeView.vue
index 4e0530f9f5cf95d6111b3d461cf9f1fa219c8069..44192bdb38701ffe30a9a356cb829e104e1615f9 100644
--- a/FrontendFolder/switch-room/src/views/HomeView.vue
+++ b/FrontendFolder/switch-room/src/views/HomeView.vue
@@ -1,11 +1,9 @@
 <template>
-  <app-header></app-header>
-  <app-footer></app-footer>
+  <main-page></main-page>
   <app-wel></app-wel>
 </template>
 
 <script setup lang="ts">
-import AppHeader from "@/components/AppHeader.vue";
-import AppFooter from "@/components/AppFooter.vue";
+import MainPage from "@/components/MainPage.vue";
 import AppWel from "@/components/HelloWorld.vue";
 </script>
diff --git a/FrontendFolder/switch-room/src/views/RegisterView.vue b/FrontendFolder/switch-room/src/views/RegisterView.vue
new file mode 100644
index 0000000000000000000000000000000000000000..c2130b59341a1cdcdc7c7903ead6a7521cc0206e
--- /dev/null
+++ b/FrontendFolder/switch-room/src/views/RegisterView.vue
@@ -0,0 +1,9 @@
+<template>
+  <register-page></register-page>
+</template>
+
+<script setup lang="ts">
+import RegisterPage from "@/components/RegisterPage.vue";
+</script>
+
+<style scoped></style>