Here are the UML use case diagrams for your fitness tracker application, converted from Mermaid to PlantUML format.
@startuml "Training Program Management"
skinparam actorStyle awesome
skinparam packageStyle rectangle
skinparam usecaseBorderColor #33A5FF
skinparam usecaseBackgroundColor #F5F7F9
skinparam actorBorderColor #33A5FF
skinparam actorBackgroundColor #F5F7F9
title "EPIC 1: TRAINING PROGRAM MANAGEMENT"
actor User
rectangle "Fitness Tracker System" {
usecase "Browse Workout Programs" as BrowsePrograms
usecase "Filter & Sort Programs" as FilterPrograms
usecase "View Program Details" as ViewProgramDetails
usecase "View Exercise Demonstrations" as ViewExerciseDemos
usecase "Start Workout Session" as StartWorkout
usecase "Follow Step-by-Step Instructions" as FollowWorkoutInstructions
usecase "Track Workout Progress" as TrackWorkoutProgress
usecase "Pause/Resume Workout" as PauseWorkout
usecase "Save Workout State" as SaveWorkoutState
}
User --> BrowsePrograms
User --> FilterPrograms
User --> ViewProgramDetails
User --> StartWorkout
User --> PauseWorkout
FilterPrograms ..> BrowsePrograms : <<extends>>
ViewExerciseDemos ..> ViewProgramDetails : <<extends>>
ViewProgramDetails ..> BrowsePrograms : <<extends>>
FollowWorkoutInstructions ..> StartWorkout : <<extends>>
TrackWorkoutProgress ..> FollowWorkoutInstructions : <<extends>>
SaveWorkoutState ..> PauseWorkout : <<extends>>
TrackWorkoutProgress ..> SaveWorkoutState : <<includes>>
@enduml@startuml "Progress Tracking and Analysis"
skinparam actorStyle awesome
skinparam packageStyle rectangle
skinparam usecaseBorderColor #33A5FF
skinparam usecaseBackgroundColor #F5F7F9
skinparam actorBorderColor #33A5FF
skinparam actorBackgroundColor #F5F7F9
title "EPIC 2: PROGRESS TRACKING AND ANALYSIS"
actor User
rectangle "Fitness Tracker System" {
usecase "Record Exercise Performance" as RecordPerformance
usecase "View Workout History" as ViewWorkoutHistory
usecase "View Training Statistics" as ViewStatistics
usecase "Visualize Performance Progress" as VisualizeProgress
usecase "Compare with Previous Performance" as CompareWithPrevious
usecase "Set Fitness Goals" as SetGoals
usecase "Track Goal Progress" as TrackGoalProgress
usecase "Receive Feedback & Insights" as ReceiveFeedback
}
User --> RecordPerformance
User --> ViewWorkoutHistory
User --> VisualizeProgress
User --> SetGoals
User --> TrackGoalProgress
ViewStatistics ..> ViewWorkoutHistory : <<extends>>
CompareWithPrevious ..> RecordPerformance : <<extends>>
ReceiveFeedback ..> VisualizeProgress : <<extends>>
ReceiveFeedback ..> TrackGoalProgress : <<extends>>
@enduml@startuml "Free-Form Workouts"
skinparam actorStyle awesome
skinparam packageStyle rectangle
skinparam usecaseBorderColor #33A5FF
skinparam usecaseBackgroundColor #F5F7F9
skinparam actorBorderColor #33A5FF
skinparam actorBackgroundColor #F5F7F9
title "EPIC 3: CREATION AND MANAGEMENT OF FREE-FORM WORKOUTS"
actor User
rectangle "Fitness Tracker System" {
usecase "Create Custom Workout" as CreateCustomWorkout
usecase "Search Exercise Library" as SearchExercises
usecase "Configure Exercise Parameters" as ConfigureExercises
usecase "Receive Exercise Suggestions" as ReceiveSuggestions
usecase "Modify Active Workout" as ModifyActiveWorkout
usecase "Add Exercises During Workout" as AddExercises
usecase "Remove Exercises During Workout" as RemoveExercises
usecase "Save as Custom Template" as SaveCustomTemplate
}
User --> CreateCustomWorkout
User --> SearchExercises
User --> ConfigureExercises
User --> ModifyActiveWorkout
User --> SaveCustomTemplate
SearchExercises <.. CreateCustomWorkout : <<includes>>
ConfigureExercises <.. CreateCustomWorkout : <<includes>>
ReceiveSuggestions ..> CreateCustomWorkout : <<extends>>
AddExercises ..> ModifyActiveWorkout : <<extends>>
RemoveExercises ..> ModifyActiveWorkout : <<extends>>
@enduml@startuml "Customization of Workout Programs"
skinparam actorStyle awesome
skinparam packageStyle rectangle
skinparam usecaseBorderColor #33A5FF
skinparam usecaseBackgroundColor #F5F7F9
skinparam actorBorderColor #33A5FF
skinparam actorBackgroundColor #F5F7F9
title "EPIC 4: CUSTOMIZATION OF WORKOUT PROGRAMS"
actor User
rectangle "Fitness Tracker System" {
usecase "Modify Existing Program" as ModifyProgram
usecase "Change Exercise Order" as ChangeExerciseOrder
usecase "Adjust Sets & Repetitions" as AdjustSetsReps
usecase "Replace Exercises" as ReplaceExercises
usecase "Find Alternative Exercises" as FindAlternatives
usecase "Filter by Available Equipment" as FilterByEquipment
usecase "Duplicate Program" as DuplicateProgram
usecase "Share Custom Program" as ShareProgram
usecase "Merge Programs" as MergePrograms
}
User --> ModifyProgram
User --> ReplaceExercises
User --> DuplicateProgram
User --> ShareProgram
User --> MergePrograms
ChangeExerciseOrder ..> ModifyProgram : <<extends>>
AdjustSetsReps ..> ModifyProgram : <<extends>>
FindAlternatives <.. ReplaceExercises : <<includes>>
FilterByEquipment ..> FindAlternatives : <<extends>>
@enduml@startuml "Exercise Library and Management"
skinparam actorStyle awesome
skinparam packageStyle rectangle
skinparam usecaseBorderColor #33A5FF
skinparam usecaseBackgroundColor #F5F7F9
skinparam actorBorderColor #33A5FF
skinparam actorBackgroundColor #F5F7F9
title "EPIC 5: EXERCISE LIBRARY AND MANAGEMENT"
actor User
rectangle "Fitness Tracker System" {
usecase "Browse Exercise Library" as BrowseExercises
usecase "Filter Exercises" as FilterExercises
usecase "Mark Favorite Exercises" as MarkFavorites
usecase "Create Custom Collections" as CreateCollection
usecase "View Exercise Tutorials" as ViewTutorials
usecase "Access Safety Guidelines" as AccessSafetyInfo
usecase "Suggest New Exercise" as SuggestNewExercise
usecase "View Muscle Visualizations" as ViewMuscleVisualizations
usecase "Save Search Filters" as SaveSearchFilters
}
User --> BrowseExercises
User --> FilterExercises
User --> MarkFavorites
User --> CreateCollection
User --> ViewTutorials
User --> AccessSafetyInfo
User --> SuggestNewExercise
User --> ViewMuscleVisualizations
SaveSearchFilters ..> FilterExercises : <<extends>>
ViewTutorials ..> BrowseExercises : <<extends>>
AccessSafetyInfo ..> ViewTutorials : <<extends>>
@enduml@startuml "Fitness Tracker App - Main Use Cases"
skinparam actorStyle awesome
skinparam packageStyle rectangle
skinparam usecaseBorderColor #33A5FF
skinparam usecaseBackgroundColor #F5F7F9
skinparam actorBorderColor #33A5FF
skinparam actorBackgroundColor #F5F7F9
title "FITNESS TRACKER APP - MAIN USE CASES"
actor User
rectangle "Program Management" {
usecase "Browse Programs" as BrowsePrograms
usecase "Start Workout" as StartWorkout
usecase "Pause/Resume Workout" as PauseWorkout
}
rectangle "Progress Tracking" {
usecase "Record Performance" as RecordPerformance
usecase "View Statistics" as ViewStats
usecase "Set Goals" as SetGoals
}
rectangle "Custom Workouts" {
usecase "Create Custom Workout" as CreateWorkout
usecase "Modify Active Workout" as ModifyWorkout
}
rectangle "Customization" {
usecase "Edit Program" as EditProgram
usecase "Replace Exercises" as ReplaceExercises
usecase "Share Program" as ShareProgram
}
rectangle "Exercise Library" {
usecase "Browse Exercises" as BrowseExercises
usecase "View Tutorials" as ViewTutorials
usecase "Manage Favorites" as ManageFavorites
}
User --> BrowsePrograms
User --> StartWorkout
User --> PauseWorkout
User --> RecordPerformance
User --> ViewStats
User --> SetGoals
User --> CreateWorkout
User --> ModifyWorkout
User --> EditProgram
User --> ReplaceExercises
User --> ShareProgram
User --> BrowseExercises
User --> ViewTutorials
User --> ManageFavorites
BrowseExercises <.. CreateWorkout : <<used by>>
BrowseExercises <.. ReplaceExercises : <<uses>>
StartWorkout <.. RecordPerformance : <<follows>>
@endumlHere’s an example of converting one of your key sequence diagrams to PlantUML:
@startuml "Starting and Completing a Workout"
skinparam sequenceArrowThickness 2
skinparam roundcorner 20
skinparam maxmessagesize 100
skinparam sequenceParticipant underline
actor User
participant "User Interface" as UI
participant "Workout Manager" as WM
participant "Database" as DB
participant "Workout Timer" as Timer
User -> UI : Select workout program
UI -> WM : getWorkoutDetails(programId)
WM -> DB : fetchWorkoutProgram(programId)
DB --> WM : return program details
WM --> UI : display program overview
User -> UI : Tap "Start Workout"
UI -> WM : startWorkout(programId)
WM -> DB : createWorkoutSession(programId, timestamp)
DB --> WM : return sessionId
WM -> Timer : startWorkoutTimer()
Timer --> UI : update timer display
UI --> User : display first exercise
loop For each exercise
UI --> User : show exercise details
User -> UI : Perform exercise and record sets
UI -> WM : logExerciseSet(weight, reps, rpe)
WM -> DB : saveSetData(exerciseId, weight, reps, rpe)
UI --> User : show rest timer
note over User, UI : Wait for rest period
User -> UI : Tap "Next Exercise"
UI -> WM : advanceToNextExercise()
WM --> UI : return next exercise
end
User -> UI : Tap "Complete Workout"
UI -> WM : finishWorkout(sessionId)
WM -> Timer : stopWorkoutTimer()
WM -> DB : updateSessionStatus(sessionId, "completed")
WM -> DB : saveWorkoutDuration(sessionId, duration)
DB --> WM : confirm save
WM --> UI : display workout summary
UI --> User : show completion stats and achievements
@endumlE. Bruno - ?meta:title