First Customer Milestone Report - bounswe/bounswe2024group8 GitHub Wiki

Table of Contents

1 Executive Summary

1.1 Summary of project status

1.1.1 Summary

Our project is to create a vibrant and interactive discussion forum dedicated to 3D art. By integrating features like 3D Model viewing, categories for genres, and weekly competition events, our platform caters specifically to 3D artists and people who appreciate such content. Utilizing the Wikidata API and semantic browsing, we aim to significantly enhance the search functionality within the app, allowing users to find information and content more efficiently and intuitively. Users can register and personalize their accounts, engage with others by creating or interacting with posts and comments within their favorite category and enjoy a rich social experience around their art passion. Key functionalities include account management, category and user following, and interactive events to spice up the competition. Our aim is to enhance the social media landscape for 3D art enthusiasts, offering a web and mobile application that centralizes discussions, fosters art spirit, and offer users a tailored platform for inspiration. Currently, we have completed the overall infrastructure in Backend, Frontend and Mobile, although only certain features are fully available as of the first milestone, such as 3D object interaction and full-fledged authentication. Furthermore, we have deployed our app in a containerized format, following the best practices.

1.1.2 Planned Changes

Based on our experience during the design phase of the project, we have decided to modify our methods, as we have observed that there is an obvious room for improvement in certain fields. Hands down the most crucial topic that we have to develop is our communication routine. We weren't able to fully sustain in-team communication due to various problems, such as Discord ban. Furthermore, we are also planning to ramp up the development pace, since it is inevitable to encounter certain issues on the way, which is difficult to circumvent in a limited time. Finally, based on the feedback, we are going to populate the ways our users are rewarded. These ways include commenting to discussion posts, creating more designs and liking others' content.

1.2 Summary of customer feedback and reflections

1.2.1 Points System

  • Current Issue: The system currently awards only tournament points, which is seen as insufficient for recognizing a variety of user contributions.
  • Suggested Improvement: Introduce additional point types to reward other engagement forms, such as contributing to discussions, creating valuable content, and assisting other users. This addition would encourage active participation and increase user motivation.

1.2.2 Notification System

  • Current Issue: Users must frequently check the site to stay updated, leading to potential missed information.
  • Suggested Improvement: Implement a customizable notification system to alert users about events, new topics, and updates. Users should be able to select preferred notification types, enhancing their experience and reducing the need for constant site checks.

1.2.3 Multimedia Support in Discussions

  • Current Issue: The current discussion section lacks support for multimedia uploads, limiting users' ability to share information.
  • Suggested Improvement: Enable multimedia uploads in discussions, allowing attachments such as images, videos, and other file types. This enhancement would promote richer interactions and support users in sharing content more effectively.

2 Deliverables

2.1 Status of deliverables

Deliverable Status
Project Repository Completed
Issues Completed
Wiki Completed
Communication Plan & Schedules Completed
Project Requirements Completed & Maintained
Mockups Completed
User Scenarios Completed
Weekly Meeting and Lab Notes Completed
Sequence Diagrams Completed
Class Diagrams Completed
Use-Case Diagrams Completed
RAM Completed
First Customer Milestone Report Completed
Deployed Backend Completed
Deployed Frontend Completed
Mobile Apk Completed
Release Version Completed

2.2 Evaluation of the status of deliverables

Although we were very quick and coordinated in the design phase, we slowed down a bit in the development phase. We concur that this is caused by communication issues and insufficient planning. Still, we have managed to complete all the significant deliverables during the time until the first customer milestone.

To be filled

3 Evaluation of Tools and Processes

3.1 Diagrams

For class diagrams, we utilized draw.io since it already had built-in objects we could use, making our job much easier. Additionally, we could work simultaneously in draw.io in a single project with our work partners, which was a huge advantage.

For sequence diagrams, we have used GitHub editor with mermaid syntax, which was more than enough to create informative sequence diagrams for the scope of our project.

For our use case diagrams, we used Draw.io, which provides sufficient resources to represent our use cases, actors, and the system as a whole.

3.2 Communication Media

We started with a special group on Discord as our main medium of communication, complemented by a single WhatsApp group. We also used Discord for meetings. After Discord was banned, we utilized WhatsApp communities to separate the special work groups into individual WhatsApp groups, managing them through a single community. Our meetings were then held on Google Meets.

3.3 Project Plan

We used GitHub Project and its roadmap functionality since it is very easy to connect them to issues opened, and we could organize them by date in the roadmap page, allowing us to see the future, past, and present progress and move accordingly.

3.4 Backend

We used Spring Boot as it is a trusted and well-built backend framework with great built-in libraries for authorization, organization, and more.

3.5 Database

We used PostgreSQL because it integrates well with Spring Boot, offering reliability, ACID compliance, and a strong support community. Its ability to handle complex queries and indexing also made it an ideal choice for our highly relational database structure.

3.6 Frontend

We are using React JS with webpack package bundler for our frontend application. React is currently the most popular library for frontend applications. Users create and publish several UI libraries, components for React. This makes it so much easier to make applications smooth and functional.

3.7 Mobile

We are using React Native as the mobile framework, and we utilize Expo to simplify the development and build process. Both of these are widely regarded as very dependable options by the community, and it makes perfect sense for us to use this stack.

3.8 Cloud and Deployment

We used Docker containers which are deployed on Google Cloud Platform (GCP) VM instances because of ease of stable version management, CI/CD processes and quality of these tools.

4 Individual Contributions

Yekta Ercul

  • Responsibilities: For this project until first Milestone, I focused on backend development, documentation, and creating class diagrams. Additionally, I contributed to the design of the semantic search structure and provided guidance to teammates.

  • Main Contributions: I started by rewriting the homepage #203 and updating requirements #204, which included adding the Tournament and Challenge requirements and refactoring. I also created and updated class diagrams #209. Moreover, I implemented a basic solid backend #228, connected the database #224, and created signup #221 and login #225 endpoints. And finally, I finalized how we are going to implement the semantic search for our backend #219 and explained it to Oguz for him to implement it in backend. My contributions helped establish a foundational structure for further development in backend.

  • Code-related significant issues:

    Summary Issue   PR
    Created the backend  #228  #235
    Connected database to backend   #224 #239
    Created signup endpoint for backend  #221  #239
    Created login endpoint for backend   #225 #239
    Review Semantic Search Implementation    #241
  • Non-code-related significant issues:

    Summary Issue 
    Rewriting the homepage  #203
    Updating the Requirements  #204
    Taking the meeting notes for Oct 8  #218 
    Creating Class Diagrams   #209
    Creating structure of semantic search   #219
    Created the Evaluation of Tools and Processes part in Milestone
  • Pull Requests: I created a pull request for the basic REST API #235, integrated the database and authentication endpoints #239, and reviewed various backend components. No conflicts occurred during these pull requests, as they were tested and merged smoothly.

  • Additional Information: Participated actively in meetings, contributed to team discussions on backend architecture, and guided team members on implementing the semantic search feature.

Eren Donmez

  • Responsibilities: I am assigned to the mobile team, and up until this first milestone, I have been doing both research and documentation as well as mobile implementation. My contributions are detailed in the section below.

  • Main Contributions: At the start of the semester, I organized the wiki to prevent potential naming conflicts between CMPE 352 and CMPE 451 pages; and also organized the wiki sidebar (#194, #197). Afterwards, I evaluated the possible options and then selected the most viable one among the 3D model viewer libraries that could be used for the mobile app (#200), along with the testing and dummy implementation of said library. Regarding design, I contributed to creating the use-case diagrams (#211). As far as implementation goes, I contributed to creating the initial expo project for the mobile app (#217), implemented the 3D model viewer and the feed page for the mobile app (#240), and contributed to making the initial configuration to build an apk for the mobile app (#248). In addition to all these, I prepared and submitted the Lab 4 Report (#234).

  • Code-related significant issues:

Summary Issue   PR
Choose optimal 3D model viewer library for mobile  #200
Mobile app initialization #217
Implement Feed Page #240 #247
Build APK #248
  • Non-code-related significant issues:
Summary Issue 
Organize old wiki pages  #194
Organize wiki sidebar  #197
Create use-case diagram  #211
Write Lab 4 Report  #234
  • Pull Requests: The pull request concerning the mobile feed page implementation can be found here: #247

Ersel Çanakçılı

  • Responsibilities:

    I’m in the frontend team of our project. In this milestone, I was partially responsible for creating use case diagrams and implementing frontend features such as login, sign up, and feed.

  • Main Contributions:

    We started our project discussing our domain. After writing requirements, I participated in the part of creating the use case diagrams #211. Then we started to implement our web page. Although I was mainly responsible for feed page and using 3d-viewer in our post #231 , I also helped and review the login #226 and sign up #223 implementations. Also I participated in searching suitable web standards for our project #233. At the end, I created RAM that covers the task until the milestone #253.

  • Code-related significant issues:

    Summary Issue 
    FE - Creating a Sign Up Page  #223
    FE - Creating a Login Page    #226
    FE - Make the home page display gallery and discussion posts  #231
  • Non-code-related significant issues:

    Summary Issue 
    Creating Use Case Diagrams  #211
    Researching applicable W3C standards  #233
    Creating RAM  #253 
  • Pull Requests:

    I created pull request after I implemented feed page and post features #242. Also reviewed the pull request created by my teammates #243.

  • Additional Information:

    I attended most of the meetings and did my best to communicate effectively with my team.

Oğuz Kağnıcı

  • Responsibilities: For this project, I will be working on backend and for the first milestone, I have been assigned various documentation tasks and several endpoint design/implementation work.

  • Main Contributions: I have spent most of my time doing design and documentation work. At the start of the semester, I have started by archiving legacy and irrelevant wiki pages and refactoring some of them suitable to our new project. #197 Then, I have conducted a comprehensive research on which domain to choose and which external libraries can be utilized. #198 After we have decided our domain and moved on, I have written requirements, created sequence diagrams and mockups #204, #215, #207. Finally, I have written necessary SPARQL queries to implement semantic search feature using Wikidata and implemented WikiDataService, which will be used with search endpoint. #244

  • Code-related significant issues:

    Summary Issue   PR
    Implement Wikidata Service  #244  #241
    Review Authentication Endpoints    #239
    Review Frontend PR    #250
    Review Dockerfile for Frontend PR    #251
    Review Mobile PR    #252
    Deploy Backend for customer milestone   #220
  • Non-code-related significant issues:

    Summary Issue 
    Archiving legacy documentation  #197
    Writing Lab 1 Report  #196
    Domain Research  #198 
    Writing requirements   #204
    Creating sequence diagrams   #215
    Creating mockups   #207
    Writing first customer milestone report   #254
  • Pull Requests: As mentioned above, I have reviewed the pull request regarding initialization and authentication endpoint implementation. #239 Then, I have implemented Wikidata service and created a pull request. #244. Finally, I have reviewed initial pull requests for mobile and frontend apps.

  • Additional Information: I have also conducted a research about W3C standards and participated in all meetings.

Onur Çerli

  • Responsibilities: In this project, I am working on development of the mobile application. For the first customer milestone, I was responsible for:

    • Use Case Diagrams
    • Mobile Project Initialization
    • Login Screen Design and Backend Integration
    • Register Screen and Backend Integration
    • Creation of Feed, CreatePost, Gallery, Discussion and Profile Screens
    • App Navigation Implementation For These Screens and Also For Categories Under Gallery and Discussion Screens
  • Main Contributions:

    • I created the use case diagrams and asked for review from the team and the assistant at the lab and updated and completed it accordingly.
    • As part of the mobile team, I initialized our react native-expo project and then created the login and register screens implementing the design, backend integration and the navigation between screens. Then, I created feed, createpost, gallery, discussion and profile screens and added bottom tab navigator to navigate between these five screens. I, then, added drawer navigator for gallery and discussion screens to let user choose category from sidebar menu in these screens. I also created the apk build for the application.
  • Code-related significant issues:

    Summary Issue   Commit PR
    Mobile project initialization  #217 86afe40 #252
    Implementation Of Login Screen  #227  d699e79 #252
    Implementation Of Signup Screen  #222 225df2d #252
    Organizing File Structure OF Mobile Project  #236 4963b00 #252
    Implementation Of Bottom Tab Bar  #238 4963b00 #252
    Implementation Of Side Bar Menu    #237 4963b00 #252
    Backend Integration For Mobile Application #246 850542c #252
    Building Apk File For Project #248 87f2a16 #252
  • Non-code-related significant issues:

    Summary Issue 
    Creation Of Use Case Diagrams  #211
  • Pull Requests:
    I have reviewed the pull request for 3d model viewer feature and addition of mock posts to feed screen #247. Then, after I finalized the mobile application implementation for the first customer application by building apk file for the application, I created pull request to merge our project files for mobile application to main branch #252.

Deniz Ulaş Poyraz

  • Responsibilities: For this semester, I will be working on the frontend application and for the first milestone, I have been assigned a few documentation tasks and several frontend component implementations.

  • Main Contributions: I have spent most of my time on implementation tasks. For the first week, I've just updated my wiki page and discussed our project domain. After we determined the project domain, I started researching about W3C standards #202 and 3D Viewer React libraries. I commented several options for the standards and I wrote a simple component for the 3D Library. The third week I created 4 scenarios for our project #208 , I reviewed and contributed to the sequence diagram created by Oğuz #215. I also initialized our frontend project #229 and implemented the main Login #226 and Sign Up #223 components. I made them compatible for backend integration and created several validation logics. For the forth week I took the meeting notes during our lab session. I also continued on developing the frontend app. I created the create post component #232, improved the home page #231 and completed the feed component #231.

  • Code-related significant issues:

    Summary Issue   PR
    Researched and implemented a React 3D Viewer component
    Initializing the frontend react project #229
    Creating a Login Page #226
    Creating a Sign Up Page #223
    Creating post creation component #232
    Completing the Feed #231 p243
    Improving the homepage #231 p243
    Review PR from Türker p249
    Review PR from Ersel p242
  • Non-code-related significant issues:

    Summary Issue 
    Researching W3C Standards #202
    Creating Scenarios #208
    Contrubuting To Sequence Diagrams #215
    Taking meeting notes
  • Pull Requests: I initialized our project and implemented the components alone at first, thats why I did not create new branches and I did not create any pull requests. After my other colleague also started coding I made this pull request p243 and right before the first demo I made this pull request p250 to merge our frontend branch into main. I also reviewed several feature PR requests and approved them.

Ali Alperen Sönmez

  • Responsibilities

For this project, I am working on mobile app development. For the first milestone, I was assigned organization and documentation tasks. As I am new to mobile development, JavaScript, and React Native, I did not contribute to code development for the first milestone but focused on learning the concepts.

  • Main Contributions

I mainly contributed to communication and organizational tasks. I also assisted with documentation and design by creating documents and contributing to class diagrams.

  • Code-related Significant Issues
Summary Issue PR/Commit
Review Mobile Login Page Implementation Commit
Mobile Development Onboarding Issue
  • Non-code-related Significant Issues
Summary Issue
Revising Issue Template Commit
Domain Research #198
Writing Release Description Pre-release
Enriching Methods of Classes and Revising Class Diagrams #215
Writing Milestone Review Template #256
Setting Optional Meeting and Taking Meeting Notes Meeting Notes
Taking Meeting Notes 2 Meeting Notes
Creating Presentation 1 Scenarios Scenarios
Created and organized a WhatsApp community for communication after Discord was blocked.
  • Pull Requests

I have reviewed two commits:

  1. I reviewed the code for the Login page and tested it: Commit.
  2. I tested the APK on my Android device: Commit.
  • Additional Information

I have opened and reviewed several issues. The list of issues I reviewed includes:

  • Evaluate and Select Optimal 3D Viewing Framework for Mobile: #200
  • Writing Requirements: #204
  • Refactoring README in the Root Directory: #206

Mehmet Tuluyhan Sözen

  • Responsibilities: I joined the team this semester. I will be working on backend. My primary focus has been adapting to the team’s technology stack, understanding existing code repositories from last semester, implementing endpoints implementation, and supporting documentation efforts.

  • Main Contributions: In the first week, I focused on familiarizing myself with the team and adapting to the technology stack. I thoroughly reviewed and investigated the team’s repositories from last semester, contributing by creating necessary documentation. #257 I developed user scenarios and contributed to class diagrams to support design clarity. #208 #209 I participated actively in discussions on domain selection and suggested potential domains and libraries. #198. I engaged in discussions regarding W3C standards, ensuring alignment with industry practices. I contributed to the milestone report by documenting progress and team efforts.

  • Code-related significant issues:

    Summary Issue   PR
    Backend Development Onboarding  #257
    Review BE - Creating a Login Page  #225
    Reviw BE - Implement WikidataService for Semantic Search  #244 
    Review Frontend PR  #232 
  • Non-code-related significant issues:

    Summary Issue 
    Cerating Scenarios  #208
    Creating Class Diagrams  #209
    Writing Lab Report 3  #216
    Domain Research  #198 
    Writing first customer milestone report   #254
  • Additional Information: I engaged in discussions regarding W3C standards and participated in all meetings.

Huseyin Turker Erdem

  • Responsibilities: In the project, I am working in the frontend team and completing tasks about the deployment of the project. For the first customer milestone, I was responsible for:

    • W3C Standard Determination
    • Sequence Diagrams
    • Deployment of Frontend and Backend to the Cloud
    • Frontend Initialization
    • Frontend Signup Page
    • Frontend Login Page
    • Frontend Home Page
    • Stable Docker Containerization
  • Main Contributions:

    • I implemented some parts of the frontend project with the frontend team, one of which is connecting our frontend project to the already deployed backend (API).
    • Other than the implementation of the frontend, I created a GCP environment for the deployment of backend and frontend. I also designed Dockerfiles accordingly.
  • Code-related significant issues:

    Summary Issue   Commit PR
    API connection and Logout Implementation #231 ba96f0a #249
    Dockerfile Add/Update #220 74d251f #251
  • Non-code-related significant issues:

    Summary Issue 
    Deployment of BE and FE to the cloud  #220
  • Pull Requests:
    Since we did worked on the frontend project face-to-face in order to quickly prepare the necessary implementations, issues #223, #226 and #229 (which I was also assigned to) are coded and pushed by Ersel Canakcili and Deniz Ulas Poyraz. We checked each other's codes and pushed that into the main frontend branch, which is 3design_frontend. That is why i was not assigned any pull requests, because we focused on creating the tree of these branches at that time.