diff --git a/src/components/pages/ModuleOverview/index.tsx b/src/components/pages/ModuleOverview/index.tsx
index d7ea141efc59cdaa262faeb8100f90f5f9987513..7783bcea75daaed9904d1ce1d0c831f6de32d995 100644
--- a/src/components/pages/ModuleOverview/index.tsx
+++ b/src/components/pages/ModuleOverview/index.tsx
@@ -1,69 +1,116 @@
-import React from "react";
+import React, { useEffect, useState } from "react";
 import Dandruff from "components/molecules/Dandruff";
 import { useParams } from "react-router-dom";
 import styles from "./style.module.scss";
 import classNames from "classnames";
 import { faGlobe, faLink } from "@fortawesome/free-solid-svg-icons";
 import PageButtonGroup from "components/molecules/PageButtonGroup";
+import { request } from "../../../utils/api";
+import { api, methods } from "../../../constants/routes";
 
 const ModuleOverview: React.FC = () => {
   let { id } = useParams();
   let moduleCode = id.startsWith("CO") ? id.slice(2) : id;
-  const buttons = [
+  const initialButtons = [
     {
       title: "College Website",
       icon: faGlobe,
-      url: `https://www.imperial.ac.uk/computing/current-students/courses/${moduleCode}/`
+      url: `https://www.imperial.ac.uk/computing/current-students/courses/${moduleCode}/`,
     },
-    {
-      title: "Materials Link 1",
-      icon: faLink,
-      url: `https://www.doc.ic.ac.uk/~wl/teachlocal/arch/`
-    },
-    {
-      title: "Materials Link 2",
-      icon: faLink,
-      url: "http://wp.doc.ic.ac.uk/bkainz/teaching/co112-hardware/"
-    }
   ];
+  let [buttons, setButtons] = useState(initialButtons);
+
+  useEffect(() => {
+    const onSuccess = (data: { json: () => Promise<any> }) => {
+      let newButtons: any[] = [];
+
+      data.json().then((json) => {
+        for (const key in json) {
+          let resource = json[key];
+          if (resource.type !== "link") continue;
+
+          newButtons.push({
+            title: resource.title,
+            icon: faLink,
+            url: resource.path,
+          });
+        }
+        setButtons((b) => b.concat(newButtons));
+      });
+    };
+    request(
+      api.MATERIALS_RESOURCES,
+      methods.GET,
+      onSuccess,
+      () => {
+        console.log("fail");
+      },
+      {
+        year: "2021",
+        course: moduleCode,
+      }
+    );
+  }, [moduleCode]);
+
+  return (
+    <>
+      <Dandruff heading={generateHeading(id)} />
+
+      <h4 className={classNames(styles.moduleSectionHeader)}>Description</h4>
+      <p>
+        Since students don't need to see the full course information everytime
+        they click open a module, instead of making a copy of the college
+        website here in Scientia, we could add links to the relavant site below,
+        and only fetch or generate a short description to place here. The rest
+        of this page could be used for something useful like Sudar's timeline
+        idea and links to lecture's websites (which we could fetch from the
+        links they provided in materials).
+      </p>
+
+      <h4 className={classNames(styles.moduleSectionHeader)}>Links</h4>
+      <PageButtonGroup buttons={buttons} style={{ marginTop: "1.25rem" }} />
+    </>
+  );
+};
 
+function generateHeading(id: string) {
   let modules = [
     {
       title: "Introduction to Logic",
-      code: "CO140"
+      code: "CO140",
     },
     {
       title: "Discrete Mathematics",
-      code: "CO142"
+      code: "CO142",
     },
     {
       title: "Introduction to Computer Systems",
-      code: "CO112"
+      code: "CO112",
     },
     {
       title: "Mathematical Methods",
-      code: "CO145"
+      code: "CO145",
     },
     {
       title: "Java",
-      code: "CO120.2"
+      code: "CO120.2",
     },
     {
       title: "Graphs and Algorithms",
-      code: "CO150"
+      code: "CO150",
     },
     {
       title: "Introduction to Computer Architecture",
-      code: "CO113"
+      code: "CO113",
     },
     {
       title: "Reasoning About Programs",
-      code: "CO141"
+      code: "CO141",
     },
     {
       title: "Introduction to Databases",
-      code: "CO130"
-    }
+      code: "CO130",
+    },
   ];
   let heading = id;
   for (let i in modules) {
@@ -72,25 +119,7 @@ const ModuleOverview: React.FC = () => {
       break;
     }
   }
-  return (
-    <>
-      <Dandruff heading={heading} />
-
-      <h4 className={classNames(styles.moduleSectionHeader)}>Description</h4>
-      <p>
-        Since students don't need to see the full course information everytime
-        they click open a module, instead of making a copy of the college
-        website here in Scientia, we could add links to the relavant site below,
-        and only fetch or generate a short description to place here. The rest
-        of this page could be used for something useful like Sudar's timeline
-        idea and links to lecture's websites (which we could fetch from the
-        links they provided in materials).
-      </p>
-
-      <h4 className={classNames(styles.moduleSectionHeader)}>Links</h4>
-      <PageButtonGroup buttons={buttons} style={{ marginTop: "1.25rem" }} />
-    </>
-  );
-};
+  return heading;
+}
 
 export default ModuleOverview;