diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue
new file mode 100644
index 0000000000000000000000000000000000000000..796ccb4bd1de8ad92045c3d40dbba50522f05ef3
--- /dev/null
+++ b/src/pages/Settings.vue
@@ -0,0 +1,58 @@
+<template lang='pug'>
+.q-pa-md.row.justify-center.full-width
+  div(style='max-width: 1000px')
+    q-title.text-h4 Settings
+    q-list(bordered, padding)
+      q-item-label(header) User Controls
+      q-item(clickable, v-ripple)
+        q-item-section
+          q-item-label Password
+          q-item-label(caption) Change your Password
+      q-separator(spaced)
+      q-item-label(header) General
+      q-item(tag='label', v-ripple)
+        q-item-section(side, top)
+          q-checkbox(v-model='check1')
+        q-item-section
+          q-item-label Notifications
+          q-item-label(caption) Notify me about updates
+      q-item(tag='label', v-ripple)
+        q-item-section(side, top)
+          q-checkbox(v-model='check2')
+        q-item-section
+          q-item-label Dark Mode
+          q-item-label(caption) Turn on Darkmode
+      q-separator(spaced)
+        q-item-label(header) Notifications
+        q-item(tag='label', v-ripple)
+        q-item-section
+          q-item-label Battery too low
+        q-item-section(side)
+          q-toggle(color='blue', v-model='notif1', val='battery')
+      q-item(tag='label', v-ripple)
+        q-item-section
+          q-item-label Friend request
+          q-item-label(caption) Allow notification
+        q-item-section(side, top)
+          q-toggle(color='green', v-model='notif2', val='friend')
+      q-separator(spaced)
+      q-item-label(header) Other settings
+      q-item
+        q-item-section(side)
+          q-icon(color='deep-orange', name='brightness_medium')
+        q-item-section
+          q-slider(v-model='brightness', :min='0', :max='10', label, color='deep-orange')
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      check1: true,
+      check2: false,
+      notif2: true,
+      brightness: 3
+    }
+  }
+}
+</script>
\ No newline at end of file
diff --git a/src/pages/UserInfo.vue b/src/pages/UserInfo.vue
new file mode 100644
index 0000000000000000000000000000000000000000..cf7bbc565e97dd91289852583e5d6d4bae22fbd7
--- /dev/null
+++ b/src/pages/UserInfo.vue
@@ -0,0 +1,60 @@
+<template lang='pug'>
+.q-pa-lg(style='max-width: 1024px')
+  .row.justify-center.q-pb-md
+    q-btn.bg-grey-2.fixed-top-left.q-ma-sm(@click='$router.go(-1)', icon='arrow_back', label='Back')
+    q-avatar(size='9em')
+      img(
+        src='https://avataaars.io/?avatarStyle=Circle&topType=Eyepatch&facialHairType=Blank&clotheType=ShirtVNeck&clotheColor=Pink&eyeType=Squint&eyebrowType=AngryNatural&mouthType=Default&skinColor=Light'
+      )
+  q-input.q-pb-md(v-model='name', label='Full Name', stack-label, :readonly='isEditing')
+  q-input.q-pb-md(v-model='username', label='Username', stack-label, :readonly='isEditing')
+  q-input.q-pb-md(v-model='password', label='Password', stack-label, :readonly='isEditing')
+  q-input.q-pb-md(v-model='email', label='Email', stack-label, :readonly='isEditing')
+  q-input.q-pb-md(v-model='phone', label='Phone Number', stack-label, :readonly='isEditing')
+  q-input.q-pb-lg(v-model='date', mask='date', :rules='["date"]', label='Date of Birth', :readonly='isEditing')
+    template(v-slot:append)
+      q-icon.cursor-pointer(name='event')
+        q-menu
+          q-date(v-model='date', :disable='isEditing')
+  .text-subtitle1.text-grey-9.q-pb-sm Gender:
+    q-radio.q-pr-sm.q-ml-md(v-model='gender', val='male', label='Male', color='cyan', :disable='isEditing')
+    q-radio.q-pr-sm(v-model='gender', val='female', label='Female', color='pink', :disable='isEditing')
+    q-radio.q-pr-sm(v-model='gender', val='other', label='Other', color='accent', :disable='isEditing')
+  q-input.q-pb-xl(
+    v-model='description',
+    label='Description',
+    stack-label='',
+    autogrow='',
+    :readonly='editing ? false : true'
+  )
+  div
+    q-btn(@click='editing = !editing', color='blue', icon='mode_edit', label='Edit')
+    q-btn.float-right(icon='save', color='green', label='save')
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      name: 'Eric Sauce',
+      username: 'Er1csauce',
+      password: 'Er1csauce14',
+      email: 'ek00722@surrey.ac.uk',
+      phone: '0123456789',
+      date: '2019/02/01',
+      gender: 'Male',
+      description: 'Very hot lad',
+      editing: false
+    }
+  },
+
+  computed: {
+    isEditing() {
+      return this.editing ? false : true
+    }
+  }
+}
+</script>
+
+<style>
+</style>
\ No newline at end of file
diff --git a/src/router/routes.js b/src/router/routes.js
index 39ab736adba90e511f75900ac6c90fdd0e1aae7c..252ff130d06e9348ea17ce9a89f705e3bf0ced7f 100644
--- a/src/router/routes.js
+++ b/src/router/routes.js
@@ -16,6 +16,7 @@ const routes = [
   },
   { path: '/auth', component: () => import( 'pages/Auth.vue')},
   { path: '/userinfo', component: () => import( 'pages/UserInfo.vue')},
+  { path: '/settings', component: () => import( 'pages/Settings.vue')},
   // Always leave this as last one,
   // but you can also remove it
   {