diff --git a/app/controllers/v1/activities_controller.rb b/app/controllers/v1/activities_controller.rb
index 4df2c71f59a9a945317d8f01300d1be452312c41..4d2b7cca1fd972fdc403d1b7a17d8bf017106784 100644
--- a/app/controllers/v1/activities_controller.rb
+++ b/app/controllers/v1/activities_controller.rb
@@ -8,7 +8,7 @@ class V1::ActivitiesController < ApplicationController
   # Render all activities that logged user can see
   def index
     authorize :activity, :index?
-    activities = paginate current_user.activities
+    activities = paginate ::ActivityPolicy::Scope.new(current_user, ::PublicActivity::Activity).resolve
     render json: activities
   end
 
@@ -21,4 +21,10 @@ class V1::ActivitiesController < ApplicationController
     activities = paginate resource_model.activities
     render json: activities
   end
+
+  def me
+    authorize :activity, :index?
+    activities = paginate current_user.activities
+    render json: activities
+  end
 end
diff --git a/app/models/concerns/trackable.rb b/app/models/concerns/trackable.rb
index 3c7289986ac6cfcfc776cb183b86bd716db07771..f3ee59309230bf71a785b12a15410acff3058363 100644
--- a/app/models/concerns/trackable.rb
+++ b/app/models/concerns/trackable.rb
@@ -5,5 +5,6 @@ module Trackable
   included do
     tracked owner: proc { |controller, model| model.try(:user) || model.try(:owner) || controller.try(:current_user) }
     tracked recipient: proc { |_controller, model| model.try(:recipient) || model }
+    tracked privacy: proc { |_controller, model| model.try(:privacy) || "public" }
   end
 end
diff --git a/app/models/user.rb b/app/models/user.rb
index c5c74d9aa8d7b9a7159c15db6ac6456fb335156f..471b39b82e5eeaba1fac6aa768fa90dfa3bf794b 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -40,6 +40,10 @@ class User < ApplicationRecord
   include Tagger
   include Complainable
   include Publisher
+  include PublicActivity::Common
+
+  after_create -> { new_activity("create") }
+  after_update -> { new_activity("update") }
 
   # Include default devise modules. Others available are:
   # :confirmable, :lockable, :timeoutable and :omniauthable
@@ -193,4 +197,14 @@ class User < ApplicationRecord
       password: Devise.friendly_token[0, 20]
     )
   end
+
+  def new_activity(type)
+    should_create = true
+    if type == "update"
+      ignore = ["tokens", "sign_in_count", "current_sign_in_at", "last_sign_in_at", "updated_at"]
+      filtered = changed.reject { |x| ignore.include?(x) }
+      should_create = !filtered.empty?
+    end
+    self.create_activity key: 'user.'+type, trackable: self, owner: self, recipient: self, privacy: "public" if should_create
+  end
 end
diff --git a/app/policies/activity_policy.rb b/app/policies/activity_policy.rb
index 4a047168e4dbf5763ad93eaa763cc9f06d7e4d0c..cf550a904aefffe22da19d376b9afa393f382511 100644
--- a/app/policies/activity_policy.rb
+++ b/app/policies/activity_policy.rb
@@ -8,12 +8,7 @@ class ActivityPolicy < ApplicationPolicy
     end
 
     def resolve
-      raise StandardError, 'The user must be set.' if user.blank?
-      if user.is_admin?
-        scope.includes(:owner).order('created_at DESC').all
-      else
-        user.activities
-      end
+      scope.includes(:owner,:recipient).where("privacy = 'public'").order('created_at DESC').all
     end
   end
 
diff --git a/app/serializers/public_activity/activity_serializer.rb b/app/serializers/public_activity/activity_serializer.rb
index c7fd51fdcf5855c55209df4f610ec4d4b5a1ed79..107b5298364d7795bd6a8d42f4f6e3d7a3012edf 100644
--- a/app/serializers/public_activity/activity_serializer.rb
+++ b/app/serializers/public_activity/activity_serializer.rb
@@ -8,8 +8,8 @@ class PublicActivity::ActivitySerializer < ActiveModel::Serializer
   end
 
   cache key: 'activity', expires_in: 24.hours
-  attributes :id, :trackable_type, :activity, :recipient_type, :parameters, :created_at
-  
+  attributes :id, :trackable_type, :activity, :privacy, :recipient_type, :parameters, :created_at
+
   has_one :owner
   has_one :recipient
   has_one :trackable
diff --git a/config/routes.rb b/config/routes.rb
index b1c6258d0d68d0208b4853f23c6c4dccda89bd5d..0472a038b0880749716e765d85726f54ade7c6c6 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -126,6 +126,6 @@ Rails.application.routes.draw do
     post '/package', to: 'packages#link'
     get '/subjects', to: 'subjects#index'
     get '/educational_stages', to: 'educational_stages#index'
-
+    get '/activities/me', to: 'activities#me'
   end
 end
diff --git a/db/migrate/20161123114102_add_privacy_to_activities.rb b/db/migrate/20161123114102_add_privacy_to_activities.rb
new file mode 100644
index 0000000000000000000000000000000000000000..fc2f91a7c076ca359f84fe532d15ec1e70fd862c
--- /dev/null
+++ b/db/migrate/20161123114102_add_privacy_to_activities.rb
@@ -0,0 +1,6 @@
+class AddPrivacyToActivities < ActiveRecord::Migration[5.0]
+  def change
+    add_column :activities, :privacy, :string
+    add_index :activities, :privacy
+  end
+end