diff --git a/app/models/user.rb b/app/models/user.rb
index ae740e609dc155ce5924f85f14812c1103b1edd5..4c360cd33fd4e63bbf35954f926421151e5c6e5f 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -79,6 +79,8 @@
 #  level                  :integer          default("1")
 #  points                 :integer          default("0")
 #  last_sign_in_day       :datetime
+#  last_action_at         :date
+#  streak                 :integer          default("0")
 
 class User < ApplicationRecord
   include Followable
@@ -385,6 +387,27 @@ class User < ApplicationRecord
     end
   end
 
+  def update_streak()
+    if self.last_action_at==Date.today
+      return
+    end
+    
+    # increase streak count
+    if self.last_action_at==Date.yesterday    
+      self.update(last_action_at: Date.today)
+      self.update(streak: streak+1)
+      return
+    end
+    
+    # restart streak count 
+    if Date.today - self.last_action_at >= 2
+      self.update(last_action_at: Date.today)
+      self.update(streak: 1)
+    end
+
+  end
+
+
   def complete_action(action, quantity=1)
     return false, { "error": "action not found"} if action.blank?
 
diff --git a/app/models/view.rb b/app/models/view.rb
index c18f1b5cb9927e57e2def31abb15b779dc454d0b..5fc4ef8b13b8dd2f58ffcd4ddf6fc077e182fbbb 100644
--- a/app/models/view.rb
+++ b/app/models/view.rb
@@ -62,6 +62,7 @@ class View < ApplicationRecord
     if !user.nil?
       if viewable_type == "LearningObject"
         user.complete_action(Action.find_by_name("Visualizar um Recurso"))
+        user.update_streak()
         viewable.subjects.each do |subject|
           user.complete_action(Action.find_by_name("Visualizar um Recurso de #{subject.name}"))
         end