Gamification by Design: Implementing Game Mechanics in Web and Mobile Apps