Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create the Class Diagrams #56

Open
4 tasks
SouthAscend opened this issue Mar 8, 2025 · 4 comments
Open
4 tasks

Create the Class Diagrams #56

SouthAscend opened this issue Mar 8, 2025 · 4 comments
Assignees
Labels
new This is a new issue priority: moderate Needs to be completed in a week type: documentation This issue is about documentation type: planning This issue is about planning type: wiki This issue is about the wiki page workload: high 3+ hours per week

Comments

@SouthAscend
Copy link
Contributor

SouthAscend commented Mar 8, 2025

Issue Description

Provide a description

Tasks

  • Determine Potential Classes
  • Determine Needed Functions
  • Determine Needed Variables
  • Finalize the Diagram

Acceptance Criteria

Will be determined after our meetings

Estimated Time

3-4 hour per assignee

Deadline

14/03/2025 - 23.59

Reviewer Assignment

Reviewer: @berkaybgk

Review Deadline: 16/03/2025 - 23.59

@SouthAscend SouthAscend added new This is a new issue priority: moderate Needs to be completed in a week type: documentation This issue is about documentation type: planning This issue is about planning type: wiki This issue is about the wiki page workload: high 3+ hours per week labels Mar 8, 2025
@Ayhan-coder
Copy link

Hello guys @doran2728 @SouthAscend , I prepared a chart in mermaid chard ,could you rewiev and contribute on this link ### https://www.mermaidchart.com/app/projects/ad4c72e6-671e-4644-91fd-9d814ef550ac/diagrams/cea1492c-fbe4-4016-94e1-164c02c66a64/version/v0.1/edit.

@SouthAscend
Copy link
Contributor Author

We had our meetings and discussed how to move forward. Until Friday, we'll focus on our own parts of the diagram. Then we'll collectively write the relations between these classes at Friday.

  • I'll focus on User related parts such as User, Profile, Mentor, Mentee, Coach, etc.
  • I'll also focus on Directory related parts.
  • @Ayhan-coder will focus on Challange related parts such as Challanges, Goals, Leaderboards, etc.
  • @Ayhan-coder will also focus on Chat related parts.
  • @doran2728 will focus on Forum related parts such as Forum, Forum Threads, Comments, Tags, etc.
  • @doran2728 will also focus on Notification related parts.

@SouthAscend
Copy link
Contributor Author

We also discussed on what modification each parts may need.

  • We should add return types to the functions that need it.

  • We may add getters & setters.

  • Users may have follows and followrs

  • Users may have chats

  • Users can see their past & present challanges

  • Users can have badges but only some of them may be active on their profile.

  • Profiles may be private

  • Profiles may need a function to load the image file of the badges & images.

  • There can be inherited subclasses of User class such as Mentor, Mentee, and Coach

  • Coach child class may have a verification function.

  • Challanges and Goals may need a status variable. (One example use case is to accurately show whether the challange was a success, or a fail)

  • The createThread function's class is unclear at this point.

  • Thread Class need fields for images, videos, and anything else a thread may have.

  • Thread Class need a field for the ID of the owner.

  • Thread Class need fields for list of users who upvoted/downvoted the thread.

  • Thread Class need a field for the timestamp of the thread.

  • Comment Class need fields for the message, timestamp, upvote/downvote, owner ID

  • Existance of Tag class may be unnecessary.

@Ayhan-coder
Copy link

Hello guys, @doran2728 @SouthAscend would you look at the latest version of our diagram and also I added some parts and modified existing parts in my partition. If you want to add or remove some features please tell me.

My partition of diagram:

classDiagram
class Challenge {

  • String name
  • String type
  • Date startDate
  • Date endDate
  • String status
  • ListUser participants
  • joinChallenge(User user) : void
  • trackProgress(User user) : void
    }

class Milestone {
- String description
- Date targetDate
- boolean achieved
+ markAchieved() : void
}

Collapse
class Goal {
- String type
- String metric
- double targetValue
- double currentValue
- String status
+ updateProgress(double newValue) : void
+ restartGoal() : void
}

class Leaderboard {
- Challenge challenge
- MapUser, Double rankings
- Date lastUpdated
+ updateRanking(User user, double value) : void
+ getRanking(User user) : int
+ filterRankings(String criteria) : ListUser
+ resetRanking() : void
+ animateRankingUpdate() : void
}

class Chat {
- String chatId
- ListUser participants
- ListMessage messages
+ addMessage(Message message) : void
+ getChatHistory() : ListMessage
+ sendReadReceipt(Message message) : void
+ startGroupChat(ListUser participants) : void
+ addReaction(Message message, String reaction) : void
+ setTypingIndicator(User user, boolean isTyping) : void
}

class Message {
- String content
- Date timestamp
- User sender
+ addReaction(String reaction) : void
}

Challenge --> "0.." Goal : "has"
Challenge --> Leaderboard : "tracked by"
Chat --> "0..
" Message

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
new This is a new issue priority: moderate Needs to be completed in a week type: documentation This issue is about documentation type: planning This issue is about planning type: wiki This issue is about the wiki page workload: high 3+ hours per week
Projects
None yet
Development

No branches or pull requests

3 participants