diff --git a/src/components/Header.js b/src/components/Header.js
index 120c3269d68eb9370ac3fdb6efaa91e84f7da714..773780bd44540319c1b57e15d63d542938674d78 100644
--- a/src/components/Header.js
+++ b/src/components/Header.js
@@ -47,10 +47,10 @@ const FixedMenu = ({ user }) => (
             user.id ?
               <Button.Group>
                 <Button primary as={Link} to='/profile'>Profilom</Button>
-                <Button as='a' href='/api/v1/logout/' icon='sign out' />
+                <Button as='a' href='/api/v1/logout/' target="_blank" rel="noopener noreferrer" icon='sign out' />
               </Button.Group>
             :
-              <Button as='a' href='/api/v1/login/authsch/'>BejelentkezĂŠs</Button>
+              <Button as='a' href='/api/v1/login/authsch/'  target="_blank" rel="noopener noreferrer" >BejelentkezĂŠs</Button>
           }
         </Menu.Item>
       </Menu.Menu>
@@ -103,10 +103,10 @@ class Header extends Component {
                     this.props.user.id ?
                       <Button.Group>
                         <Button inverted as={Link} to='/profile'>Profilom</Button>
-                        <Button as='a' href='/api/v1/logout/' icon='sign out' />
+                        <Button as='a' href='/api/v1/logout/'  target="_blank" rel="noopener noreferrer"  icon='sign out' />
                       </Button.Group>
                     :
-                      <Button as='a' href='/api/v1/login/authsch/' inverted>BejelentkezĂŠs</Button>
+                      <Button as='a' href='/api/v1/login/authsch/'  target="_blank" rel="noopener noreferrer" inverted>BejelentkezĂŠs</Button>
                   }
                 </Menu.Item>
 
diff --git a/src/config.js b/src/config.js
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/config.js.temp b/src/config.js.temp
new file mode 100644
index 0000000000000000000000000000000000000000..6436d286b2d1f8ac28a4fb74f177faf209fd424b
--- /dev/null
+++ b/src/config.js.temp
@@ -0,0 +1 @@
+export const APIKEY = '';
diff --git a/src/index.js b/src/index.js
index 3ee63915c6b0155ea761b9abcaec1d6432afc91a..a72306aeba29511c4da587b694a9e72a0e9fc528 100644
--- a/src/index.js
+++ b/src/index.js
@@ -6,9 +6,9 @@ import 'slick-carousel/slick/slick.css';
 import 'slick-carousel/slick/slick-theme.css';
 import 'semantic-ui-css/semantic.min.css';
 
-import registerServiceWorker from './registerServiceWorker';
 import configureStore from './configureStore';
 import App from './components/App';
+import registerServiceWorker from './registerServiceWorker';
 
 const store = configureStore();
 
diff --git a/src/registerServiceWorker.js b/src/registerServiceWorker.js
new file mode 100644
index 0000000000000000000000000000000000000000..4a3ccf02124e9a3a84c0a754ec5eaf577499ae35
--- /dev/null
+++ b/src/registerServiceWorker.js
@@ -0,0 +1,108 @@
+// In production, we register a service worker to serve assets from local cache.
+
+// This lets the app load faster on subsequent visits in production, and gives
+// it offline capabilities. However, it also means that developers (and users)
+// will only see deployed updates on the "N+1" visit to a page, since previously
+// cached resources are updated in the background.
+
+// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.
+// This link also includes instructions on opting out of this behavior.
+
+const isLocalhost = Boolean(
+  window.location.hostname === 'localhost' ||
+    // [::1] is the IPv6 localhost address.
+    window.location.hostname === '[::1]' ||
+    // 127.0.0.1/8 is considered localhost for IPv4.
+    window.location.hostname.match(
+      /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/
+    )
+);
+
+export default function register() {
+  if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {
+    // The URL constructor is available in all browsers that support SW.
+    const publicUrl = new URL(process.env.PUBLIC_URL, window.location);
+    if (publicUrl.origin !== window.location.origin) {
+      // Our service worker won't work if PUBLIC_URL is on a different origin
+      // from what our page is served on. This might happen if a CDN is used to
+      // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374
+      return;
+    }
+
+    window.addEventListener('load', () => {
+      const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;
+
+      if (!isLocalhost) {
+        // Is not local host. Just register service worker
+        registerValidSW(swUrl);
+      } else {
+        // This is running on localhost. Lets check if a service worker still exists or not.
+        checkValidServiceWorker(swUrl);
+      }
+    });
+  }
+}
+
+function registerValidSW(swUrl) {
+  navigator.serviceWorker
+    .register(swUrl)
+    .then(registration => {
+      registration.onupdatefound = () => {
+        const installingWorker = registration.installing;
+        installingWorker.onstatechange = () => {
+          if (installingWorker.state === 'installed') {
+            if (navigator.serviceWorker.controller) {
+              // At this point, the old content will have been purged and
+              // the fresh content will have been added to the cache.
+              // It's the perfect time to display a "New content is
+              // available; please refresh." message in your web app.
+              console.log('New content is available; please refresh.');
+            } else {
+              // At this point, everything has been precached.
+              // It's the perfect time to display a
+              // "Content is cached for offline use." message.
+              console.log('Content is cached for offline use.');
+            }
+          }
+        };
+      };
+    })
+    .catch(error => {
+      console.error('Error during service worker registration:', error);
+    });
+}
+
+function checkValidServiceWorker(swUrl) {
+  // Check if the service worker can be found. If it can't reload the page.
+  fetch(swUrl)
+    .then(response => {
+      // Ensure service worker exists, and that we really are getting a JS file.
+      if (
+        response.status === 404 ||
+        response.headers.get('content-type').indexOf('javascript') === -1
+      ) {
+        // No service worker found. Probably a different app. Reload the page.
+        navigator.serviceWorker.ready.then(registration => {
+          registration.unregister().then(() => {
+            window.location.reload();
+          });
+        });
+      } else {
+        // Service worker found. Proceed as normal.
+        registerValidSW(swUrl);
+      }
+    })
+    .catch(() => {
+      console.log(
+        'No internet connection found. App is running in offline mode.'
+      );
+    });
+}
+
+export function unregister() {
+  if ('serviceWorker' in navigator) {
+    navigator.serviceWorker.ready.then(registration => {
+      registration.unregister();
+    });
+  }
+}
diff --git a/src/routes.js b/src/routes.js
new file mode 100644
index 0000000000000000000000000000000000000000..b44e78ee7a2b82f87e445a26490b59fb8fcacfaf
--- /dev/null
+++ b/src/routes.js
@@ -0,0 +1,35 @@
+import { withRouter } from 'react-router-dom';
+
+export const publicRoutes = [
+  {
+    path: '/login',
+    component: Login,
+  },
+  {
+    path: '/register',
+    component: Register,
+  },
+  {
+    path: '/home',
+  },
+  {
+    path: '/news',
+  },
+  {
+    path: '/',
+  },
+  {
+    component: NotFound,
+  },
+];
+
+export const privateRoutes = [
+  {
+    path: '/home',
+    component: withRouter(Home),
+  },
+  {
+    path: '/store/details',
+    component: withRouter(Detail),
+  },
+]