diff --git a/erpnext/education/doctype/student/student.py b/erpnext/education/doctype/student/student.py
index f7bce3a..69959ea 100644
--- a/erpnext/education/doctype/student/student.py
+++ b/erpnext/education/doctype/student/student.py
@@ -46,11 +46,11 @@
 
 	def get_course_enrollments(self):
 		"""Returns a list of course enrollments linked with the current student"""
-		course_enrollments = frappe.get_list("Course Enrollment", filters={"student": self.name}, fields=['name'])
+		course_enrollments = frappe.get_list("Course Enrollment", filters={"student": self.name}, fields=['course', 'name'])
 		if not course_enrollments:
 			return None
 		else:
-			enrollments = [item['name'] for item in course_enrollments]
+			enrollments = {item['course']:item['name'] for item in course_enrollments}
 			return enrollments
 
 	def get_program_enrollments(self):
diff --git a/erpnext/public/js/education/web-academy.js b/erpnext/public/js/education/web-academy.js
index 282a588..8608680 100644
--- a/erpnext/public/js/education/web-academy.js
+++ b/erpnext/public/js/education/web-academy.js
@@ -17,66 +17,55 @@
 
 var store = {
 	debug: true,
-	state: {
-		completedCourses: new Set(),
-		enrolledPrograms: new Set(),
-		enrolledCourses: new Set(),
-		currentEnrollment: '',
-		student: '',
-		isLogin: false
-	},
-
-	setCurrentEnrollment (enrollment) {
-	    if (this.debug) console.log('setCourseEnrollment triggered with', enrollment)
-	    this.state.currentEnrollment = enrollment
-	},
-
-	getCurrentEnrollment () {
-	    if (this.debug) console.log('getCourseEnrollment triggered')
-	    return this.state.currentEnrollment
-	},
+	isLogin: false,
+	completedCourses: new Set(),
+	enrolledPrograms: new Set(),
+	enrolledCourses: {},
 
 	addCompletedCourses (courseName){
 		if (this.debug) console.log('addCompletedCourses triggered with', courseName)
-		this.state.completedCourses.add(courseName)
+		this.completedCourses.add(courseName)
 	},
 
 	checkCourseCompletion (courseName){
-		return this.state.completedCourses.has(courseName)
+		return this.completedCourses.has(courseName)
 	},
 
 	checkProgramEnrollment (programName){
-		return this.state.enrolledPrograms.has(programName)
+		return this.enrolledPrograms.has(programName)
+	},
+
+	checkCourseEnrollment (courseName){
+		course = new Set(Object.keys(enrolledCourses))
+		return course.has(courseName)
 	},
 
 	updateEnrolledPrograms (){
 		if (this.debug) console.log('Updating enrolledPrograms')
 		frappe.call("erpnext.www.academy.get_program_enrollments").then( r => {
 			for(var ii=0; ii < r.message.length; ii++){
-				this.state.enrolledPrograms.add(r.message[ii])
+				this.enrolledPrograms.add(r.message[ii])
 			}
 		})
-		if (this.debug) console.log('Updated State', this.state.enrolledPrograms)
+		if (this.debug) console.log('Updated State', this.enrolledPrograms)
 	},
 
 	updateEnrolledCourses (){
 		if (this.debug) console.log('Updating enrolledCourses')
 		frappe.call("erpnext.www.academy.get_course_enrollments").then( r => {
-			for(var ii=0; ii < r.message.length; ii++){
-				this.state.enrolledCourses.add(r.message[ii])
-			}
+			this.enrolledCourses = r.message
 		})
-		if (this.debug) console.log('Updated State', this.state.enrolledCourses)
+		if (this.debug) console.log('Updated State', this.enrolledCourses)
 	},
 
 	updateCompletedCourses (){
 		if (this.debug) console.log('Updating States')
 		frappe.call("erpnext.www.academy.get_completed_courses").then( r => {
 			for(var ii=0; ii < r.message.length; ii++){
-				this.state.completedCourses.add(r.message[ii])
+				this.completedCourses.add(r.message[ii])
 			}
 		})
-		if (this.debug) console.log('Updated State', this.state.completedCourses)
+		if (this.debug) console.log('Updated State', this.completedCourses)
 	},
 
 	checkLogin (){
diff --git a/erpnext/public/js/education/web-academy/components/ContentNavigation.vue b/erpnext/public/js/education/web-academy/components/ContentNavigation.vue
index 87db221..a281f14 100644
--- a/erpnext/public/js/education/web-academy/components/ContentNavigation.vue
+++ b/erpnext/public/js/education/web-academy/components/ContentNavigation.vue
@@ -1,7 +1,7 @@
 <template>
 	<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="$router.push({ name: 'content', params: { course: $route.params.course, type:nextContentType, content:nextContent }})">Next</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>
 	</div>
 </template>
@@ -9,7 +9,20 @@
 <script>
 export default {
 	props: ['nextContent', 'nextContentType'],
-	name: 'ContentNavigation'
+	name: 'ContentNavigation',
+	methods: {
+		goNext() {
+			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: 'content', params: { course: this.$route.params.course, type:this.nextContentType, content:this.nextContent }})
+		}
+	}
 };
 </script>
 
diff --git a/erpnext/www/academy.py b/erpnext/www/academy.py
index 66874c6..9162b71 100644
--- a/erpnext/www/academy.py
+++ b/erpnext/www/academy.py
@@ -170,4 +170,16 @@
 		student = frappe.get_doc("Student", get_student_id(email))
 		return student.get_course_enrollments()
 	except:
-		return None
\ No newline at end of file
+		return None
+
+@frappe.whitelist()
+def add_activity(enrollment, content_type, content):
+	activity = frappe.get_doc({
+		"doctype": "Course Activity",
+		"enrollment": enrollment,
+		"content_type": content_type,
+		"content": content,
+		"activity_date": frappe.utils.datetime.datetime.now()
+		})
+	activity.save()
+	frappe.db.commit()
\ No newline at end of file
