-
Notifications
You must be signed in to change notification settings - Fork 0
CMPE352‐Class Diagram
Selman Akman edited this page Oct 15, 2025
·
1 revision
classDiagram
%% Authentication & User Management
class AbstractUser {
<<Django>>
+username: string
+email: string
+password: string
+is_active: boolean
+is_staff: boolean
+date_joined: datetime
+last_login: datetime
}
class User {
+user_type: string
+bio: text
+profile_picture: image
+location: string
+notification_enabled: boolean
+total_score: int
+getProfile(): UserProfileData
+updateProfile(profileData): UserProfileData
+uploadProfilePicture(image): string
+setNotificationPreferences(enabled): boolean
+delete(): boolean
}
class UserAuthToken {
+token: string
+user_id: int
+expiry: datetime
+is_valid(): boolean
+refresh(): UserAuthToken
}
class Token {
+key: string
+user: User
+created: datetime
}
class OAuth {
+user: User
+provider: string
+provider_user_id: string
+created: datetime
}
class AuthenticationService {
<<Service>>
+signUp(username, email, password): UserAuthToken
+logIn(username, email, password): UserAuthToken
+logInViaGoogle(googleToken): UserAuthToken
+refreshToken(oldToken): UserAuthToken
+revokeToken(token): boolean
+generatePasswordResetToken(email): string
+validatePasswordResetToken(token): boolean
+resetPasswordWithToken(token, newPassword): boolean
}
class TokenService {
<<Service>>
+create(user): Token
+get(key): Token
+delete(key): boolean
+validate(key): boolean
+get_or_create(user): Token
+getAllForUser(user): List~Token~
}
class OAuthService {
<<Service>>
+get_or_create(user, provider, provider_id): OAuth
+verifyProviderToken(provider, token): UserData
}
%% Waste Management
class WasteCategory {
+name: string
+subcategory: string
+score_per_unit: int
+unit: string
+is_custom: boolean
+is_approved: boolean
+created_by: User
}
class WasteCategoryService {
<<Service>>
+create(name, unit, createdBy): WasteCategory
+requestCustomCategory(name, unit, user): int
+approve(categoryID): boolean
+getCategories(filters): List~WasteCategory~
}
class WasteLog {
+user: User
+category: WasteCategory
+date: datetime
+quantity: float
+location: string
+photo: image
+score: int
}
class WasteLogService {
<<Service>>
+create(user, categoryID, quantity, location, photo): WasteLog
+uploadPhoto(image): string
+getWasteLogs(userID, filters): List~WasteLog~
+calculateScore(category, quantity): int
}
%% Goals and Challenges
class Goal {
+user: User
+category: WasteCategory
+goal_type: string
+timeframe: string
+target: float
+progress: float
+is_complete: boolean
+created_at: datetime
}
class GoalService {
<<Service>>
+create(user, categoryID, target, timeframe): Goal
+createCustomGoal(user, parameters): Goal
+update(goalID, parameters): boolean
+trackProgress(goalID): GoalProgress
+getGoals(userID, filters): List~Goal~
}
class Challenge {
+creator: User
+name: string
+description: text
+goal: text
+start_date: date
+end_date: date
+max_points: int
+is_team_challenge: boolean
}
class ChallengeService {
<<Service>>
+create(creator, name, description, goal, startDate, endDate, maxPoints, isTeamChallenge): Challenge
+join(challengeID, user): boolean
+trackProgress(challengeID): ChallengeProgress
+exit(challengeID, user): boolean
+getChallenges(filters): List~Challenge~
}
class Team {
+name: string
+creator: User
+challenge: Challenge
+score: int
}
class TeamService {
<<Service>>
+create(name, creator, challengeID): Team
+join(teamID, user): boolean
+leave(teamID, user): boolean
+getProgress(teamID): TeamProgress
+getTeams(challengeID): List~Team~
}
class TeamMember {
+user: User
+team: Team
+joined_at: datetime
}
class ChallengeParticipant {
+user: User
+challenge: Challenge
+team: Team
+joined_at: datetime
+score: int
}
%% Community and Content
class Tip {
+content: text
+category: WasteCategory
+contributor: User
+likes: int
+created_at: datetime
}
class TipService {
<<Service>>
+create(content, categoryID, contributor): Tip
+get(tipID): Tip
+getTips(categoryID): List~Tip~
+search(query): List~Tip~
+share(tipID, platform): boolean
+like(tipID, user): boolean
}
class UserSavedTip {
+user: User
+tip: Tip
+saved_at: datetime
}
class UserSavedTipService {
<<Service>>
+save(tipID, user): UserSavedTip
+unsave(tipID, user): boolean
+getSaved(user): List~Tip~
}
class EcoProduct {
+name: string
+description: text
+category: WasteCategory
+image: image
+link: url
}
class EcoProductService {
<<Service>>
+create(name, description, categoryID, image, link): EcoProduct
+getProducts(categoryID): List~EcoProduct~
+search(query): List~EcoProduct~
}
%% Rewards and Achievements
class SustainableActivity {
+user: User
+activity_type: string
+duration: int
+date: date
+score: int
}
class ActivityService {
<<Service>>
+trackActivity(user, type, duration): SustainableActivity
+calculateScore(type, duration): int
+getActivities(userID, filters): List~SustainableActivity~
}
class Badge {
+name: string
+description: text
+image: image
+requirement: text
}
class BadgeService {
<<Service>>
+create(name, description, image, requirement): Badge
+award(badgeID, user): UserBadge
+getBadges(userID): List~Badge~
+checkEligibility(user): List~Badge~
}
class UserBadge {
+user: User
+badge: Badge
+earned_at: datetime
}
class Achievement {
+user: User
+name: string
+description: text
+tier_name: string
+date_earned: datetime
}
class AchievementService {
<<Service>>
+create(name, description, tiers): Achievement
+earn(user, achievementType): boolean
+getAchievements(userID): List~Achievement~
+checkProgress(user): AchievementProgress
}
class VirtualReward {
+user: User
+reward_type: string
+item_type: string
+quantity: int
}
class VirtualRewardService {
<<Service>>
+award(user, rewardType, itemType, quantity): VirtualReward
+getRewards(userID): List~VirtualReward~
+getEcoWorldData(userID): EcoWorldData
}
%% Leaderboards and Notifications
class Leaderboard {
+type: string
+timeframe: string
}
class LeaderboardService {
<<Service>>
+generate(type, timeframe): Leaderboard
+getLeaderboard(type, timeframe): List~LeaderboardEntry~
+filter(leaderboardID, filters): List~LeaderboardEntry~
}
class LeaderboardEntry {
+leaderboard: Leaderboard
+user: User
+rank: int
+score: int
}
class ReportService {
<<Service>>
+generateProgressReport(userID): ProgressReport
+generateDataVisualization(userID, type): Visualization
}
class Notification {
+user: User
+message: text
+notification_type: string
+date: datetime
+is_read: boolean
}
class NotificationService {
<<Service>>
+send(userID, message, type): Notification
+getNotifications(userID): List~Notification~
+markAsRead(notificationID): boolean
+clear(userID): boolean
}
%% Administration and Moderation
class AdminService {
<<Service>>
+manageAccount(userID, action): boolean
+reviewUserActivity(userID): ActivityReport
+sendPlatformNotification(message, userGroup): boolean
+getAnalytics(): AnalyticsData
+updatePlatformSettings(settings): boolean
+approveCustomCategory(categoryID): boolean
+manageChallenge(challengeID, action): boolean
+awardPoints(userID, points, reason): boolean
}
class ModeratorService {
<<Service>>
+reviewContent(contentID): ModeratorDecision
+warnUser(userID, reason): boolean
+suspendUser(userID, duration, reason): boolean
+escalateIssue(issueID, notes): boolean
+sendMessage(userID, message): boolean
}
%% Relationships
AbstractUser <|-- User
%% Authentication relationships
User "1" -- "*" Token : has
User "1" -- "*" OAuth : has
TokenService -- Token : manages
OAuthService -- OAuth : manages
%% User action relationships
User "1" -- "*" WasteLog : has
User "1" -- "*" Goal : has
User "1" -- "*" Tip : contributes
User "1" -- "*" UserSavedTip : saves
User "1" -- "*" Challenge : creates
User "1" -- "*" Team : creates
User "1" -- "*" TeamMember : joins
User "1" -- "*" ChallengeParticipant : participates in
User "1" -- "*" SustainableActivity : performs
User "1" -- "*" UserBadge : earns
User "1" -- "*" Achievement : achieves
User "1" -- "*" VirtualReward : receives
User "1" -- "*" LeaderboardEntry : ranks in
User "1" -- "*" Notification : receives
User "1" -- "*" WasteCategory : creates
%% Content relationships
WasteCategory "1" -- "*" WasteLog : categorizes
WasteCategory "1" -- "*" Goal : targets
WasteCategory "1" -- "*" Tip : belongs to
WasteCategory "1" -- "*" EcoProduct : belongs to
Tip "1" -- "*" UserSavedTip : is saved as
%% Challenge relationships
Challenge "1" -- "*" Team : has
Challenge "1" -- "*" ChallengeParticipant : includes
Team "1" -- "*" TeamMember : has
Team "1" -- "*" ChallengeParticipant : includes
%% Award relationships
Badge "1" -- "*" UserBadge : is awarded as
Leaderboard "1" -- "*" LeaderboardEntry : contains
%% Service relationships
WasteCategoryService -- WasteCategory : manages
WasteLogService -- WasteLog : manages
GoalService -- Goal : manages
ChallengeService -- Challenge : manages
TeamService -- Team : manages
TipService -- Tip : manages
UserSavedTipService -- UserSavedTip : manages
EcoProductService -- EcoProduct : manages
ActivityService -- SustainableActivity : manages
BadgeService -- Badge : manages
BadgeService -- UserBadge : manages
AchievementService -- Achievement : manages
VirtualRewardService -- VirtualReward : manages
LeaderboardService -- Leaderboard : manages
LeaderboardService -- LeaderboardEntry : manages
ReportService -- LeaderboardEntry : analyzes
NotificationService -- Notification : manages
AdminService -- User : administers
AdminService -- WasteCategory : approves
AdminService -- Challenge : manages
ModeratorService -- Tip : moderates
ModeratorService -- User : moderates
- Lab1
- Lab 1 Meeting Notes
- Lab2
- Lab 2 Meeting Notes
- Lab3
- Lab 3 Meeting Notes
- Lab4
- Lab4 Meeting Notes
- Lab5
- Lab5 Meeting Notes
- Lab 5: MVP Implementation & Planning
- Lab6
- Lab6 Meeting Notes
- Lab7
- Lab7 Meeting Notes
- Lab 7: Milestone 2 Demo Preparation
- Lab8
- Lab8 Meeting Notes
- Lab 8: Requirements Review & Acceptance Planning
- Ahmet's Bio
- Barathan's Bio
- Berkay's Bio
- Berke's Bio
- Caglar's Bio
- Mehmet Emin's Bio
- Nilsu's Bio
- Ömer's Bio
- Selman's Bio
- Taha's Bio
Ahmet Okta
Barathan Aslan
Berke Kartal
Mehmet Çağlar Kurt
Mehmet Emin Atak
Muhammet Berkay Keskin
Mustafa Taha Söylemez
Nilsu Tüysüz
Selman Akman
Ömer Faruk Bayram
- Use Case Diagram
- Class Diagram
- Sequence Diagrams - Admin Management and Moderator Functions
- Sequence Diagrams - Rewards, Badges and Leaderboard System
- Sequence Diagrams - Notification System
- Sequence Diagrams - Tips and Recommendations
- Sequence Diagrams - Challenge and Activity Tracking
- Sequence Diagrams - Waste Tracking and Scoring System
- Sequence Diagrams - User and Account Management
- Sequence Diagrams - Goal Management
- Sequence Diagrams - Authentication
- Sequence Diagrams - Session Management
- Sequence Diagrams - Events Management
- Project Plan
- Requirements
- Elicitation Questions & Answers
- Scenario #1
- Scenario #2
- Scenario #3
- Scenario #4
- Scenario #5
- Scenario #6
- Scenario #7
- Scenario #8
- Scenario #9
- Scenario #10
- Scenario #11
- Scenario #12
- Scenario #13
- Scenario #14
- Use Case Diagram
- Class Diagram
- Sequence Diagrams - Admin Management and Moderator Functions
- Sequence Diagrams - Rewards,Badges and Leaderboard System
- Sequence Diagrams - Notification System
- Sequence Diagrams - Tips and Recommendations
- Sequence Diagrams - Challenge and Activity Tracking
- Sequence Diagrams - Waste Tracking and Scoring System
- Sequence Diagrams - User and Account Management
- Sequence Diagrams - Goal Management
- Sequence Diagrams - Auth
- Sequence Diagrams - Session Management
- User Manual for Frontend-Web
- System Manual for Frontend-Web
- Research Documentation for Frontend-Web
- Testing Manual for Frontend-Web