I would look at using an in-memory cache (e.g. Redis) to store stats about the content (views, likes, shares, etc.). You can persist the cache data to your db on a set interval (daily or hourly if you like). You could then start analyzing trends (e.g. hot this week, this month, all time, etc.). Laracasts.com has several great videos explaining how to use Redis for this exact use case. https://laracasts.com/index/redis Best of luck!