diff --git a/server/app/book/Book.php b/app/controller/book/Book.php
similarity index 100%
rename from server/app/book/Book.php
rename to app/controller/book/Book.php
diff --git a/server/app/book/BookDb.php b/app/controller/book/BookDb.php
similarity index 100%
rename from server/app/book/BookDb.php
rename to app/controller/book/BookDb.php
diff --git a/server/app/book/BookUsecase.php b/app/controller/book/BookUsecase.php
similarity index 73%
rename from server/app/book/BookUsecase.php
rename to app/controller/book/BookUsecase.php
index 316b66e6add400de9bb230b82beedd34eddbc86e..d635e20a71eebf5689dd9a459b34f67079598701 100644
--- a/server/app/book/BookUsecase.php
+++ b/app/controller/book/BookUsecase.php
@@ -1,5 +1,5 @@
 <?php
-    require_once __ROOT__.'/app/book/BookDb.php';
+    require_once __ROOT__.'/app/controller/book/BookDb.php';
 
     class BookUsecase {
         private $bookDb;
diff --git a/server/app/book/Review.php b/app/controller/book/Review.php
similarity index 100%
rename from server/app/book/Review.php
rename to app/controller/book/Review.php
diff --git a/server/app/book/routes.php b/app/controller/book/routes.php
similarity index 100%
rename from server/app/book/routes.php
rename to app/controller/book/routes.php
diff --git a/server/app/order/Order.php b/app/controller/order/Order.php
similarity index 100%
rename from server/app/order/Order.php
rename to app/controller/order/Order.php
diff --git a/server/app/order/OrderDb.php b/app/controller/order/OrderDb.php
similarity index 100%
rename from server/app/order/OrderDb.php
rename to app/controller/order/OrderDb.php
diff --git a/server/app/order/OrderUsecase.php b/app/controller/order/OrderUsecase.php
similarity index 72%
rename from server/app/order/OrderUsecase.php
rename to app/controller/order/OrderUsecase.php
index b5fb1b0d9b2ff019d3c091bd7d36e595db4331b5..dcee983650747c276ce0dfeac8fafc8ca3dc03b1 100644
--- a/server/app/order/OrderUsecase.php
+++ b/app/controller/order/OrderUsecase.php
@@ -1,5 +1,5 @@
 <?php
-    require_once __ROOT__.'/app/order/OrderDb.php';
+    require_once __ROOT__.'/app/controller/order/OrderDb.php';
 
     class OrderUsecase {
         private $orderDb;
diff --git a/server/app/order/routes.php b/app/controller/order/routes.php
similarity index 100%
rename from server/app/order/routes.php
rename to app/controller/order/routes.php
diff --git a/server/app/user/AuthMiddleware.php b/app/controller/user/AuthMiddleware.php
similarity index 100%
rename from server/app/user/AuthMiddleware.php
rename to app/controller/user/AuthMiddleware.php
diff --git a/server/app/user/User.php b/app/controller/user/User.php
similarity index 100%
rename from server/app/user/User.php
rename to app/controller/user/User.php
diff --git a/server/app/user/UserDb.php b/app/controller/user/UserDb.php
similarity index 97%
rename from server/app/user/UserDb.php
rename to app/controller/user/UserDb.php
index a1c678c2278d3e740601cf8ccc881a43a7009114..865372d08a5359a1615071ec49a3803383ca89c2 100644
--- a/server/app/user/UserDb.php
+++ b/app/controller/user/UserDb.php
@@ -1,6 +1,6 @@
 <?php
     require_once __ROOT__."/util/Database.php";
-    require_once __ROOT__."/app/user/User.php";
+    require_once __ROOT__."/app/controller/user/User.php";
 
     class UserDb extends Database{ 
         function __construct(PDO $conn){
diff --git a/server/app/user/UserUsecase.php b/app/controller/user/UserUsecase.php
similarity index 93%
rename from server/app/user/UserUsecase.php
rename to app/controller/user/UserUsecase.php
index a8952ecff7f78ef2fa673cea3db4b422139f455f..84b14aa42dfd577c083d8f143d9e1a29e00e5f52 100644
--- a/server/app/user/UserUsecase.php
+++ b/app/controller/user/UserUsecase.php
@@ -1,6 +1,6 @@
 <?php
-    require_once __ROOT__.'/app/user/UserDb.php';
-    require_once __ROOT__.'/app/user/User.php';
+    require_once __ROOT__.'/app/controller/user/UserDb.php';
+    require_once __ROOT__.'/app/controller/user/User.php';
     require_once __ROOT__.'/util/Routing/Response.php';
 
     class UserUsecase {
@@ -70,7 +70,9 @@
             }
         }
 
-
+        function authenticateUser(Request $request){
+            
+        }
     }
 
 ?>
\ No newline at end of file
diff --git a/server/app/user/routes.php b/app/controller/user/routes.php
similarity index 73%
rename from server/app/user/routes.php
rename to app/controller/user/routes.php
index b2a81b10a659589e747465bf0a3c44dd6a7c9557..f94fd4e2a8ec201677950c8724ba6df85e8a3a8e 100644
--- a/server/app/user/routes.php
+++ b/app/controller/user/routes.php
@@ -1,14 +1,11 @@
 <?php
-
     function addUserRoutes($router, $userUsecase){
         $router->add("/user/", "POST", array($userUsecase,'registerUser'));
-        $router->add("/user/search/", "GET", function($request){
-            $queries = $request->queries;
-            var_dump($queries);
-        });
         $router->add("/user/:user_id/", "DELETE", array($userUsecase,'removeUser'));
         $router->add("/user/:user_id/", "GET", array($userUsecase,'getProfile'));
         $router->add("/user/:user_id/", "PUT", array($userUsecase,'editProfile'));
+        // Auth
+        $router->add("/auth/login/", "POST", array($userUsecase,'authenticateUser'));
         return $router;
     }
 
diff --git a/client/app/history.php b/app/view/history.php
similarity index 100%
rename from client/app/history.php
rename to app/view/history.php
diff --git a/app/view/homepage.php b/app/view/homepage.php
new file mode 100644
index 0000000000000000000000000000000000000000..51aa1b95d592f3e001d12ef2e1f3ffdbf86d7a02
--- /dev/null
+++ b/app/view/homepage.php
@@ -0,0 +1,9 @@
+<?php
+    
+    $homepage = function() {
+        // include __ROOT__.'/static/html/index.html';
+        $result = json_decode(http_get('localhost:4000/user/2/'));
+        echo($result);
+    }
+
+?>
\ No newline at end of file
diff --git a/client/app/profile.php b/app/view/profile.php
similarity index 100%
rename from client/app/profile.php
rename to app/view/profile.php
diff --git a/client/static/html/index.html b/app/view/static/html/index.html
similarity index 100%
rename from client/static/html/index.html
rename to app/view/static/html/index.html
diff --git a/client/app/homepage.php b/client/app/homepage.php
deleted file mode 100644
index 5fac71f8e8c4ac6df167826c91b339547cdd70dc..0000000000000000000000000000000000000000
--- a/client/app/homepage.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-    
-    $homepage = function() {
-        include __ROOT__.'/static/html/index.html';
-    }
-
-?>
\ No newline at end of file
diff --git a/client/public/index.php b/client/public/index.php
deleted file mode 100644
index 9f528009f42bee2872715b3c9e6745b1611d28d1..0000000000000000000000000000000000000000
--- a/client/public/index.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-    define('__ROOT__', dirname(dirname(__FILE__)));
-
-    
-    require_once __ROOT__.'/util/Routing/Router.php';
-    require_once __ROOT__.'/app/homepage.php';
-    require_once __ROOT__.'/app/history.php';
-    require_once __ROOT__.'/app/profile.php';
-    
-
-    $router = new Router();
-
-    $router->add("/", "GET", $homepage);
-    $router->add("/profile/", "GET", $historyPage);
-    $router->add("/history/", "GET", $profilePage);
-
-    $uri = $_SERVER["PATH_INFO"];
-    $method = $_SERVER["REQUEST_METHOD"];
-
-    $router->route($uri, $method);
-?>
\ No newline at end of file
diff --git a/client/util/Routing/Request.php b/client/util/Routing/Request.php
deleted file mode 100644
index ba6d58f791416275125d7b56a021e3ef916dcfaf..0000000000000000000000000000000000000000
--- a/client/util/Routing/Request.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-    class Request {
-        public $params = array();
-        public $payload = array();
-        public $header = array();
-
-        function __construct(array $params, array $payload, $header){
-            $this->params = $params;
-            $this->payload = $payload;
-            $this->header = $header;
-        }
-    }
-
-?>
\ No newline at end of file
diff --git a/client/util/Routing/Router.php b/client/util/Routing/Router.php
deleted file mode 100644
index b92e8fb0331a7950012d085c7029065f5ff332a2..0000000000000000000000000000000000000000
--- a/client/util/Routing/Router.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-    require_once 'Request.php';
-    require_once 'IMiddleware.php';
-
-    class Router {
-        // Array of routes and its callback
-        private $routes = array();  
-        // Array of patterns for params matching
-        private $paramPatterns = array();
-        // Array of param keys to be searched
-        private $paramKeys = array();
-
-        private function __makeParamPattern($url){
-            $url_components = explode("/", $url);
-            $paramPattern = "^\/";
-            foreach($url_components as $url_component){
-                if ($url_component != ""){
-                    if (preg_match('(:.*)',$url_component)){
-                        preg_match('(:.*)',$url_component, $paramName);
-                        $param = substr($paramName[0],1);
-                        array_push($this->paramKeys, $param);
-                        $paramPattern .= "(?P"."<$param>"."\d+)\/";
-                    }
-                    else {
-                        $paramPattern .= "(".$url_component.")\/"; 
-                    }
-                }
-            }
-            $paramPattern.= "$";
-
-            return $paramPattern;
-        }
-
-        private function __parseParams($url){
-            $request_params = array();
-            $param_matches = array();
-
-            foreach($this->paramPatterns as $paramPattern){
-                if (preg_match('('.$paramPattern.')', $url, $matches, PREG_OFFSET_CAPTURE)){
-                    $param_matches = $matches;
-                }
-            }
-
-            foreach($this->paramKeys as $param){
-                if (array_key_exists($param, $param_matches)){
-                    $request_params[$param] = $param_matches[$param][0];
-                }
-            }
-
-            return $request_params;
-        }
-
-        private function __getRouteFromPattern($url, $method){
-            foreach ($this->routes as $key=>$value){
-                if (preg_match("($key)", $url) && array_key_exists($method, $value)){
-                    return $value[$method];
-                }
-            }
-
-            return null;
-        }
-
-        function add(string $url, string $method, $callback, IMiddleware $middleware = null) {
-            $urlPattern = $this->__makeParamPattern($url);
-            $this->routes[$urlPattern][$method] = array("callback"=>$callback, "middleware"=>$middleware);
-            array_push($this->paramPatterns, $urlPattern);
-        }
-        
-        function route(string $requestUrl, string $method, $errorCallback = null) {
-            $route = $this->__getRouteFromPattern($requestUrl, $method);
-            
-            if ($route!= null) {
-                // get params
-                $params = $this->__parseParams($requestUrl);
-                // get payload
-                parse_str(file_get_contents("php://input"), $payload);                
-                // get header
-                $headers = getallheaders();
-
-                $request = new Request($params, $payload, $headers);
-
-                if ($route["middleware"]){
-                    $route["middleware"]->run($route["callback"], $request);
-                } else {
-                    $route["callback"]($request);
-                }
-            } else {
-                if ($errorCallback){
-                    $errorCallback();
-                }
-            }
-        }
-    }
-?>
\ No newline at end of file
diff --git a/server/config/devel.php b/config/devel.php
similarity index 80%
rename from server/config/devel.php
rename to config/devel.php
index 1c435c3ef015c23b75b7265b7e8aeb561d2a3866..56fede7f7360ce60ac5ada99c8b7b7340cc035af 100644
--- a/server/config/devel.php
+++ b/config/devel.php
@@ -5,6 +5,7 @@
             "user" => "root",
             "password" => "rahasiailahi",
             "db_name" => "tayo_book_store"
-        )
+        ),
+        "base_url" => "localhost:4000/"
     )
 ?>
\ No newline at end of file
diff --git a/server/db/db schema.png b/db/db schema.png
similarity index 100%
rename from server/db/db schema.png
rename to db/db schema.png
diff --git a/server/db/tayo_book_store.sql b/db/tayo_book_store.sql
similarity index 100%
rename from server/db/tayo_book_store.sql
rename to db/tayo_book_store.sql
diff --git a/server/db/tayo_book_store_dummy.sql b/db/tayo_book_store_dummy.sql
similarity index 100%
rename from server/db/tayo_book_store_dummy.sql
rename to db/tayo_book_store_dummy.sql
diff --git a/server/public/index.php b/public/index.php
similarity index 62%
rename from server/public/index.php
rename to public/index.php
index 73d339bee73230e7d9a9608c5f81e5e26d02bc93..803ebeb71fabdb4a90a0a92b44ef068f3dae58ca 100644
--- a/server/public/index.php
+++ b/public/index.php
@@ -5,24 +5,23 @@
     require_once __ROOT__.'/util/Routing/Request.php';
     require_once __ROOT__.'/util/Database.php';
     // book
-    require_once __ROOT__.'/app/book/BookUsecase.php';
-    require_once __ROOT__.'/app/book/BookDb.php';
+    require_once __ROOT__.'/app/controller/book/BookUsecase.php';
+    require_once __ROOT__.'/app/controller/book/BookDb.php';
     // order
-    require_once __ROOT__.'/app/order/OrderUsecase.php';
-    require_once __ROOT__.'/app/order/OrderDb.php';
+    require_once __ROOT__.'/app/controller/order/OrderUsecase.php';
+    require_once __ROOT__.'/app/controller/order/OrderDb.php';
     // user
-    require_once __ROOT__.'/app/user/UserUsecase.php';
-    require_once __ROOT__.'/app/user/UserDb.php';
-
+    require_once __ROOT__.'/app/controller/user/UserUsecase.php';
+    require_once __ROOT__.'/app/controller/user/UserDb.php';
     // routes
-    require_once __ROOT__.'/app/book/routes.php';
-    require_once __ROOT__.'/app/order/routes.php';
-    require_once __ROOT__.'/app/user/routes.php';
+    require_once __ROOT__.'/app/controller/book/routes.php';
+    require_once __ROOT__.'/app/controller/order/routes.php';
+    require_once __ROOT__.'/app/controller/user/routes.php';
 
     $conn = Database::createDBConnection($APP_CONFIG["db"]["host"], 
                                         $APP_CONFIG["db"]["user"], $APP_CONFIG["db"]["password"], 
                                         $APP_CONFIG["db"]["db_name"]);
-    
+                                        
     $userDb = new UserDb($conn);
     $userUsecase = new UserUsecase($userDb);
 
diff --git a/server/util/Routing/IMiddleware.php b/server/util/Routing/IMiddleware.php
deleted file mode 100644
index fddf20bfb2bd2f82a4ba4174e0b4a95fc713c987..0000000000000000000000000000000000000000
--- a/server/util/Routing/IMiddleware.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-    require_once 'Request.php';
-
-    interface IMiddleware {
-        function run($next, Request $nextRequest);
-    }
-
-
-?>
\ No newline at end of file
diff --git a/server/util/Database.php b/util/Database.php
similarity index 100%
rename from server/util/Database.php
rename to util/Database.php
diff --git a/client/util/Routing/IMiddleware.php b/util/Routing/IMiddleware.php
similarity index 100%
rename from client/util/Routing/IMiddleware.php
rename to util/Routing/IMiddleware.php
diff --git a/server/util/Routing/Request.php b/util/Routing/Request.php
similarity index 100%
rename from server/util/Routing/Request.php
rename to util/Routing/Request.php
diff --git a/server/util/Routing/Response.php b/util/Routing/Response.php
similarity index 100%
rename from server/util/Routing/Response.php
rename to util/Routing/Response.php
diff --git a/server/util/Routing/Router.php b/util/Routing/Router.php
similarity index 100%
rename from server/util/Routing/Router.php
rename to util/Routing/Router.php
diff --git a/server/util/autoloader.php b/util/autoloader.php
similarity index 100%
rename from server/util/autoloader.php
rename to util/autoloader.php