diff --git a/src/App.php b/src/App.php
index 8a8f04470e814d07f1c8fc85e306da03618e6588..0d56323af7c9afec1192811c372170b9f6a28ecd 100644
--- a/src/App.php
+++ b/src/App.php
@@ -6,6 +6,7 @@ use app\Router;
 use app\base\BaseController;
 use app\controllers\LoginController;
 use app\controllers\MainController;
+use app\controllers\RegisterController;
 use app\repositories\UserRepository;
 use app\services\UserService;
 
@@ -26,5 +27,6 @@ class App
     $this->router->addRoute('/', MainController::class);
     $this->router->addRoute('/login', LoginController::class);
     $this->router->addRoute('/logout', LoginController::class);
+    $this->router->addRoute('/register', RegisterController::class);
   }
 }
diff --git a/src/controllers/LoginController.php b/src/controllers/LoginController.php
index e70d9f941655646291f5c2902852c5b24df7c19f..7ca40f431f4b0fd314bf28b6978fda4127ff7e43 100644
--- a/src/controllers/LoginController.php
+++ b/src/controllers/LoginController.php
@@ -27,7 +27,7 @@ class LoginController extends BaseController
       }
     } else if ($uri == "/logout") {
       $this->service->logout();
-      parent::redirect("/login");
+      parent::redirect("/");
     }
   }
   protected function post($urlParams)
diff --git a/src/controllers/RegisterController.php b/src/controllers/RegisterController.php
new file mode 100644
index 0000000000000000000000000000000000000000..57ee1f8680506f52561a1d11d42704ed6d34f708
--- /dev/null
+++ b/src/controllers/RegisterController.php
@@ -0,0 +1,34 @@
+<?php
+
+namespace app\controllers;
+
+use app\base\BaseController;
+use app\Request;
+use app\services\UserService;
+use Exception;
+
+class RegisterController extends BaseController
+{
+  public function __construct()
+  {
+    parent::__construct(UserService::getInstance());
+  }
+
+  protected function get($urlParams)
+  {
+    if (isset($_SESSION['user_id'])) {
+      parent::redirect("/");
+    } else {
+      parent::render($urlParams, "register", "layouts/base");
+    }
+  }
+  protected function post($urlParams)
+  {
+    $username = $_POST['username'];
+    $email = $_POST['email'];
+    $password = $_POST['password'];
+    $confirm_password = $_POST['confirm-password'];
+    $response = $this->service->register($username, $email, $password, $confirm_password);
+    parent::redirect("/login");
+  }
+}
diff --git a/src/services/UserService.php b/src/services/UserService.php
index 237182f009ad4869970782b390a395a18c6f5439..7da39c4977ceb8d51063a2908e341752395a2180 100644
--- a/src/services/UserService.php
+++ b/src/services/UserService.php
@@ -46,8 +46,11 @@ class UserService extends BaseService
       throw new BadRequestException("Password does not match");
     }
 
-    if ($this->isUsernameExist($username) and $this->isEmailExist($email)) {
+    if (!$this->isUsernameExist($username) and !$this->isEmailExist($email)) {
       $user = new UserModel();
+      if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
+        throw new BadRequestException("Email is not valid!");
+      }
       $user->set('email', $email)->set('username', $username)->set('password', password_hash($password, PASSWORD_DEFAULT))->set('role', 'User');
 
       $id = $this->repository->insert($user, array(
@@ -94,6 +97,7 @@ class UserService extends BaseService
 
     $_SESSION["user_id"] = $user->get('user_id');
     $_SESSION["role"] = $user->get('role');
+    $_SESSION["username"] = $user->get('username');
 
     return $user;
   }
diff --git a/views/layouts/base.php b/views/layouts/base.php
index 7f136bfa3f171707b2fb7e961895910c59629b58..5b66d8ea89bcd2c67a91b08926c4e5432dcd3222 100644
--- a/views/layouts/base.php
+++ b/views/layouts/base.php
@@ -27,14 +27,13 @@
         <?php
         if (!isset($_SESSION['user_id'])) {
           echo "<li><a href='/login'>SIGN IN</a></li>";
+          echo "<li><a href='/register'>CREATE ACCOUNT</a></li>";
         } else {
-          $user_id = $_SESSION['user_id'];
-          echo "<li><a href='/'>$user_id</a></li>";
+          $username = $_SESSION['username'];
+          echo "<li><a href='/'>$username</a></li>";
           echo "<li><a href='/logout'>LOG OUT</a></li>";
         }
-
         ?>
-        <li><a href='/'>CREATE ACCOUNT</a></li>
         <li><a href='/'>FILMS</a></li>
         <li><a href='/'>LISTS</a></li>
         <li><a href='/'>MEMBERS</a></li>
diff --git a/views/register.php b/views/register.php
new file mode 100644
index 0000000000000000000000000000000000000000..7fd86fc731aef32cdab576ff811670776ecd33a5
--- /dev/null
+++ b/views/register.php
@@ -0,0 +1,28 @@
+<div class="register-container">
+  <h2>Register</h2>
+  <form class="register-form" method="post">
+    <div class="form-group">
+      <label for="username">Username</label>
+      <br>
+      <input type="text" id="username" name="username" required>
+    </div>
+    <div class="form-group">
+      <label for="email">Email</label>
+      <br>
+      <input type="text" id="email" name="email" required>
+    </div>
+    <div class="form-group">
+      <label for="password">Password</label>
+      <br>
+      <input type="password" id="password" name="password" required>
+    </div>
+    <div class="form-group">
+      <label for="confirm-password">Confirm Password</label>
+      <br>
+      <input type="password" id="confirm-password" name="confirm-password" required>
+    </div>
+    <div class="form-group">
+      <button type="submit">Register</button>
+    </div>
+  </form>
+</div>
\ No newline at end of file