diff --git a/scripts/migration/savedCourses-migration.ts b/scripts/migration/savedCourses-migration.ts
new file mode 100644
index 000000000..0eae10b9e
--- /dev/null
+++ b/scripts/migration/savedCourses-migration.ts
@@ -0,0 +1,31 @@
+/* eslint-disable no-console */
+
+import { usernameCollection, semestersCollection } from '../firebase-config';
+
+/**
+ * Perform migration of a default The 'All' Collection for All Courses saved
+ */
+async function runOnUser(userEmail: string) {
+ const courses = [] as object;
+ await semestersCollection.doc(userEmail).update({
+ savedCourses: [{ name: 'All', courses }],
+ });
+}
+
+async function main() {
+ const userEmail = process.argv[2];
+ if (userEmail != null) {
+ await runOnUser(userEmail);
+ return;
+ }
+ const collection = await usernameCollection.get();
+ for (const { id } of collection.docs) {
+ console.group(`Running on ${id}...`);
+ // Intentionally await in a loop to have no interleaved console logs.
+ // eslint-disable-next-line no-await-in-loop
+ await runOnUser(id);
+ console.groupEnd();
+ }
+}
+
+main();
diff --git a/src/assets/images/dropdown.svg b/src/assets/images/dropdown.svg
new file mode 100644
index 000000000..40bbb0109
--- /dev/null
+++ b/src/assets/images/dropdown.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/assets/images/navbar/savedCoursesIcon.svg b/src/assets/images/navbar/savedCoursesIcon.svg
new file mode 100644
index 000000000..d83b2998c
--- /dev/null
+++ b/src/assets/images/navbar/savedCoursesIcon.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/assets/images/navbar/savedCoursesIconBlue.svg b/src/assets/images/navbar/savedCoursesIconBlue.svg
new file mode 100644
index 000000000..372e8d7c7
--- /dev/null
+++ b/src/assets/images/navbar/savedCoursesIconBlue.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/assets/images/plus.svg b/src/assets/images/plus.svg
new file mode 100644
index 000000000..e1c6a5c79
--- /dev/null
+++ b/src/assets/images/plus.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/assets/images/saveIconBig.svg b/src/assets/images/saveIconBig.svg
new file mode 100644
index 000000000..df5eee259
--- /dev/null
+++ b/src/assets/images/saveIconBig.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/assets/images/saveIconSmall.svg b/src/assets/images/saveIconSmall.svg
new file mode 100644
index 000000000..19f43c53f
--- /dev/null
+++ b/src/assets/images/saveIconSmall.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/assets/images/trash-gray.svg b/src/assets/images/trash-gray.svg
new file mode 100644
index 000000000..0a6966bed
--- /dev/null
+++ b/src/assets/images/trash-gray.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/assets/scss/_variables.scss b/src/assets/scss/_variables.scss
index 4754af753..b98805b88 100644
--- a/src/assets/scss/_variables.scss
+++ b/src/assets/scss/_variables.scss
@@ -17,6 +17,7 @@ $offWhite: #f8f8f8;
$searchBoxWhite: #f1f1f1;
$veryLightGray: #e5e5e5;
$lightGray: #acacac;
+$lightestGray: #e0e0e0;
$viewLabelGray: #7e7e7e80;
$medGray: #737373;
$darkGray: #3c3c3c;
diff --git a/src/components/Course/Course.vue b/src/components/Course/Course.vue
index 03736dd14..907d4886d 100644
--- a/src/components/Course/Course.vue
+++ b/src/components/Course/Course.vue
@@ -7,6 +7,13 @@
}"
class="course"
>
+
-