Skip to content

Achievements and gamifcation #135

@jjasloot

Description

@jjasloot

OVDB Achievement System

This PR introduces a gamification system to OVDB through achievements and medals. The goal is to provide users with additional motivation to log their trips and explore new routes, stations, and transport types.

The concepts and especially the values are not entirely fleshed out so it should be easy to change. It's important to not make it too intrusive but still make it interesting for the users.

If it helps you can give me a mysql query to run to assemble the current value for the different users

Features

  • Achievement system with multiple categories
  • Visual medals/badges for completed achievements
  • Achievement progress tracking
  • Achievement showcase on user profiles

Implementation Overview

The implementation consists of:

  1. Backend services for tracking and awarding achievements
  2. Database schema updates to store achievements
  3. UI components to display achievements and progress
  4. API endpoints for achievement data

Achievement System Design

Overview

The achievement system adds gamification elements to OVDB by rewarding users for various milestones and activities. The system is designed to be:

  • Motivational but not overwhelming: Achievements should feel rewarding but not dictate user behavior
  • Diverse: Catering to different play styles (distance collectors, completionists, explorers)
  • Scalable: Easy to add new achievements as the platform evolves

Achievement Categories

1. Distance Achievements

Rewards for accumulating travel distance:

Level Name Overall Distance Per Transport Type
Bronze Commuter 1,000 km 500 km
Silver Voyager 10,000 km 5,000 km
Gold Globetrotter 50,000 km 20,000 km
Platinum Cosmic Explorer 100,000 km 40,000 km
Diamond Interstellar Traveler 500,000 km 100,000 km

2. Explorer Achievements

Rewards for visiting different locations:

Achievement Description Criteria
Local Explorer Visit stations in your home region 25/50/100 stations
Regional Collector Visit different regions in your country 5/10/25 regions
Country Hopper Visit different countries 3/5/10/25 countries
Continental Explorer Visit stations on different continents 2/3/5/All continents

3. Station Collector Achievements

Rewards for visiting unique stations:

Achievement Description Criteria
Station Sampler Visit unique stations 10/50/100/500 stations
Terminal Master Visit major terminals/hubs 5/10/25/50 major stations

4. Transport Diversity Achievements

Rewards for using different transport types:

Achievement Description Criteria
Transport Enthusiast Use different transport types 3/5/7/10 types
Multimodal Master Complete a journey using multiple transport types 2/3/4/5 types in one day

5. Special Achievements

Achievement Description Criteria
Night Owl Log trips during late hours 10 trips between 11pm-5am
Early Bird Log trips during early morning 10 trips between 5am-7am
Weekend Explorer Log trips on weekends 10 consecutive weekend trips
Seasonal Traveler Log trips in all seasons At least 5 trips in each season

Visual Design

Achievements should have:

  1. A distinctive icon (SVG format for scalability)
  2. Clear title and description
  3. Progress indicator for multi-level achievements
  4. Consistent color scheme based on rarity/difficulty

Example visual hierarchy:

  • Bronze: Brown/bronze color with simple design
  • Silver: Silver/gray color with more detailed design
  • Gold: Gold/yellow color with elaborate design
  • Platinum: Light blue/white with complex design
  • Diamond: Blue/white with animated elements (optional)

User Experience

  • New achievements appear as notifications
  • Achievements page shows all available achievements and progress
  • User profiles can showcase selected achievements
  • Leaderboards could show top achievers (optional feature)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions