diff --git a/.htaccess b/.htaccess
new file mode 100644
index 0000000000000000000000000000000000000000..f97815c26fd0f4799935b9159c06cba58e5cb0d6
--- /dev/null
+++ b/.htaccess
@@ -0,0 +1,4 @@
+Options -MultiViews
+RewriteEngine On
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteRule ^ public/index.php [QSA,L]
\ No newline at end of file
diff --git a/public/index.php b/public/index.php
new file mode 100644
index 0000000000000000000000000000000000000000..24fcb561951799b6f84459acf5e4fac06abc5066
--- /dev/null
+++ b/public/index.php
@@ -0,0 +1,14 @@
+<?php
+
+    $env = getenv('DAGOJEK_ENV');
+    if (!$env || $env == "development") {
+        $env = "development";
+        error_reporting(E_ALL);
+        ini_set('display_errors', 1);
+    }
+
+    require __DIR__.'/../src/app.php';
+
+    $App = DagoJek::Instance();
+    $App->prepareRouting();
+    $App->Start();
\ No newline at end of file
diff --git a/public/main.css b/public/main.css
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/public/scripts.js b/public/scripts.js
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/app.php b/src/app.php
new file mode 100644
index 0000000000000000000000000000000000000000..0bdcc30d18bb88c5e01a038f8c1cc6da37eb56c8
--- /dev/null
+++ b/src/app.php
@@ -0,0 +1,63 @@
+<?php
+
+
+/**
+ * DagoJek is a singleton class that representing DagoJek application
+ */
+class DagoJek {
+
+    private $routingTable = array();
+
+    private function __construct() {
+        // empty constructor
+    }
+
+    public static function Instance() {
+        static $instance = null;
+        if ($instance === null) {
+            $instance = new DagoJek();
+        }
+
+        $instance->includeAllController();
+
+        return $instance;
+    }
+
+    private function includeAllController() {
+        foreach (scandir(dirname(__FILE__)."/controller") as $filename) {
+            $path = dirname(__FILE__)."/controller" . '/' . $filename;
+            if (is_file($path)) {
+                require_once $path;
+            }
+        }
+    }
+
+    public function prepareRouting() {
+        require __DIR__.'/route.php';
+    }
+
+    private function getCurrentUri() {
+        $basepath = implode('/', array_slice(explode('/', $_SERVER['SCRIPT_NAME']), 0, -1)) . '/';
+        $uri = substr($_SERVER['REQUEST_URI'], strlen($basepath));
+        if (strstr($uri, '?')) $uri = substr($uri, 0, strpos($uri, '?'));
+        $uri = '/' . trim($uri, '/');
+        return $uri;
+    }
+
+    public function addRoute($route, $function) {
+        $data = array(
+            $route => $function,
+        );
+        $this->routingTable += $data;
+    }
+
+    public function Start() {
+        $base_url = $this->getCurrentUri();
+        if (array_key_exists ($base_url, $this->routingTable)) {
+            $this->routingTable[$base_url]();
+        } else {
+            die ("404 Page not Found");
+        }
+    }
+    
+}
diff --git a/src/controller/MainController.php b/src/controller/MainController.php
new file mode 100644
index 0000000000000000000000000000000000000000..c0fa8167c4d80d68f33d6ea3e1411852efec3e28
--- /dev/null
+++ b/src/controller/MainController.php
@@ -0,0 +1,13 @@
+<?php
+
+class MainController {
+
+    public static function LoginHandler() {
+        echo "This is login handler";
+    }
+
+    public static function DefaultHandler() {
+        echo "This is default handler";
+    }
+
+}
\ No newline at end of file
diff --git a/src/route.php b/src/route.php
new file mode 100644
index 0000000000000000000000000000000000000000..0b033a3664aaf90ff47110e1a6ed2f17ea3019e6
--- /dev/null
+++ b/src/route.php
@@ -0,0 +1,15 @@
+<?php
+
+// ---------------------------- LIST OF ALL BASIC ROUTES ----------------------------
+
+$AppInstance = Dagojek::Instance();
+
+$AppInstance->addRoute("/",                     'MainController::LoginHandler');
+$AppInstance->addRoute("/login",                'MainController::LoginHandler');
+$AppInstance->addRoute("/register",             'MainController::DefaultHandler');
+$AppInstance->addRoute("/main/profil",          'MainController::DefaultHandler');
+$AppInstance->addRoute("/main/profil/edit",     'MainController::DefaultHandler');
+$AppInstance->addRoute("/main/history",         'MainController::DefaultHandler');
+$AppInstance->addRoute("/main/order/",          'MainController::DefaultHandler');
+$AppInstance->addRoute("/main/order/select",    'MainController::DefaultHandler');
+$AppInstance->addRoute("/main/order/finish",    'MainController::DefaultHandler');