diff --git a/frontend/src/components/Connexion.vue b/frontend/src/components/Connexion.vue
new file mode 100644
index 0000000000000000000000000000000000000000..491cd7a76164bf3705a5d0c15cc0abde2c34dcd5
--- /dev/null
+++ b/frontend/src/components/Connexion.vue
@@ -0,0 +1,83 @@
+<template>
+  <h1 class="add-user-title">Connexion</h1>
+  <div class="add-user-form-container">
+    <form ref="addUserForm">
+      <input
+        class="add-user-input"
+        v-model="user.email"
+        type="email"
+        placeholder="Email"
+        required
+      />
+      <input
+        class="add-user-input"
+        v-model="user.firstName"
+        placeholder="Password"
+      />
+    </form>
+    <button class="add-user-button" @click="addUser()">Connexion</button>
+    <div v-if="userCreationError">{{ userCreationError }}</div>
+  </div>
+</template>
+
+<script>
+import axios from "axios";
+
+export default {
+  name: "AddUser",
+  emits: ["userAdded"],
+  data: function () {
+    return {
+      user: {
+        email: "",
+        firstName: "",
+        lastName: "",
+      },
+      userCreationError: "",
+    };
+  },
+  methods: {
+    addUser: function () {
+      if (!this.$refs.addUserForm.checkValidity()) {
+        this.$refs.addUserForm.reportValidity();
+        return;
+      }
+
+      axios
+        .post(`${process.env.VUE_APP_BACKEND_BASE_URL}/users/new`, this.user)
+        .then(() => {
+          this.$emit("userAdded");
+          this.user = {
+            email: "",
+            firstName: "",
+            lastName: "",
+          };
+        })
+        .catch((error) => {
+          this.userCreationError = "An error occured while creating new user.";
+          console.error(error);
+        });
+    },
+  },
+};
+</script>
+<style scoped>
+.add-user-title {
+  margin-bottom: 10px;
+}
+
+.add-user-form-container {
+  display: flex;
+  margin-bottom: 20px;
+}
+
+.add-user-input {
+  margin-right: 10px;
+  padding: 5px;
+}
+
+.add-user-button {
+  cursor: pointer;
+  padding: 5px;
+}
+</style>
diff --git a/frontend/src/views/Connexion.vue b/frontend/src/views/Connexion.vue
index f4f1d38234073c38caabda12842c9d1085606442..36924ebdac795746b1838a64bbfb7cacc61e328a 100644
--- a/frontend/src/views/Connexion.vue
+++ b/frontend/src/views/Connexion.vue
@@ -1,27 +1,39 @@
 <template>
-  <h1>This is a Connexion example</h1>
-  <div class="Connexion-value">Connexion value is: {{ Connexion }}</div>
-  <button @click="increment()">Increment</button>
+  <AddUser @userAdded="fetchUsers()" />
+  <div v-if="usersLoadingError">{{ usersLoadingError }}</div>
 </template>
 
 <script>
+// @ is an alias to /src
+import AddUser from "@/components/Connexion.vue";
+import axios from "axios";
+
 export default {
-  name: "Connexion",
+  name: "Users",
+  components: {
+    AddUser,
+  },
   data: function () {
     return {
-      Connexion: 0,
+      users: [],
+      usersLoadingError: "",
     };
   },
   methods: {
-    increment: function () {
-      this.Connexion++;
+    fetchUsers: function () {
+      axios
+        .get(`${process.env.VUE_APP_BACKEND_BASE_URL}/users`)
+        .then((response) => {
+          this.users = response.data.users;
+        })
+        .catch((error) => {
+          this.usersLoadingError = "An error occured while fetching users.";
+          console.error(error);
+        });
     },
   },
+  mounted: function () {
+    this.fetchUsers();
+  },
 };
 </script>
-
-<style scoped>
-.Connexion-value {
-  margin-bottom: 5px;
-}
-</style>