-
Notifications
You must be signed in to change notification settings - Fork 1
Design Diagrams
Eray Eroğlu edited this page May 3, 2024
·
5 revisions
This page will hold our design diagrams and ideas. Enjoy!
The link to our work in progress is here.
by Kristina, Mutti, Berkay, Yigit Kaan, Ozgur, Eray, Ceylin, Taha, Emin
classDiagram
class User {
-user_id: int
-username: string
-password: string
-profilePicture: Image
-Routes: Route[]
-Followers: User[]
-Following: User[]
+login(username: String, password: String): boolean
+signup(username: String, email: String, password: String): boolean
+logout()
+deleteProfile()
+forgotPassword()
+getUserId() : int
+getUsername() : string
+getPassword() : string
+getName() : string
+getRoutes() : Route[]
+setUsername(username: String)
+setPassword(password: String)
+setName(name: String)
+search(query:string)
+view_results():WikiResult[], Route[]
}
class HomePage {
+search(query: string)
}
class FeedPage {
+displayFeed(routes: Route[])
+search(query: string)
}
class UserPage{
-Profile: ProfileController
-visibility: Boolean
+displayProfile(user: User)
+displayProfilePic(user: User)
+displayFollowing(user: User)
+displayFollowers(user: User)
+updateProfilePicture(img: Image)
+followUser(userToFollow: User)
+unfollowUser(userToUnfollow: User)
+changeVisibility(user: User)
}
class ResultPage {
+displayResults(result: WikiResult[])
+displayDetails(result:WikiResult)
+displayRelatedRoutes(result:Route[])
}
class RouteCreationPage{
+displayOnSidebar(result: WikiResult[])
+displayOnMap(result: WikiResult[])
}
class RouteDetailsPage{
-Route: RouteDetailsController
+displayProfilePic(user: User)
+displayWikiData(result: WikiResult[])
+displayTitle(route: Route)
+displayDescription(route: Route)
+displayPhotos(route: Route)
+displayRating(route: Route)
+displayLikes(route: Route)
+displayComments(route: Route)
+displayMapView(route: Route)
}
class WikiResult {
-itemID: string
-name: string
-description: string
-photo: string
-inceptionYear: int
-longitude: float
-latitude: float
-top_5_nearby: WikiResult[]
-top_5_period: WikiResult[]
}
class PrivateDatabase {
-userData:UserData
-route:Route
+fetchRelatedRoutes(): Route
+fetchFollowers(): User[]
+fetchFollowing(): User[]
+fetchProfileData(user:User): String[][]
+updateTable(table: String, value: String)
}
class WikidataAPI {
+search(query: string): WikiResult[]
+getDetails(WikiResult): WikiResult
}
class PageController{
-wikidataAPI: WikidataAPI
-privateDatabase: PrivateDatabase
+search(query: string): WikiResult[]
+addPOI(result: WikiResult)
+addDescription(description: string)
+saveRoute(route: Route)
+rateRoute(route: Route)
+likeRoute(route: Route)
+commentRoute(route: Route)
+shareRoute(route: Route)
+updateRoute(route: Route)
+fetchFeed(user: User): Route[]
}
class POI{
-name: string
-poi_id: int
-photo: string
}
class Route {
-route_id: int
-title: string
-description: string
-photos: string[]
-rating: number
-likes: number
-comments: string[]
-saves: number
-pois: POI[]
-duration: int[]
-duration_between: int[]
-mapView: string
+getTitle(): string
+getDescription(): string
+getPhotos(): string[]
+getRating(): number
+getLikes(): number
+getComments(): string[]
+getSaves(): number
+getPOIs(): POI[]
+getMapView(): string
}
class LoginPage {
+displayLoginPage()
}
class SignupPage {
+displaySignupPage()
}
class AuthenticationController {
-privateDatabase: PrivateDatabase
-rememberMe: boolean
+login(username: String, password: String): boolean
+signup(username: String, email: String, password: String): boolean
+forgotPassword(email: String): boolean
+setRememberMe(enabled: boolean): void
+isRememberMeEnabled(): rememberMe
}
class GmailAuthenticationController {
-privateDatabase: PrivateDatabase
-gmailToken: String
-isGmailTokenValid(gmailToken: String): boolean
+signInWithGmail(gmailToken: String): boolean
}
class LoginController {
-authenticationController: AuthenticationController
-gmailAuthenticationController: GmailAuthenticationController
}
class SignupController {
-authenticationController: AuthenticationController
-isCredentialsValid(username: String, password: String): boolean
-gmailAuthenticationController: GmailAuthenticationController
}
User --> PageController
PageController --> LoginPage : displays_login_page
PageController --> SignupPage : displays_signup_page
PageController --> HomePage : searches
PageController --> ResultPage: views results
PageController --> UserPage : views_profile
PageController --> FeedPage : views_feed
PageController --> RouteCreationPage : creates_route
PageController --> RouteDetailsPage : views_route
UserPage -- UserPage : take_action
LoginPage -- LoginController : contains login controller
SignupPage -- SignupController : contains signup controller
LoginController -- AuthenticationController : authenticates
SignupController -- AuthenticationController : authenticates
LoginController -- GmailAuthenticationController : authenticates Gmail
SignupController -- GmailAuthenticationController : authenticates Gmail
PageController --> WikidataAPI : fetch_wiki_results
PageController --> PrivateDatabase : fetch_data
PrivateDatabase --> User : contains_details
AuthenticationController --> PrivateDatabase: get_data
GmailAuthenticationController --> PrivateDatabase: get_data
WikidataAPI --> WikiResult : contains details
PrivateDatabase --> Route : contains details
Route --> POI : includes
by Kristina, Mutti
flowchart
User --> InitiateSearch;
InitiateSearch --> RetrieveSearchResults;
RetrieveSearchResults -. "include" .-> DisplaySearchResults;
DisplaySearchResults --> ViewDetails;
ViewDetails-. "extend" .-> Save;
ViewDetails-. "extend" .-> Like;
ViewDetails-. "extend" .-> Comment;
ViewDetails-. "extend" .-> Reroute;
ViewDetails -. "extend" .-> ViewRelatedResults;
ViewRelatedResults --> RetrieveSearchResults;
User --> ViewFeed
ViewFeed -. "include" .-> DisplayFeedResults
DisplayFeedResults -. "extend" .-> Like
DisplayFeedResults -. "extend" .-> Comment
DisplayFeedResults -. "extend" .-> Save
DisplayFeedResults -. "extend" .-> Reroute
by Yigit Kaan, Ozgur
flowchart
User --> DeleteAccount;
User --> EditProfileInfo;
User --> SeeFollowers;
User --> SeeFollowing;
User --> SeeProfilePic;
ChangePassword -."extend".-> EditProfileInfo;
ChangeUsername -."extend".-> EditProfileInfo;
ChangeName -."extend".-> EditProfileInfo;
ChangeProfilePic -."extend".-> EditProfileInfo;
ChangeVisibility -."extend".-> EditProfileInfo;
RemovePic -."extend".-> ChangeProfilePic;
flowchart
User --> Follow;
User --> Unfollow;
User --> RemoveFollower;
User --> DisplayProfilePic;
User --> DisplayFollowers;
User --> DisplayFollowing;
by Burak
flowchart
User --> CreateRoute;
CreateRoute --> InitiateSearch;
InitiateSearch--> RetrieveSearchResults;
RetrieveSearchResults -. "include" .-> DisplaySearchResults;
DisplaySearchResults-. "extend" .-> ViewDetails;
DisplaySearchResults-. "extend" .-> AddToRoute;
CreateRoute-. "extend" .-> SaveAsDraft;
CreateRoute-. "extend" .-> Save;
flowchart
User --> SignUp;
User --> Login;
SignUp-. "extend" .-> signUpWithGoogle;
Login --> EnterLoginCredentials;
SignUp --> EnterSignUpCredentials;
EnterSignUpCredentials --> SignUpValidate;
SignUpValidate --> EditProfileInfo;
EnterLoginCredentials --> LoginValidate;
LoginValidate --> Feed;
by Emin
flowchart
User -. "includes" .-> DisplayWikiData
User -. "includes" .-> DisplayComments
User -. "includes" .-> DisplayLikes
User -. "includes" .-> DisplayRoute
User -. "extends" .-> ViewProfilePage
DisplayRoute -. "extends" .-> Reroute
DisplayRoute -. "extends" .-> OpenMaps
DisplayRoute -. "extends" .-> Like
DisplayRoute -. "extends" .-> Comment
DisplayRoute -. "extends" .-> Save
DisplayRoute -. "extends" .-> Share
By Kristina
sequenceDiagram
participant User
participant PageController
participant Database
participant WikidataAPI
participant ResultController
participant ResultPage
User->>PageController: search(query)
PageController->>PageController: search(query)
par SearchDatabase
PageController->>Database: search(query)
Database->>Database: search(query)
Database-->>Database: RouteResults
Database->>ResultController: fetchRelatedRoutes(RouteResults)
end
par SearchWikidata
PageController->>WikidataAPI: search(query)
WikidataAPI->>WikidataAPI: search(query)
WikidataAPI-->>WikidataAPI: WikiResults
WikidataAPI->>PageController: fetchResults(WikiResults)
end
PageController->>ResultPage: displayResults(WikiResults), displayRelatedRoutes(RouteResults)
ResultPage-->>User: status
User->>ResultPage: view_all_results
ResultPage-->>User: displayed results
by Mutti, Eray
sequenceDiagram
participant User
participant PageController
participant Database
participant FeedPage
User->>PageController: viewFeed()
PageController->>Database: getFollowing(User)
Database-->>PageController: FollowingUsers
PageController->>Database: fetchFeed(FollowingUsers)
Database-->>PageController: FeedRoutes
PageController->>FeedPage: displayFeed(FeedRoutes)
FeedPage-->>User: displayFeedResults
by Ozgur, Yigit Kagan
sequenceDiagram
participant User
participant UserPage
participant UserFollows
participant PrivateDatabase
participant UserData
User ->> UserPage: viewProfile(User)
alt
UserPage ->> UserFollows: displayFollowers(User)
UserFollows ->> PrivateDatabase: getFollowers(User)
PrivateDatabase ->> UserData: fetchFollowers(User)
UserData-->> UserPage:Followers
end
alt
UserPage ->> UserFollows: displayFollowing(User)
UserFollows ->> PrivateDatabase: getFollowing(User)
PrivateDatabase ->> UserData: fetchFollowing(User)
UserData-->> UserPage:Following
end
UserPage-->> User: status
Following Display Diagram is quite similar.
by Ozgur, Yigit Kagan
sequenceDiagram
participant User
participant UserPage
participant PageController
participant PrivateDatabase
User ->> UserPage: viewProfile()
alt DisplayProfile
UserPage ->> UserPage : displayProfile()
UserPage ->> PrivateDatabase: fetchProfileData(User)
PrivateDatabase -->> UserPage: ProfileData
UserPage -->> User: status
end
alt EditProfile
UserPage ->> PrivateDatabase: updateTable(Table, Value)
PrivateDatabase -->> UserPage: status
end
alt EditPfp
UserPage ->> PageController: updateProfilePicture()
PageController ->> PrivateDatabase: updateTable(ProfilePicture, image)
PrivateDatabase -->> PageController: status
PageController -->> UserPage: status
end
by Ozgur, Yigit Kagan
sequenceDiagram
participant User
participant UserPage
participant PageController
participant PrivateDatabase
User ->> UserPage: viewProfile()
UserPage ->> PageController: take_action(User)
alt Follow
PageController->>PrivateDatabase: follow(User)
end
alt Unfollow
PageController->>PrivateDatabase: unfollow(User)
end
PrivateDatabase-->>PageController: status
PageController-->>UserPage: status
by Burak
sequenceDiagram
participant User
participant RouteCreationPage
participant PageController
participant Database
participant SearchResults
User->>RouteCreationPage: CreateRoute()
RouteCreationPage->>PageController: search(query)
PageController->>Database:FetchDestination(query)
SearchResults->>User:ViewResults
Database->>Database:search(query)
Database->>PageController:Destinations
PageController->>SearchResults:Destinations
SearchResults-->>User:DisplayResults
User-->>RouteCreationPage:Save(query)
RouteCreationPage-->>Database:Insert(query)
by Taha & Ceylin
sequenceDiagram
participant User
participant UserInterface
participant Database
alt SignUp
User->>UserInterface:EnterSignUpCredentials()
UserInterface-->Database:SignUpValidate()
end
alt Login
User-->UserInterface:EnterLoginCredentials()
UserInterface-->Database:LoginValidate()
end
alt Logout
User-->UserInterface:Logout()
UserInterface-->Database:setUserNull()
end
by Emin
sequenceDiagram
participant User
participant RoutePage
participant PageController
participant PrivateDatabase
User ->> RoutePage: viewRoute(RouteId)
RoutePage ->> PageController: take_action(RouteId)
alt Comment
PageController->>PrivateDatabase: comment(RouteId)
end
alt Like
PageController->>PrivateDatabase: like(RouteId)
end
alt Save
PageController->>PrivateDatabase: save(RouteId)
end
alt Share
PageController->>PrivateDatabase: share(RouteId)
PrivateDatabase-->>PageController: shareLink
end
PrivateDatabase-->>PageController: status
PageController-->>RoutePage: status
RoutePage ->> PageController: take_action(RouteId, object)
alt Reroute
PageController->>PrivateDatabase: update(RouteId, object)
end
PrivateDatabase-->>PageController: status
PageController-->>RoutePage: status
🏡 Home
🧑💻 Team Members
- Ceylin Gebes
- Mustafa Atak
- Kristina Trajkovski (Communicator)
- Emin İpekdal
- Eray Eroğlu
- Halil Karabacak
- Damla Kayıkçı
- Serhan Çakmak
- Fatih Akgöz
Yigit Kagan PoyrazogluMuhammet Berkay KeskinAhmet Burak ÇiçekÖzgür ÖzerdemTaha Topaloğlu
📓 Meeting Notes
📓 Lab Reports
📑 Lab Documents
CMPE 352
📍 Project
💎 Customer Requirements Milestone
👑 Design and Implementation
Testing 🔬
📓 Meeting Notes
- Meeting Notes #20 - 15/05/2024
- Meeting Notes #19 - 14/05/2024
- Meeting Notes #18 - 13/05/2024
- Meeting Notes #17 - 09/05/2024
- Meeting Notes #16 - 02/05/2024
- Meeting Notes #15 - 25/04/2024
- Meeting Notes #14 - 21/04/2024
- Meeting Notes #13 - 19/04/2024
- Mobile Team Meeting Notes #2 - 16/04/2024
- Web Team Meeting Notes #1 - 14/04/2024
- Mobile Team Meeting Notes #1 - 12/04/2024
- Meeting Notes #12 - 11/04/2024
- Meeting Notes #11 - 08/04/2024
- Feedback Meeting Notes #1 - 28/03/2024
- Meeting Notes #10 - 28/03/2024
- Meeting Notes #9 - 16/03/2024
- Meeting Notes #8 - 14/03/2024
- Customer Meeting Notes #1 - 14/03/2024
- Meeting Notes #7 - 10/03/2024
- Meeting Notes #6 - 08/03/2024
- Meeting Notes #5 - 07/03/2024
- Meeting Notes #4 - 29/02/2024
- Meeting Notes #3 - 22/02/2024
- Meeting Notes #2 - 18/02/2024
- Meeting Notes #1 - 15/02/2024