@startuml

skinparam {
  Style StrictUML

  ' make the stereotypes less ugly
  ClassStereotypeFont {
    Size 10
    Style plain
  }

  ' make boxes slightly less pointy
  RoundCorner 5

  ' make everything slightly less cramped
  Padding 2

  ' vertical spacing (make room for labels)
  RankSep 100

  ' horizontal spacing (make room for labels)
  NodeSep 120
}

'The students who will use the app
class "Student" as student {
* StudentId
--
* Username
* Password
* Email
* Subjects
* Major
* Intrests
}

'Represents the tutors present on the app
class "Tutor" as tutor{
* StaffId
--
* Email
* Subjects
* Username
* Password
* Avalability
}

'Stores results when a match is made 
'Should staffId be there as an optional thing?
class "Match" as match{
  *StudentId
  --
  StaffId 
}

'This represents messages between one user and another a DM
class "Message" as msg {
  * MessageId
  --
  * SenderId
  * RecipientId
  * Content
  * Timestamp
}


'This is the group chat aspect where multiple tutors and students can be present
class "ChatRoom" as room {
  * RoomId
  --
  * StudentId
  * Messages
  TutorId
}

'For when the student needs to upload/ share their study docs
class "Documents" as docs {
  * StudentId
  --
  * Content
  * Subject
}




student }o--o{ room
student }o--o{ docs
tutor }o--o{ room
student ||--o{ msg
tutor ||--o{ msg
student }o--o{ match


@enduml
