@startuml MetaCourse

skinparam classBackgroundColor #ADD8E6
skinparam classBorderColor #336699
skinparam classHeaderBackgroundColor #4A90D9
skinparam classHeaderFontColor #FFFFFF
skinparam ArrowColor #336699
skinparam linetype ortho

class User {
  -id : Guid
  -name : string
  -email : string
  -passwordHash : string
  -createdAt : DateTime
}

class Course {
  -id : Guid
  -title : string
  -description : string
  -status : string
  -createdAt : DateTime
  -updatedAt : DateTime
}

class Topic {
  -id : Guid
  -title : string
  -description : string
  -position : int
}

class Resource {
  -id : Guid
  -type : string
  -title : string
  -content : string
  -createdAt : DateTime
}

class UserCourse {
  -enrolledAt : DateTime
  -completedAt : DateTime
}

class TopicResource {
  -position : int
}

class UserTopicProgress {
  -completed : bool
  -completedAt : DateTime
}

class UserResourceProgress {
  -completed : bool
  -completedAt : DateTime
}

User "1" --> "0..*" Course : crée
User "0..*" -- "0..*" Course : inscription
(User, Course) .. UserCourse

Course "1" *-- "0..*" Topic
Topic "0..*" -- "0..*" Resource
(Topic, Resource) .. TopicResource

User "0..*" -- "0..*" Topic
(User, Topic) .. UserTopicProgress

User "0..*" -- "0..*" Resource
(User, Resource) .. UserResourceProgress

@enduml
