diff --git a/CHANGELOG b/CHANGELOG
index 8308b69321959e6c511db6bae315b0aafde309f8..5b86ae1c2a7f443df3bed1b565d93102dc01f942 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 Please view this file on the master branch, on stable branches it's out of date.
 
 v 8.1.0 (unreleased)
+  - Add user preference to view activities as default dashboard (Stan Hu)
   - Fix bug where projects would appear to be stuck in the forked import state (Stan Hu)
   - Fix Error 500 in creating merge requests with > 1000 diffs (Stan Hu)
   - Show CI status on all pages where commits list is rendered
diff --git a/app/controllers/root_controller.rb b/app/controllers/root_controller.rb
index 54171ff67c5e4d4b02748f482059ac55ff773372..ad04c646e1b031fe77083f3e725befdc1b536aff 100644
--- a/app/controllers/root_controller.rb
+++ b/app/controllers/root_controller.rb
@@ -22,6 +22,10 @@ class RootController < Dashboard::ProjectsController
     when 'stars'
       flash.keep
       redirect_to starred_dashboard_projects_path
+    when 'project_activity'
+      redirect_to activity_dashboard_path
+    when 'starred_project_activity'
+      redirect_to activity_dashboard_path(filter: 'starred')
     else
       return
     end
diff --git a/app/helpers/preferences_helper.rb b/app/helpers/preferences_helper.rb
index 7f1b6a6992676d532bcc9b35b42d1c8234ba392f..1b1f4162df41601fecc3d8216396c4c72269a646 100644
--- a/app/helpers/preferences_helper.rb
+++ b/app/helpers/preferences_helper.rb
@@ -3,7 +3,9 @@ module PreferencesHelper
   # Maps `dashboard` values to more user-friendly option text
   DASHBOARD_CHOICES = {
     projects: 'Your Projects (default)',
-    stars:    'Starred Projects'
+    stars:    'Starred Projects',
+    project_activity: "Your Projects' Activity",
+    starred_project_activity: "Starred Projects' Activity"
   }.with_indifferent_access.freeze
 
   # Returns an Array usable by a select field for more user-friendly option text
diff --git a/app/models/user.rb b/app/models/user.rb
index 25371f9138a04ff8ed4c594fe068e4ecb24bfd73..3879f3fd38123ea4079fb77220a7486683346f75 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -172,7 +172,7 @@ class User < ActiveRecord::Base
 
   # User's Dashboard preference
   # Note: When adding an option, it MUST go on the end of the array.
-  enum dashboard: [:projects, :stars]
+  enum dashboard: [:projects, :stars, :project_activity, :starred_project_activity]
 
   # User's Project preference
   # Note: When adding an option, it MUST go on the end of the array.
diff --git a/spec/controllers/root_controller_spec.rb b/spec/controllers/root_controller_spec.rb
index 64dfe8f34e30cadde01e53b872dde8e3406152b5..5a104ae7c99a193dc9eb7e9744a0f15f143d4769 100644
--- a/spec/controllers/root_controller_spec.rb
+++ b/spec/controllers/root_controller_spec.rb
@@ -10,7 +10,7 @@ describe RootController do
         allow(subject).to receive(:current_user).and_return(user)
       end
 
-      context 'who has customized their dashboard setting' do
+      context 'who has customized their dashboard setting for starred projects' do
         before do
           user.update_attribute(:dashboard, 'stars')
         end
@@ -21,6 +21,28 @@ describe RootController do
         end
       end
 
+      context 'who has customized their dashboard setting for project activities' do
+        before do
+          user.update_attribute(:dashboard, 'project_activity')
+        end
+
+        it 'redirects to the activity list' do
+          get :index
+          expect(response).to redirect_to activity_dashboard_path
+        end
+      end
+
+      context 'who has customized their dashboard setting for starred project activities' do
+        before do
+          user.update_attribute(:dashboard, 'starred_project_activity')
+        end
+
+        it 'redirects to the activity list' do
+          get :index
+          expect(response).to redirect_to activity_dashboard_path(filter: 'starred')
+        end
+      end
+
       context 'who uses the default dashboard setting' do
         it 'renders the default dashboard' do
           get :index
diff --git a/spec/helpers/preferences_helper_spec.rb b/spec/helpers/preferences_helper_spec.rb
index 06f69262b71a2773d0879f9b68bf68d6d5e5badb..e5df59c4fbaddf6eb3cee252ce12715763d0dc60 100644
--- a/spec/helpers/preferences_helper_spec.rb
+++ b/spec/helpers/preferences_helper_spec.rb
@@ -8,14 +8,18 @@ describe PreferencesHelper do
     end
 
     it 'raises an exception when defined choices may be using the wrong key' do
-      expect(User).to receive(:dashboards).and_return(foo: 'foo', bar: 'bar')
+      dashboards = User.dashboards.dup
+      dashboards[:projects_changed] = dashboards.delete :projects
+      expect(User).to receive(:dashboards).and_return(dashboards)
       expect { helper.dashboard_choices }.to raise_error(KeyError)
     end
 
     it 'provides better option descriptions' do
       expect(helper.dashboard_choices).to match_array [
         ['Your Projects (default)', 'projects'],
-        ['Starred Projects',        'stars']
+        ['Starred Projects',        'stars'],
+        ["Your Projects' Activity", 'project_activity'],
+        ["Starred Projects' Activity", 'starred_project_activity']
       ]
     end
   end