Third Customer Milestone - bounswe/bounswe2024group8 GitHub Wiki
Table of Contents
1 Executive Summary
1.1 Summary of Project Status
As of the final milestone, we were able to successfully implement and test all the planned features in backend and frontend with mobile still lacking several minor ones. Overall, we are satisfied with the number and the diversity of our features and ideas. We also think that we have managed to process the feedbacks we have received into valuable outcomes, especially after the second milestone. As a result, our efforts culminated in a functional app, which we believe serves well to its' target audience.
1.2 Status of Deliverables
Deliverable | Status |
---|---|
Project Repository | Completed & Maintained |
Issues | Completed & Maintained |
Weekly Meeting and Lab Notes | Completed |
RAM | Completed |
Third Customer Milestone Report | Completed |
Deployed Backend | Completed |
Deployed Frontend | Completed |
Mobile Apk | Completed |
Release Version | Completed |
Project Requirements | Completed |
Mockups | Completed |
User Scenarios | Completed |
Sequence Diagrams | Completed |
Class Diagrams | Completed |
Use-Case Diagrams | Completed |
1.3 Final Release Notes
Our final release notes can be found under our latest release, here.
1.4 Changes since last milestone
As far as our development process is concerned, we have taken several decisions after the last milestone. Organizing more meetings between Frontend and Mobile teams was the most significant change we have applied. With this change, we aimed to maintain the design consistency across these two platforms. Furthermore, since Frontend team was ahead of the Mobile team in terms of number of implemented features, they guided Mobile team on the details of the implementation. Another approach we have changed was the task prioritization. Especially for the Backend team, we have thoroughly discussed which features to rule out and which ones to implement based on the feedback from the second customer milestone. As a result of these changes, we were able to bring new features in a more complete state and also further improve the existing ones.
1.5 Final Milestone Demo Reflections
1.5.1 Challenged Posts
Current Issue:
Users cannot easily view comments for both the original and challenging posts on the same screen, making it difficult to compare feedback.
Suggested Improvements:
- Enable a feature to display comments for both posts in a challenged post scenario on the same screen for better clarity and engagement.
1.5.2 Most Interaction Section
Current Issue:
There is no dedicated space to highlight posts with the highest engagement, making it harder for users to discover popular content.
Suggested Improvements:
- Add a section for posts that receive the most interaction to showcase trending designs and encourage user participation.
1.5.3 Achievements for Tournaments
Current Issue:
Tournament winners and participants do not receive visible recognition for their achievements, which may reduce motivation.
Suggested Improvements:
- Introduce achievements for tournament winners, including first, second, and third places, to reward their success and encourage competitiveness.
1.5.4 Tournament History
Current Issue:
Users cannot access information about past tournaments, limiting their ability to review and reflect on previous events.
Suggested Improvements:
- Create a visible tournament history section to allow users to explore past events and results.
1.5.5 My Annotations Section
Current Issue:
There is no dedicated section for users to view and manage their personal annotations, making it harder to organize feedback.
Suggested Improvements:
- Add a "My Annotations" section where users can store, view, and manage their notes and feedback for better usability.
1.6 What could have been done differently
Going back to the start, we could have done several things differently. First of all, some of the key features that we have implemented have been planned during the semester, which loaded a weight onto Frontend and Mobile teams. Instead of this, we could have planned our app in a more detailed manner so that teams can individually distribute the workload better. Furthermore, although Backend team was able to implement all the planned functionalities, they were late at structuring api input and outputs, which became a bottleneck in development phase, as Frontend and Mobile teams could not start developing their corresponding components and they wasted time while trying to run the backend on their local computers. Finally, we were late at communicating Frontend and Mobile teams, which caused several design decisions to differ across these platforms.
2 Progress Based On Teamwork
2.1 Work performed by each member
To track our individual efforts, we have kept using our RAM. Details can be found there in a tabular format.
2.2 Status of Requirements
Our Requirements are fully completed with deletions:
- 1.1.2.1.5 Delete their account.
- 1.1.2.1.5 Delete their account.
and with additions of these specific requirements:
- 1.1.7.2 Users shall be able to search other posts which have the same tag added to their bodies by tag search.
- 1.1.7.3 Users shall be able to search other users by their usernames.
- 1.1.4.1.5 Users shall be able to delete their post including Tournament posts.
- 1.1.4.1.6 Users shall be not be able to edit Tournament posts.
- 1.1.4.1.7 Users shall be able to edit non-Tournament posts.
- 1.1.4.2.3 Users shall be able to edit Text-only Posts.
- 1.1.4.2.4 Users shall be able to delete Text-only Posts.
2.3 API Endpoints
2.3.1 API Documentation
We are using Swagger UI for API documentation purposes. It can be accessed here.
2.3.2 Link to the API
Same with the documentation link, our API can be tested here.
2.3.3 Example API Calls
const fetchPostData = async () =>{
try{
const postRes = await axios.get(`${process.env.REACT_APP_API_URL}/api/v1/posts/new/${id}`,
{
headers: {Authorization: `Bearer ${localStorage.getItem("jwt_token")}`}
}
);
const annotationRes = await axios.get(`${process.env.REACT_APP_API_URL}/api/v1/annotations/get?postId=${id}`,
{
headers: {Authorization: `Bearer ${localStorage.getItem("jwt_token")}`}
}
);
setPublishedAnnotations(annotationRes.data);
setPostData(postRes.data);
}
catch(e){
setPostData(getPostFromId(id));
}
}
Here is a frontend function that calls two endpoints to fetch post and annotation data. The responses look like this.
Post Response:
{
"postId": 34,
"text": "I've never caught a Red Spotted Trout and I want to examine them closer. Since they are so rare, I couldn't find any models online. Can anyone provide me their model?",
"user": {
"id": 2,
"nickName": "Deniz62",
"profilePictureUrl": "https://storage.googleapis.com/three-design-prod-bucket/profile-pictures/CamRoll.jpg",
"role": "USER",
"experience": 70,
"enabled": true,
"username": "[email protected]",
"authorities": [
{
"authority": "USER"
}
],
"accountNonExpired": true,
"accountNonLocked": true,
"credentialsNonExpired": true
},
"title": "Looking For A Red Spotted Trout Model",
"likes": 1,
"dislikes": 1,
"comments": 1,
"categoryId": 2,
"isVisualPost": false,
"fileUrl": null,
"challengedPostId": null,
"tags": [
"Trout",
"Fish",
"Fishing"
],
"createdAt": "2024-12-17T08:02:38.223+00:00",
"reactionId": -1,
"reactionType": "NONE",
"bookmark": false
}
Annotation Response:
[
{
"id": "http://34.32.78.191:8080/api/v1/annotations/4",
"type": "Annotation",
"bodyValue": "Spotted seatrout (Cynoscion nebulosus), also known as speckled trout, is a common estuarine fish found in the southern United States along coasts of Gulf of Mexico and the coastal Atlantic Ocean from Maryland to Florida.",
"creator": {
"id": "http://34.32.78.191:8080/api/v1/users/4",
"type": "Person",
"nickname": "yektaercul"
},
"created": "2024-12-17T08:57:36.092+00:00",
"target": {
"source": "http://34.32.78.191:8080/api/v1/posts/34",
"selector": {
"type": "TextPositionSelector",
"start": 20,
"end": 37
}
},
"@context": "http://www.w3.org/ns/anno.jsonld"
}
]
2.4 User Interface and Experience
2.4.1 Link to UI designs
Frontend
The UI design components in the web app can be found in the following link: https://github.com/bounswe/bounswe2024group8/tree/main/3Design/frontend/src/components
Mobile
The UI designs for the screens in the mobile app can be found in the following directory: https://github.com/bounswe/bounswe2024group8/tree/main/3Design/mobile/app/screens
2.4.2 Screenshot of interfaces
Frontend
You can see our web screenshots from here.
Mobile
3 Standard
We have implemented an annotation feature that complies with the W3C Web Annotation Data Model standard. Users can post annotations in post body texts using the web application, and can view annotations posted by other users in both the web and the mobile applications. Annotated text in post bodies is highlighted/underlined to make it easier for users to notice. Users can click/tap on annotated text to read the respective annotation.
4 Scenarios
We have created a comprehensive user scenario, encompassing all the core functionalities of our app.
5 Individual Contributions
Yekta Ercul, Group8-Backend
- Responsibilities:
I was primarily responsible for improving our backend testing framework, refactoring the GCP bucket file system, and maintaining backend integrity through reviews and feedback on new features. Additionally, I contributed to finalizing project features and the milestone presentation outline.
- Main Contributions:
I focused on strengthening the backend by addressing critical improvements and fixing important possible bugs. I started by refactoring the GCP bucket file system to use public URLs and configured GCP bucket CORS to ensure frontend and mobile compatibility #465. This was implemented as a hot-fix and deployed immediately. Next, I wrote an integration test to verify the entire flow, including signup, login, category follow, and post creation. This involved creating a mock HTTP server using TestRestTemplate provided by Spring and a separate PostgreSQL test database to maintain production integrity #399, #406, PR. I collaborated with Oğuz to identify and define the remaining features needed for the milestone, contributing to issue tracking and solution development #402. For the presentation, I provided bullet points, suggested a basic outline, and helped refine the final structure, #461. I also supported the live presentation by navigating through web and mobile interfaces while Oğuz presented Lab 9 Report, #444. And finally I have updated the Requirements and provided the report with the final status part, #467. And I have updated our Class Diagram UML regarding the given feedbacks, #467.
- Code-related significant issues:
Summary | Issue | PR |
---|---|---|
Refactor GCP bucket file URLs and bucket CORS | #465 | Commit |
Write integration test | #406, #399 | #447 |
Review New User Endpoints PR And Merge | #414 | |
Review New Achievements PR And Merge | #418 | |
Review Tag Inclusion In Post Search PR And Merge | #416 | |
Review Post Search With Tags PR And Merge | #446 | |
Review Post Update,Delete Endpoints PR Gave Feedback And Merge | #446 |
- Management-related significant issues:
Summary | Issue |
---|---|
Define and track milestone features | #402 |
Help preparing presentation outline | #444 |
Contribute to Lab 9 Report | Report |
- Pull Requests:
As part of my contributions, I reviewed and merged PRs for critical backend features. Directly merged:
- #414 - Implement user search and get user response endpoints.
- #416 - Include tags for post search.
- #418 - Create 6 new achievements.
- #446 - Implement post search with tags.
Reviewed and provided feedback:
#441 - Implement post update and delete features.
-
Unit Tests: For this milestone, I focused on integration tests, ensuring end-to-end functionality for user signup, login, category follow, and post creation in a single integration test #399. This complemented my previous work on TournamentService unit tests.
-
Additional Information: I actively participated in all meetings, provided consistent feedback on backend features, and supported the live presentation by ensuring smooth navigation through the web and mobile interfaces.
Eren Donmez, Group8-Mobile
-
Responsibilities: As a member of the mobile team, my responsibilities included implementing the necessary enhancements after the second customer milestone in accordance with the requirements and the customer feedback, as well as keeping track of and reviewing the work of my teammates.
-
Main Contributions: In the time period between the second and third customer milestones, I was mainly occupied with implementing annotations for the mobile app (#410). Other than that, I updated post creation and viewing in the mobile app in accordance with the form feature, which was implemented after the second customer milestone in accordance with customer feedback (#438).
-
Code-related significant issues:
Summary | Issue | PR |
---|---|---|
Implement annotations | #410 | #440 |
Implement updated post creation/viewing | #438 | #439 |
- Pull Requests: As mentioned above, I participated as an author in the following pull requests: #439, #440. Furthermore, I was a reviewer in the following PR: #425.
Ersel Çanakçılı, Group8-Frontend
- Responsibilities:
We have almost covered all the requirements on Milestone 2. In this milestone, the entire frontend team gathered to complete the remaining requirements. In summary, we worked together to implement and finalize the remaining parts.
- Main Contributions:
We implemented pagination on the profile page and made some improvements such as changing passwords and editing profile pictures #430. We also implemented pagination on the search page and added a new tab to display users #427. Additionally, we refactored the create post dialog by adding design properties to enable users to include more details about their designs #435. We then implemented pagination on the feed page #436. Furthermore, we added new features such as the ability to edit posts #451 and delete posts #452. We also allowed users to search by tag by simply clicking on a tag in a post #453. Finally, we improved the UI for annotations #454.
- Code-related significant issues:
Summary | Issue | PR |
---|---|---|
Search Page Improvements | (#427) | PR428 |
Profile Page Improvements | (#430) | PR432 |
Post Form Structure Implementation | (#435) | PR435 |
Feed pagination | (#436) | PR437 |
Edit Post Implementation | (#451) | Directly Commited to our Branch |
Delete Post Implementation | (#452) | Directly Commited to our Branch |
Tag Search Implementation | (#453) | Directly Commited to our Branch |
Annotation Improvements | (#454) | PR448 |
- Management-related significant issues:
Since we worked collaboratively as a team, all decisions were made collectively, and we supported each other throughout the process. As a result, we did not encounter any significant management-related issues.
Summary | Issue |
---|---|
Update RAM | #466 |
- Pull Requests:
Since we worked closely as a team, we were aware of what everyone was doing and the code that needed to be merged. This allowed us to merge changes smoothly. I approved #432 and #437, and I created #448.
- Unit Tests:
In the second milestone, we wrote tests to verify the core functionalities. In this milestone, we reused those tests to ensure consistency and reliability.
- Additional Information:
Oğuz Kağnıcı, Group8-Backend
-
Responsibilities: I was mainly working on improving and finalizing existing features and making small additions based on the feedback from the second customer milestone. I have also tracked the progress of Frontend and Mobile teams.
-
Main Contributions: I have spent most of my time deciding which improvements we need to make for the final milestone. Initially, I have conducted a research on design specification of 3D models, as it was one of the features that were requested after the second milestone. #429 Then, based on the current situations of Backend, Frontend and Mobile; I have created a list that includes the remaining work for each team and I have written it to the Lab 9 Report. #420 For the implementation part, I have started by integrating post tags into the semantic search flow. #415 Additionally, I have designed a new endpoint, which allows users to search posts just by tags. #446 Next, I have designed several other achievements to enhance user experience. #417 Concluding the implementation phase, I have implemented user search feature, which allows users to find other users with the search bar. #404 I have also implemented post update and delete features. #419 Following that, I have written several unit tests mainly for the Wikidata service and several other services. #443 Next, I have prepared the outline for our presentation. #444 Finally, I have written Executive Summary and Status of Requirements sections in this report. #442
-
Code-related significant issues:
Summary | Issue | PR |
---|---|---|
Add tags for semantic search | #415 | #416 |
Implement search posts by tags | #445 | #446 |
Create new achievements | #417 | #418 |
Implement User Search | #404 | #414 |
Implement Post Update&Delete | #419 | #441 |
Write Unit Tests | #443 | |
Review Swagger Descriptions PR | #433 | |
Review Integration test PR | #447 |
- Management-related significant issues:
Summary | Issue |
---|---|
Design Specification Research For Post Forms | #429 |
Creating&Maintaining branches for Lab 9 and Writing the Report | #420 |
Preparing scenarios for customer milestone 3 presentation | #444 |
Writing the report for customer milestone 3 | #442 |
-
Pull Requests: As mentioned above, I have reviewed pull requests regarding swagger documentations and integrations tests #443, #447 Then, I have implemented semantic search tag integration, search with tags, search users, delete&update posts, new achievements and created a pull requests. #416, #446, #418, #414, #441.
-
Unit Tests: During the time between second and third customer milestones, I have written unit tests for WikidataService and PostService. For WikidataService, my test were overall checking whether the retrieved sibling and parent instances were accurate. For PostService, I have focused more on post deletion and tried to cover edge cases, such as preventing deletion of not owned posts. Further details can be found here.
-
Additional Information: I have tracked the progress and design consistencies of Frontend and Mobile. I also participated in all meetings. Finally, I have refactored sequence diagrams and mockups.
Onur Çerli, Group8-Mobile
-
Responsibilities: As a member of the mobile team, I was responsible for bringing minor app updates for consistency with the frontend like changing the default gallery-discussion post selection to gallery, changing icons for reaction buttons. There were some bugs with reactions. So I was also responsible for updating them. Another responsibility I had was implementing the achievements feature in the profile screen and making the backend integration. My last responsibility was taking the apk build of the application before the milestone.
-
Main Contributions: After the second customer milestone, I changed the default selection as gallery for gallery-discussion selection for both category posts and generic feed posts (#422). Then, I worked on fixing reactions; like and dislike (#424). I updated their icons for similarity with frontend. I changed their event handlers so that they work as intended. Then, I implemented the achievements feature in mobile (#426), integrated it with backend and tested it. Additional to these, I have participated in discussions, meetings and tested the application, reviewed and provided feedback for other features to the other members. Lastly, before the third customer milestone I have taken the apk build of the application.
-
API Contributions:
Summary Issue PR Improvement on Backend Integration for Like and Dislike Features #424 #425 Backend Integration for Achievement Feature of Mobile App #426 #431 -
Code-related significant issues:
Summary Issue PR UI Update for mobile app to increase similarity with frontend #422 #423 Fix like and dislike buttons for posts and comments in mobile app #424 #425 Implement achievement feature for mobile app #426 #431 -
Pull Requests:
Deniz Ulaş Poyraz, Group8-Frontend
-
Responsibilities: The frontend team already completed all requirements on Milestone 2. For this milestone we decided to meet in person and complete the frontend app via several improvements. All contributions for this milestone is done by the whole frontend team.
-
Main Contributions: As a team we implemented several improvements to the web app such as Search Page Improvements (#427), Profile Page Improvements (#430), Post Form Structure Implementation (#435), Feed pagination (#436), Edit Post Implementation (#451), Delete Post Implementation (#452), Tag Search Implementation (#453), Annotation Improvements (#454)
-
Code-related significant issues:
Summary | Issue | PR |
---|---|---|
Search Page Improvements | (#427) | PR428 |
Profile Page Improvements | (#430) | PR432 |
Post Form Structure Implementation | (#435) | PR435 |
Feed pagination | (#436) | PR437 |
Edit Post Implementation | (#451) | Directly Commited to our Branch |
Delete Post Implementation | (#452) | Directly Commited to our Branch |
Tag Search Implementation | (#453) | Directly Commited to our Branch |
Annotation Improvements | (#454) | PR448 |
- Management-related significant issues: Since we worked as a team to implement/improve everything after milestone 2, we decided everything as a group. Therefore there aren't any management related issues.
Summary | Result |
---|---|
Take meeting notes | Meeting Notes |
- Pull Requests:
Since we saw all the code together, we knew there weren't any conflicts/ bugs while creating pull requests. We just approved all of them.
I approved these pull requests: PR428, PR432, PR448
I created these pull requests: PR437, PR435
Unit Tests: We created several unit tests for milestone 2. Since we only improved the app and we didn't create any significent components, we didn't create any unit tests for this milestone. This is because the app was already almost finished in milestone 2.
Ali Alperen Sönmez, Group8-Mobile
-
Responsibilities: For Milestone 3, I was responsible for enhancing the semantic search interface, implementing user search functionality, and improving the leaderboard screen by adding user profile photos, links to user profiles, and links to tournament posts.
-
Main Contributions: My main contributions include enhancing semantic search UI, implementing user search functionality, and improving leaderboard screen by implementing additional functionalities such as user profile photos, links to user profiles, and links to tournament posts. I also contributed to creating Milestone 3 presentation outline.
-
Code-related significant issues:
Summary | Issue | PR/Commit |
---|---|---|
Implementing User Search | #459 | PR450 |
Preparing Profile Screen For Leaderboard | #460 | Commit |
Search Screen Improvements | #459 | Commit PR412 PR413 |
Enhancing Leaderboard | #460 | PR456 |
-
Management-related significant issues: As mobile team, we collectively participated in task planning, task distribution, and team meetings.
-
Pull Requests:
Mehmet Tuluyhan Sözen, Group8-Backend
Responsibilities:
In this milestone, my focus shifted toward improving documentation, creating test data, developing user scenarios, and ensuring our final milestone was well-prepared for the third customer meeting. While the core backend coding was largely completed in the second milestone, I contributed to refining our system, enhancing integration, and documenting processes. My responsibilities included:
- Configuring Swagger to improve API documentation with endpoint descriptions and examples.
- Participating in decisions regarding the new format for the "Create Post" page based on customer feedback.
- Creating test data, including users, comments, and posts, for the third customer meeting.
- Developing user scenarios for functionality exhibition.
- Reporting reflections on the Final Milestone Demo and reviewing backend integration test scenarios.
- Actively engaging in team communication and attending meetings, except one due to health issues.
- Supporting documentation efforts and ensuring alignment with customer feedback.
Main Contributions:
During this milestone, I prioritized tasks related to team coordination, documentation, test data creation, and customer feedback integration. Specific contributions included:
- Improved API Documentation: Configured Swagger to enhance endpoint descriptions, return statuses, and examples (#401).
- Decision on New Create Post Format: Collaborated with the team to redesign the "Create Post" page based on feedback from Customer Meeting 2, adding new fields for enhanced functionality (#429).
- Created Test Data: Developed test data including users, comments, and posts to prepare for the third customer meeting demonstration (#463).
- Created Scenario for Functionality Exhibition: Authored user scenarios to showcase platform functionalities during the customer meeting (#464).
- Reflections on Final Demo: Authored the report summarizing the Final Milestone Demo reflections, ensuring lessons learned were documented for future improvements (#462).
- Review of Integration Test Scenarios: Reviewed and provided feedback on integration test scenarios for backend services to ensure quality and reliability (#406).
- Attended all labs and meetings except one due to health issues, where I read the report to ensure continued communication.
API Contributions:
Summary | Issue | PR |
---|---|---|
Configure Swagger with Examples | #401 | #402 |
Decide New Create Post Format | #429 | #430 |
Code-Related Significant Issues:
Summary | Issue | PR |
---|---|---|
Review Integration Test Scenarios | #406 | #407 |
Create Test Data for Customer Meeting | #463 | N/A |
Management and Documentation-Related Significant Issues:
Summary | Issue |
---|---|
Reporting Final Milestone Demo Reflections | #462 |
Deciding New Create Post Format | #429 |
Creating Scenario for Functionality Exhibition | #464 |
Additional Information:
I have contributed to documentation, communication, and process improvement during this milestone, focusing on finalizing details and refining user-facing functionalities. While the backend development was largely completed in previous milestones, I remained engaged in quality assurance and team alignment tasks. I participated in all labs and team meetings except for one due to health issues, for which I provided a report to ensure continuity.
Huseyin Turker Erdem, Group8-Frontend/Devops
Responsibilities:
In this milestone, I focused on deployment and developing remaining features in frontend. As frontend was mostly completed on second customer milestone, new features after the feedback needed to be done, such as showing technical details of gallery posts.
- Code-related significant issues:
Summary | Issue | PR |
---|---|---|
Search Page Improvements | (#427) | PR428 |
Profile Page Improvements | (#430) | PR432 |
Post Form Structure Implementation | (#435) | PR435 |
Feed pagination | (#436) | PR437 |
Edit Post Implementation | (#451) | Directly Commited to our Branch |
Delete Post Implementation | (#452) | Directly Commited to our Branch |
Tag Search Implementation | (#453) | Directly Commited to our Branch |
Annotation Improvements | (#454) | PR448 |
- Pull Requests:
We developed all remaining frontend features together after customer milestone 2, so all the frontend codes were implemented and checked together.
I approved these pull requests: #400, #402
I created these pull requests: #428
Unit Tests: We created several unit tests for milestone 2. Since we only improved the app and we didn't create any significent components, we didn't create any unit tests for this milestone. This is because the app was already almost finished in milestone 2.
6 Other Artifacts
-
Project Plan: We have been using GitHub Roadmap for planning and tracking our project. Details can be seen here in a timeline format.
-
Unit Tests: All test related codes for Backend, Frontend and Mobile can be seen in corresponding directories under our repository
-
Remaining Artifacts: All the remaining artifacts can be viewed in the Wiki sidebar, under the "Final Milestone Project Artifacts" tab.