Solved minor issue (Last activity not being saved)
diff --git a/erpnext/public/js/education/web-academy/components/ContentNavigation.vue b/erpnext/public/js/education/web-academy/components/ContentNavigation.vue
index a281f14..61e3988 100644
--- a/erpnext/public/js/education/web-academy/components/ContentNavigation.vue
+++ b/erpnext/public/js/education/web-academy/components/ContentNavigation.vue
@@ -2,7 +2,7 @@
 	<div class="nav-buttons">
 		<button class='btn btn-outline-secondary' @click="$router.go(-1)">Back</button>
 		<button v-if="nextContent" class='btn btn-primary' @click="goNext()">Next</button>
-		<button v-else class='btn btn-primary' @click="$router.push({ name: 'program', params: { code: $route.params.code}})">Finish Course</button>
+		<button v-else class='btn btn-primary' @click="finish()">Finish Course</button>
 	</div>
 </template>
 
@@ -21,6 +21,19 @@
 				}
 			})
 			this.$router.push({ name: 'content', params: { course: this.$route.params.course, type:this.nextContentType, content:this.nextContent }})
+		},
+		finish() {
+			if(this.$route.params.type != "Quiz"){
+				frappe.call({
+					method: "erpnext.www.academy.add_activity",
+					args: {
+						enrollment: this.$root.$data.enrolledCourses[this.$route.params.course],
+						content_type: this.$route.params.type,
+						content: this.$route.params.content
+					}
+				})
+			}
+			this.$router.push({ name: 'program', params: { code: this.$route.params.code}})
 		}
 	}
 };