diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx
index e0f45c1a0c3764093887865048d34d6a3a963554..4cd8e405c1f5e28edee19bbf47fa0768eec30c30 100644
--- a/frontend/src/App.tsx
+++ b/frontend/src/App.tsx
@@ -1,18 +1,39 @@
-import { routes } from './routes';
 import { createBrowserRouter, RouterProvider } from 'react-router-dom';
-
+import { useState, useEffect } from 'react';
+import { BucketInfo } from './models/bucket';
+import { routes } from './routes';
+import APIService from './services/APIService';
+import { BucketsListContext } from './services/BucketListContext';
 
 function App() {
+
+  const [isAuthenticated, setIsAuthenticated] = useState(false);
+  const [bucketList, setBucketLists] = useState<BucketInfo[]>([]);
+
+  useEffect(() => {
+    setIsAuthenticated(APIService.isAuthenticated());
+    APIService
+      .get("buckets")
+      .then(data => {
+        const buckets: BucketInfo[] = data["buckets"];
+        console.log(`Fetched ${buckets.length} buckets`);
+        setBucketLists(buckets);
+      });
+  }, [isAuthenticated]);
+
+
   const router = createBrowserRouter(routes.map(route => {
     return {
       path: route.path,
       element: route.element
     }
-  }));
+  }))
 
   return (
     <div className="flex mb-4">
-      <RouterProvider router={router} />
+      <BucketsListContext.Provider value={bucketList}>
+        <RouterProvider router={router} />
+      </BucketsListContext.Provider>
     </div>
   )
 }
diff --git a/frontend/src/routes/Buckets/index.tsx b/frontend/src/routes/Buckets/index.tsx
index 6b60f7d1f064aca12f62792d4ff6a217d93a63ea..71aee77dde794004b20c2da6ed0225fa57442e06 100644
--- a/frontend/src/routes/Buckets/index.tsx
+++ b/frontend/src/routes/Buckets/index.tsx
@@ -1,8 +1,8 @@
-import { useState } from 'react';
+import { useContext } from 'react';
 import { Page } from '../../components/Page';
-import APIService from "../../services/APIService";
 import { getHumanSize } from '../../commons/utils';
 import { BucketInfo } from '../../models/bucket';
+import { BucketsListContext } from '../../services/BucketListContext';
 
 const BucketView = (bucketInfo: BucketInfo) => {
   const creationDate = new Date(bucketInfo.creation_date);
@@ -18,25 +18,16 @@ const BucketView = (bucketInfo: BucketInfo) => {
 }
 
 export const Buckets = () => {
-  const [isFirstRender, setIsFirstRender] = useState(true);
-  const [buckestList, setBucketLists] = useState<BucketInfo[]>([]);
-
-  if (isFirstRender) {
-    setIsFirstRender(false);
-    APIService.get("buckets")
-      .then(data => {
-        setBucketLists(data["buckets"]);
-      });
-  }
+  const bucketList = useContext(BucketsListContext);
 
   return (
     <Page title='Buckets'>
-      {buckestList ? buckestList.map(bucketInfo =>
+      {bucketList.map(bucketInfo =>
         <BucketView
           key={bucketInfo.name + bucketInfo.creation_date}
           {...bucketInfo}
         />
-      ) : null}
+      )}
     </Page>
   )
 }
\ No newline at end of file
diff --git a/frontend/src/routes/Home/index.tsx b/frontend/src/routes/Home/index.tsx
index a001a0c3bd7a9ecbece8937c0afa3cd2fec3c0b3..f563dc5106850e3d75c931314dd83bd26efbbffc 100644
--- a/frontend/src/routes/Home/index.tsx
+++ b/frontend/src/routes/Home/index.tsx
@@ -1,39 +1,39 @@
 import { Page } from '../../components/Page';
 import { Table } from '../../components/Table';
-import './index.css';
-import { useState } from 'react';
+import { useContext } from 'react';
 import { BucketInfo } from '../../models/bucket';
-import APIService from '../../services/APIService';
 import { getHumanSize, parseReadWriteAccess } from '../../commons/utils';
-
+import { BucketsListContext } from '../../services/BucketListContext';
+import './index.css';
 
 export const Home = () => {
 
-  const [isFirstRender, setIsFirstRender] = useState(true);
-  const [bucketList, setBucketLists] = useState<BucketInfo[][]>([]);
+  const onClick = (element: React.MouseEvent<HTMLTableRowElement>, index: number) => {
+    const bucketName = element.currentTarget.firstChild?.textContent;
+    console.log(bucketName);
+  }
 
   const columns = ["Bucket", "Objects", "Size", "Access"];
 
-  if (isFirstRender) {
-    setIsFirstRender(false);
-    APIService.get("buckets")
-      .then(data => {
-        setBucketLists(data["buckets"].map((bucket: BucketInfo) => {
-          return [
-            bucket.name,
-            bucket.objects,
-            getHumanSize(bucket.size),
-            parseReadWriteAccess(bucket.rw_access)
-          ]
-        }));
-      });
-  }
+  const bucketList = useContext(BucketsListContext).map((bucket: BucketInfo) => {
+    return [
+      bucket.name,
+      bucket.objects,
+      getHumanSize(bucket.size),
+      parseReadWriteAccess(bucket.rw_access)
+    ]
+  });
 
   return (
     <Page title="Home">
       <div className="Home">
         <div className="flex place-content-center">
-        <Table className="table-auto w-2/3" columns={columns} data={bucketList} />
+          <Table
+            className="table-auto w-2/3"
+            columns={columns}
+            data={bucketList}
+            onClick={onClick}
+          />
         </div>
       </div>
     </Page>
diff --git a/frontend/src/services/BucketListContext.tsx b/frontend/src/services/BucketListContext.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..28f1726c4e8585ba10575907ec65c62577775656
--- /dev/null
+++ b/frontend/src/services/BucketListContext.tsx
@@ -0,0 +1,4 @@
+import { createContext } from "react";
+import { BucketInfo } from "../models/bucket";
+
+export const BucketsListContext = createContext<BucketInfo[]>([]);