diff --git a/public/style.css b/public/style.css
new file mode 100644
index 0000000000000000000000000000000000000000..5b9993abe8a209887cfbbd3a1959bc6a720bb93e
--- /dev/null
+++ b/public/style.css
@@ -0,0 +1,24 @@
+#modal {
+  background-color: rgba(0, 0, 0, 0.4);
+  position: fixed;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  top: 0;
+  z-index: 10;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+#modal:empty {
+  display: none;
+}
+
+#modal > div {
+  background-color: #ffffff;
+  max-width: 500px;
+  padding: 10px;
+  border-radius: 5px;
+  text-align: center;
+}
diff --git a/src/core/App.tsx b/src/core/App.tsx
index 91934945bfaea6d8c8210ece4a269dd5332487e5..3053fbebcc45ce748e946faa7a9d2b45e4fb79f6 100644
--- a/src/core/App.tsx
+++ b/src/core/App.tsx
@@ -1,10 +1,10 @@
-import React, { useEffect, useState } from 'react';
+import React from 'react';
 import { BrowserRouter as Router } from 'react-router-dom';
 import styled from 'styled-components';
 import Footer from './components/Footer';
 import Header from './components/Header';
 import MainRouting from './components/MainRouting';
-import UserContext, { IProfile } from './context/UserContext';
+import { UserStateProvider } from './context/UserContext';
 
 const Container = styled.div`
   height: 100%;
@@ -18,23 +18,8 @@ const MainContent = styled.div`
 `;
 
 function App() {
-  const [user, setUser] = useState({ loggedIn: false, profile: {} as IProfile });
-
-  useEffect(() => {
-    fetch('/api/v1/users/me')
-      .then((response) => {
-        if (!response.ok) return false;
-        return response.json();
-      })
-      .then((profile) => {
-        if (profile) {
-          setUser({ loggedIn: true, profile });
-        }
-      });
-  }, []);
-
   return (
-    <UserContext.Provider value={user}>
+    <UserStateProvider>
       <Router>
         <Container>
           <Header />
@@ -44,7 +29,7 @@ function App() {
           <Footer />
         </Container>
       </Router>
-    </UserContext.Provider>
+    </UserStateProvider>
   );
 }
 
diff --git a/src/core/components/ContextTest.tsx b/src/core/components/ContextTest.tsx
index 6dcc599d9623150517d7908dbd8b5a5e5497ec1e..9d994730139d6225b551a1094ab97873ed548d87 100644
--- a/src/core/components/ContextTest.tsx
+++ b/src/core/components/ContextTest.tsx
@@ -1,10 +1,10 @@
 import React, { useContext } from 'react';
-import UserContext from '../context/UserContext';
+import { userContext } from '../context/UserContext';
 
 const ContextTest = () => {
-  const user = useContext(UserContext);
-  console.log(user.profile);
-  return <div>{user.loggedIn ? user.profile.name : 'Not logged in!'}</div>;
+  const { state: user } = useContext(userContext);
+  console.log(user.name);
+  return <div>{user ? user.name : 'Not logged in!'}</div>;
 };
 
 export default ContextTest;
diff --git a/src/core/context/UserContext.tsx b/src/core/context/UserContext.tsx
index c231730911a2aed4e60d3d6d0d78f1926b9755d8..d7f84377340ab90295155068e6a502dafc59623e 100644
--- a/src/core/context/UserContext.tsx
+++ b/src/core/context/UserContext.tsx
@@ -1,5 +1,6 @@
-import { createContext } from 'react';
+import React, { createContext, ReactNode, useReducer } from 'react';
 
+// Interface definitions
 interface IWarnings extends Document {
   text: string;
   date: Date;
@@ -26,6 +27,41 @@ export interface IProfile {
   warnings: [IWarnings] | [];
 }
 
-const UserContext = createContext({ loggedIn: false, profile: {} as IProfile });
+type Props = {
+  children: ReactNode;
+};
 
-export default UserContext;
+interface IContextProps {
+  state: IProfile;
+  dispatch: ({ type }: { type: string }) => void;
+}
+
+// Context
+const initialState = {
+  external_id: 'abcd',
+  studentCardNumber: '1234',
+  roomNumber: 104,
+  picture: 'alma.jpg',
+  role: Role.User,
+  email: 'alma@gmail.com',
+  name: 'Nagy Gizike',
+  warning: [],
+};
+export const userContext = createContext({} as IContextProps);
+const { Provider } = userContext;
+
+export const UserStateProvider: React.FunctionComponent<Props> = (props: Props) => {
+  const { children } = props;
+  const [state, dispatch] = useReducer((prevState: any, action: any) => {
+    switch (action.type) {
+      case 'update':
+        return action.payload;
+      default:
+        return prevState; // do nothing
+    }
+  }, initialState);
+
+  return <Provider value={{ state, dispatch }}>{children}</Provider>;
+};
+
+export default { userContext, UserStateProvider };