Index: client_app/.gitignore
===================================================================
--- client_app/.gitignore	(revision f36822a6effc141141cca9161f29476b74cd7772)
+++ client_app/.gitignore	(revision 3f5bf9e52a8d5a39df72f03e1a74347b96e88188)
@@ -22,2 +22,4 @@
 yarn-debug.log*
 yarn-error.log*
+
+.eslintcache
Index: client_app/package-lock.json
===================================================================
--- client_app/package-lock.json	(revision f36822a6effc141141cca9161f29476b74cd7772)
+++ client_app/package-lock.json	(revision 3f5bf9e52a8d5a39df72f03e1a74347b96e88188)
@@ -1169,4 +1169,21 @@
       }
     },
+    "@fluentui/react-component-event-listener": {
+      "version": "0.51.4",
+      "resolved": "https://registry.npmjs.org/@fluentui/react-component-event-listener/-/react-component-event-listener-0.51.4.tgz",
+      "integrity": "sha512-SnUy95PD6NekXhG+qmcjvESAkRIRNA1BpNFzVeh8GaWjbUpweZwnnkd2kSx3ZbBQvOFF/OBHdYG+wf6fccugwg==",
+      "requires": {
+        "@babel/runtime": "^7.10.4"
+      }
+    },
+    "@fluentui/react-component-ref": {
+      "version": "0.51.4",
+      "resolved": "https://registry.npmjs.org/@fluentui/react-component-ref/-/react-component-ref-0.51.4.tgz",
+      "integrity": "sha512-bUrbQ8pcxcFUI9XxOHXxzQSqjYiogGOmHVjNzV8Z6hz/dmwJI38MoeIVeuC90qociE8UWVue3WbcMfCNn6AlYg==",
+      "requires": {
+        "@babel/runtime": "^7.10.4",
+        "react-is": "^16.6.3"
+      }
+    },
     "@hapi/address": {
       "version": "2.1.4",
@@ -1799,4 +1816,9 @@
       }
     },
+    "@popperjs/core": {
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.6.0.tgz",
+      "integrity": "sha512-cPqjjzuFWNK3BSKLm0abspP0sp/IGOli4p5I5fKFAzdS8fvjdOwDCfZqAaIiXd9lPkOWi3SUUfZof3hEb7J/uw=="
+    },
     "@rollup/plugin-node-resolve": {
       "version": "7.1.3",
@@ -1835,4 +1857,13 @@
           "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw=="
         }
+      }
+    },
+    "@semantic-ui-react/event-stack": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/@semantic-ui-react/event-stack/-/event-stack-3.1.1.tgz",
+      "integrity": "sha512-SA7VOu/tY3OkooR++mm9voeQrJpYXjJaMHO1aFCcSouS2xhqMR9Gnz0LEGLOR0h9ueWPBKaQzKIrx3FTTJZmUQ==",
+      "requires": {
+        "exenv": "^1.2.2",
+        "prop-types": "^15.6.2"
       }
     },
@@ -2994,4 +3025,12 @@
       "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.1.tgz",
       "integrity": "sha512-5Kgy8Cz6LPC9DJcNb3yjAXTu3XihQgEdnIg50c//zOC/MyLP0Clg+Y8Sh9ZjjnvBrDZU4DgXS9C3T9r4/scGZQ=="
+    },
+    "axios": {
+      "version": "0.21.1",
+      "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
+      "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
+      "requires": {
+        "follow-redirects": "^1.10.0"
+      }
     },
     "axobject-query": {
@@ -3998,4 +4037,9 @@
       }
     },
+    "clsx": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz",
+      "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA=="
+    },
     "co": {
       "version": "4.6.0",
@@ -6019,4 +6063,9 @@
       }
     },
+    "exenv": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz",
+      "integrity": "sha1-KueOhdmJQVhnCwPUe+wfA72Ru50="
+    },
     "exit": {
       "version": "0.1.2",
@@ -6989,4 +7038,17 @@
       "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ=="
     },
+    "history": {
+      "version": "4.10.1",
+      "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
+      "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==",
+      "requires": {
+        "@babel/runtime": "^7.1.2",
+        "loose-envify": "^1.2.0",
+        "resolve-pathname": "^3.0.0",
+        "tiny-invariant": "^1.0.2",
+        "tiny-warning": "^1.0.0",
+        "value-equal": "^1.0.1"
+      }
+    },
     "hmac-drbg": {
       "version": "1.0.1",
@@ -6997,4 +7059,12 @@
         "minimalistic-assert": "^1.0.0",
         "minimalistic-crypto-utils": "^1.0.1"
+      }
+    },
+    "hoist-non-react-statics": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+      "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+      "requires": {
+        "react-is": "^16.7.0"
       }
     },
@@ -9355,4 +9425,9 @@
       }
     },
+    "jquery": {
+      "version": "3.5.1",
+      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz",
+      "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg=="
+    },
     "js-tokens": {
       "version": "4.0.0",
@@ -9491,4 +9566,9 @@
       }
     },
+    "keyboard-key": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/keyboard-key/-/keyboard-key-1.1.0.tgz",
+      "integrity": "sha512-qkBzPTi3rlAKvX7k0/ub44sqOfXeLc/jcnGGmj5c7BJpU8eDrEVPyhCvNYAaoubbsLm9uGWwQJO1ytQK1a9/dQ=="
+    },
     "killable": {
       "version": "1.0.1",
@@ -9600,4 +9680,9 @@
       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
       "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
+    },
+    "lodash-es": {
+      "version": "4.17.20",
+      "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.20.tgz",
+      "integrity": "sha512-JD1COMZsq8maT6mnuz1UMV0jvYD0E0aUsSOdrr1/nAG3dhqQXwRRgeW0cSqH1U43INKcqxaiVIQNOUDld7gRDA=="
     },
     "lodash._reinterpolate": {
@@ -9854,4 +9939,13 @@
       "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
       "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg=="
+    },
+    "mini-create-react-context": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz",
+      "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==",
+      "requires": {
+        "@babel/runtime": "^7.12.1",
+        "tiny-warning": "^1.0.3"
+      }
     },
     "mini-css-extract-plugin": {
@@ -12272,4 +12366,9 @@
       "integrity": "sha512-HvPuUQnLp5H7TouGq3kzBeioJmXms1wHy9EGjz2OURWBp4qZO6AfGEcnxts1D/CbwPLRAgTMPCEgYhA3sEM4vw=="
     },
+    "react-fast-compare": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz",
+      "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA=="
+    },
     "react-is": {
       "version": "16.13.1",
@@ -12277,8 +12376,63 @@
       "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
     },
+    "react-popper": {
+      "version": "2.2.4",
+      "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.2.4.tgz",
+      "integrity": "sha512-NacOu4zWupdQjVXq02XpTD3yFPSfg5a7fex0wa3uGKVkFK7UN6LvVxgcb+xYr56UCuWiNPMH20tntdVdJRwYew==",
+      "requires": {
+        "react-fast-compare": "^3.0.1",
+        "warning": "^4.0.2"
+      }
+    },
     "react-refresh": {
       "version": "0.8.3",
       "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz",
       "integrity": "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg=="
+    },
+    "react-router": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz",
+      "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==",
+      "requires": {
+        "@babel/runtime": "^7.1.2",
+        "history": "^4.9.0",
+        "hoist-non-react-statics": "^3.1.0",
+        "loose-envify": "^1.3.1",
+        "mini-create-react-context": "^0.4.0",
+        "path-to-regexp": "^1.7.0",
+        "prop-types": "^15.6.2",
+        "react-is": "^16.6.0",
+        "tiny-invariant": "^1.0.2",
+        "tiny-warning": "^1.0.0"
+      },
+      "dependencies": {
+        "isarray": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+        },
+        "path-to-regexp": {
+          "version": "1.8.0",
+          "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
+          "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
+          "requires": {
+            "isarray": "0.0.1"
+          }
+        }
+      }
+    },
+    "react-router-dom": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz",
+      "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==",
+      "requires": {
+        "@babel/runtime": "^7.1.2",
+        "history": "^4.9.0",
+        "loose-envify": "^1.3.1",
+        "prop-types": "^15.6.2",
+        "react-router": "5.2.0",
+        "tiny-invariant": "^1.0.2",
+        "tiny-warning": "^1.0.0"
+      }
     },
     "react-scripts": {
@@ -12738,4 +12892,9 @@
       "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
     },
+    "resolve-pathname": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz",
+      "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng=="
+    },
     "resolve-url": {
       "version": "0.2.1",
@@ -13202,4 +13361,32 @@
       }
     },
+    "semantic-ui-css": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmjs.org/semantic-ui-css/-/semantic-ui-css-2.4.1.tgz",
+      "integrity": "sha512-Pkp0p9oWOxlH0kODx7qFpIRYpK1T4WJOO4lNnpNPOoWKCrYsfHqYSKgk5fHfQtnWnsAKy7nLJMW02bgDWWFZFg==",
+      "requires": {
+        "jquery": "x.*"
+      }
+    },
+    "semantic-ui-react": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/semantic-ui-react/-/semantic-ui-react-2.0.1.tgz",
+      "integrity": "sha512-l1g9ZTRHqe+nSgcTuaTTxnnIdPAgyzoAZY35ciL0pjopeC7mWxNVhBqm98tmR0kgoL7NvWjY+Dy/AUc3l6FVKw==",
+      "requires": {
+        "@babel/runtime": "^7.10.5",
+        "@fluentui/react-component-event-listener": "~0.51.1",
+        "@fluentui/react-component-ref": "~0.51.1",
+        "@popperjs/core": "^2.5.2",
+        "@semantic-ui-react/event-stack": "^3.1.0",
+        "clsx": "^1.1.1",
+        "keyboard-key": "^1.1.0",
+        "lodash": "^4.17.19",
+        "lodash-es": "^4.17.15",
+        "prop-types": "^15.7.2",
+        "react-is": "^16.8.6",
+        "react-popper": "^2.2.3",
+        "shallowequal": "^1.1.0"
+      }
+    },
     "semver": {
       "version": "7.3.2",
@@ -13371,4 +13558,9 @@
       }
     },
+    "shallowequal": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
+      "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ=="
+    },
     "shebang-command": {
       "version": "1.2.0",
@@ -14412,4 +14604,14 @@
       "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q="
     },
+    "tiny-invariant": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz",
+      "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw=="
+    },
+    "tiny-warning": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
+      "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
+    },
     "tmpl": {
       "version": "1.0.4",
@@ -14882,4 +15084,9 @@
       }
     },
+    "value-equal": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz",
+      "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw=="
+    },
     "vary": {
       "version": "1.1.2",
@@ -14929,4 +15136,12 @@
       "requires": {
         "makeerror": "1.0.x"
+      }
+    },
+    "warning": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz",
+      "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
+      "requires": {
+        "loose-envify": "^1.0.0"
       }
     },
Index: client_app/package.json
===================================================================
--- client_app/package.json	(revision f36822a6effc141141cca9161f29476b74cd7772)
+++ client_app/package.json	(revision 3f5bf9e52a8d5a39df72f03e1a74347b96e88188)
@@ -7,7 +7,11 @@
     "@testing-library/react": "^11.2.2",
     "@testing-library/user-event": "^12.6.0",
+    "axios": "^0.21.1",
     "react": "^17.0.1",
     "react-dom": "^17.0.1",
+    "react-router-dom": "^5.2.0",
     "react-scripts": "4.0.1",
+    "semantic-ui-css": "^2.4.1",
+    "semantic-ui-react": "^2.0.1",
     "web-vitals": "^0.2.4"
   },
Index: ient_app/src/App.css
===================================================================
--- client_app/src/App.css	(revision f36822a6effc141141cca9161f29476b74cd7772)
+++ 	(revision )
@@ -1,38 +1,0 @@
-.App {
-  text-align: center;
-}
-
-.App-logo {
-  height: 40vmin;
-  pointer-events: none;
-}
-
-@media (prefers-reduced-motion: no-preference) {
-  .App-logo {
-    animation: App-logo-spin infinite 20s linear;
-  }
-}
-
-.App-header {
-  background-color: #282c34;
-  min-height: 100vh;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  justify-content: center;
-  font-size: calc(10px + 2vmin);
-  color: white;
-}
-
-.App-link {
-  color: #61dafb;
-}
-
-@keyframes App-logo-spin {
-  from {
-    transform: rotate(0deg);
-  }
-  to {
-    transform: rotate(360deg);
-  }
-}
Index: ient_app/src/App.js
===================================================================
--- client_app/src/App.js	(revision f36822a6effc141141cca9161f29476b74cd7772)
+++ 	(revision )
@@ -1,25 +1,0 @@
-import logo from './logo.svg';
-import './App.css';
-
-function App() {
-  return (
-    <div className="App">
-      <header className="App-header">
-        <img src={logo} className="App-logo" alt="logo" />
-        <p>
-          Edit <code>src/App.js</code> and save to reload.
-        </p>
-        <a
-          className="App-link"
-          href="https://reactjs.org"
-          target="_blank"
-          rel="noopener noreferrer"
-        >
-          Learn React
-        </a>
-      </header>
-    </div>
-  );
-}
-
-export default App;
Index: client_app/src/App.test.js
===================================================================
--- client_app/src/App.test.js	(revision f36822a6effc141141cca9161f29476b74cd7772)
+++ client_app/src/App.test.js	(revision 3f5bf9e52a8d5a39df72f03e1a74347b96e88188)
@@ -1,4 +1,4 @@
 import { render, screen } from '@testing-library/react';
-import App from './App';
+import App from './components/main/App';
 
 test('renders learn react link', () => {
Index: client_app/src/components/login/login.js
===================================================================
--- client_app/src/components/login/login.js	(revision 3f5bf9e52a8d5a39df72f03e1a74347b96e88188)
+++ client_app/src/components/login/login.js	(revision 3f5bf9e52a8d5a39df72f03e1a74347b96e88188)
@@ -0,0 +1,72 @@
+import React from 'react';
+import {useHistory} from 'react-router-dom';
+import {Button, Checkbox, Container, Form} from "semantic-ui-react";
+
+const Login = (props) => {
+
+    const history = useHistory();
+    const [formData, updateFormData] = React.useState({
+        username: "",
+        password: "",
+        type: ""
+    })
+
+    const handleCheck = (e, {value}) => {
+        updateFormData({
+            ...formData,
+            [e.target.name]: value
+        })
+    }
+
+    const onFormSubmit = (e) =>{
+        e.preventDefault();
+        const username = formData.username;
+        const password = formData.password;
+        const type = formData.type;
+
+        props.onCompleteForm(username,password,type);
+        history.push("/");
+    }
+
+    return(
+        <Container>
+            <Form onSubmit={onFormSubmit}>
+                <Form.Input id="username" name="username" type='text' required fluid label='E-mail' placeholder='Enter e-mail.' onChange={handleCheck} />
+                <Form.Input id="password" name="password" type='password' required fluid label='Password' placeholder='Enter password.' onChange={handleCheck} />
+                <Form.Field
+                    control={Checkbox}
+                    radio
+                    label='User'
+                    id="0"
+                    name='type'
+                    value='0'
+                    checked={formData.type === "0"}
+                    onChange={handleCheck}
+                />
+                <Form.Field
+                    control={Checkbox}
+                    radio
+                    label='Team'
+                    id="1"
+                    name='type'
+                    value='1'
+                    checked={formData.type === "1"}
+                    onChange={handleCheck}
+                />
+                <Form.Field
+                    control={Checkbox}
+                    radio
+                    label='Company'
+                    id="2"
+                    name='type'
+                    value='2'
+                    checked={formData.type === "2"}
+                    onChange={handleCheck}
+                />
+                <Form.Field control={Button}>LogIn</Form.Field>
+            </Form>
+        </Container>
+    );
+}
+
+export default Login;
Index: client_app/src/components/main/App.css
===================================================================
--- client_app/src/components/main/App.css	(revision 3f5bf9e52a8d5a39df72f03e1a74347b96e88188)
+++ client_app/src/components/main/App.css	(revision 3f5bf9e52a8d5a39df72f03e1a74347b96e88188)
@@ -0,0 +1,38 @@
+.App {
+  text-align: center;
+}
+
+.App-logo {
+  height: 40vmin;
+  pointer-events: none;
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  .App-logo {
+    animation: App-logo-spin infinite 20s linear;
+  }
+}
+
+.App-header {
+  background-color: #282c34;
+  min-height: 100vh;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  font-size: calc(10px + 2vmin);
+  color: white;
+}
+
+.App-link {
+  color: #61dafb;
+}
+
+@keyframes App-logo-spin {
+  from {
+    transform: rotate(0deg);
+  }
+  to {
+    transform: rotate(360deg);
+  }
+}
Index: client_app/src/components/main/App.js
===================================================================
--- client_app/src/components/main/App.js	(revision 3f5bf9e52a8d5a39df72f03e1a74347b96e88188)
+++ client_app/src/components/main/App.js	(revision 3f5bf9e52a8d5a39df72f03e1a74347b96e88188)
@@ -0,0 +1,47 @@
+import React, {Component} from 'react';
+import {BrowserRouter as Router, Route} from 'react-router-dom';
+import Login from '../login/login';
+import 'semantic-ui-css/semantic.min.css';
+import HeaderComp from '../template/header';
+import './App.css';
+import UserLogin from "../../repository/login_repo";
+
+class App extends Component{
+  constructor(props) {
+    super(props);
+    this.state = {
+      id: null,
+      email: null,
+      name: null,
+      type: null
+    }
+  }
+
+  render(){
+      return(
+          <Router>
+              <HeaderComp acc={this.state.email} accType={this.state.type} name={this.state.name}/>
+              <main>
+                  <Route path={"/login"} render={() => <Login onCompleteForm={this.attemptLogin}/>}/>
+                  <Route path={"/"}/>
+                  <Route path={"/jobs"}/>
+                  <Route path={"/internships"}/>
+              </main>
+          </Router>
+      );
+  }
+
+  attemptLogin = (username, password, type) => {
+      UserLogin.login(username, password, type).then((res) =>{
+          console.log(res.data);
+          this.setState({
+            id: res.data.id,
+            email: res.data.email,
+            name: res.data.name,
+            type: res.data.type
+          });
+      });
+  }
+}
+
+export default App;
Index: client_app/src/components/template/header.js
===================================================================
--- client_app/src/components/template/header.js	(revision 3f5bf9e52a8d5a39df72f03e1a74347b96e88188)
+++ client_app/src/components/template/header.js	(revision 3f5bf9e52a8d5a39df72f03e1a74347b96e88188)
@@ -0,0 +1,50 @@
+import React from 'react';
+import {Link} from "react-router-dom";
+import {Menu, MenuItem} from "semantic-ui-react";
+
+
+const HeaderComp = (props) => {
+    if(props.accType == null){
+        return(
+            <Menu inverted position="right">
+                <MenuItem as={Link} to='/login'>
+                    Login
+                </MenuItem>
+            </Menu>
+        );
+    }else{
+        if(props.accType==="COMPANY"){
+            return(
+                <Menu inverted position="right">
+                    <Menu.Item as={Link} to='/profile'>
+                        Profile
+                    </Menu.Item>
+                    <Menu.Item as={Link} to='/jobs'>
+                        Jobs
+                    </Menu.Item>
+                    <Menu.Item as={Link} to='/internships'>
+                        Internships
+                    </Menu.Item>
+                </Menu>
+            );
+        }else if(props.accType==="TEAM"){
+            return(
+                <Menu inverted position="right">
+                    <Menu.Item as={Link} to='/login'>
+                        Team
+                    </Menu.Item>
+                </Menu>
+            );
+        }else if(props.accType==="USER"){
+            return(
+                <Menu inverted position="right">
+                    <Menu.Item as={Link} to='/login'>
+                        User
+                    </Menu.Item>
+                </Menu>
+            );
+        }
+    }
+}
+
+export default HeaderComp;
Index: client_app/src/custom_axios/axios.js
===================================================================
--- client_app/src/custom_axios/axios.js	(revision 3f5bf9e52a8d5a39df72f03e1a74347b96e88188)
+++ client_app/src/custom_axios/axios.js	(revision 3f5bf9e52a8d5a39df72f03e1a74347b96e88188)
@@ -0,0 +1,10 @@
+import axios from 'axios';
+
+const instance = axios.create({
+    baseURL: 'http://localhost:9090/api',
+    headers: {
+        'Access-Control-Allow-Origin' : '*'
+    }
+});
+
+export default instance;
Index: client_app/src/index.js
===================================================================
--- client_app/src/index.js	(revision f36822a6effc141141cca9161f29476b74cd7772)
+++ client_app/src/index.js	(revision 3f5bf9e52a8d5a39df72f03e1a74347b96e88188)
@@ -2,5 +2,5 @@
 import ReactDOM from 'react-dom';
 import './index.css';
-import App from './App';
+import App from './components/main/App';
 import reportWebVitals from './reportWebVitals';
 
@@ -12,6 +12,3 @@
 );
 
-// If you want to start measuring performance in your app, pass a function
-// to log results (for example: reportWebVitals(console.log))
-// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
 reportWebVitals();
Index: client_app/src/repository/login_repo.js
===================================================================
--- client_app/src/repository/login_repo.js	(revision 3f5bf9e52a8d5a39df72f03e1a74347b96e88188)
+++ client_app/src/repository/login_repo.js	(revision 3f5bf9e52a8d5a39df72f03e1a74347b96e88188)
@@ -0,0 +1,13 @@
+import axios from '../custom_axios/axios';
+
+const UserLogin = {
+    login: (username, password, type) => {
+        return axios.post("/login", {
+            "account": username,
+            "password": password,
+            "type": type
+        });
+    }
+}
+
+export default UserLogin;
Index: src/main/java/it/finki/tinki/controller/TestController.java
===================================================================
--- src/main/java/it/finki/tinki/controller/TestController.java	(revision f36822a6effc141141cca9161f29476b74cd7772)
+++ src/main/java/it/finki/tinki/controller/TestController.java	(revision 3f5bf9e52a8d5a39df72f03e1a74347b96e88188)
@@ -9,4 +9,5 @@
 
 @RestController
+@CrossOrigin(origins = "http://localhost:3000")
 @RequestMapping("/api")
 public class TestController {
@@ -20,4 +21,7 @@
     @PostMapping(path = "/login")
     public AuthResponseDataPojo testPage(@RequestBody AccountLoginDataPojo body) throws ResponseStatusException {
+
+        System.out.println(body);
+
         Account a1 = accountService.findUser(body.getAccount(), body.getPassword(), body.getType());
         AuthResponseDataPojo resp = new AuthResponseDataPojo();
