Individual Contributions ‐ Muhammet Emin Çiftçi - bounswe/bounswe2024group11 GitHub Wiki

Muhammet Emin Çiftçi

Responsibilities

  • I have been working as a back-end team member since the beginning of our project. I am still a back-end team member.
  • I have a non-official project manager title, but of course we are doing our development as a team. Like everyone, I just try to organize our over all work.
  • I have contributed to the communication between mobile and back-end teams by working with mobile team for the integration.

Main Contributions

  • As a back-end team member, I implemented several endpoints for our API, which are upvote/downvote endpoints for forum questions and semantic search mechanism.
  • As a back-end team member, I communicated with the mobile team to help them integrate with the back-end endpoints understand the API.
  • As a team member, I documented many wiki pages for our convenience and lab tasks including meeting notes, standards documentation, user stories etc.

API Contributions

  • I have implemented the upvote and downvote endpoint in forum questions. Our forum questions have many fields that can be filled by the creator of the forum question and also by other users. The interactive features that enable other users to interact with the forum questions include upvoting and downvoting. Upvoting and downvoting are correlated to each other, meaning when one is active, the other one becomes deactivated. One user only upvotes or downvotes any forum post(question). Also, users can take back their upvote or downvote and become neutral to that forum post. These two endpoints are separated from each other so that in our database, they become easy to fetch.
  • The endpoints are as follows: api/v1/forum-upvote/ and api/v1/forum-downvote/
  • Example Call for Upvote Endpoint:
curl -X 'GET' 'http://138.68.97.90/api/v1/forum-upvote/?page=1&per_page=3' -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzMzNDk5MzIwLCJpYXQiOjE3MzI4OTQ1MjAsImp0aSI6ImMwY2M4OGI1NjI4ZDRiZjJhMmUwZmFiNDk0ODcyOTVmIiwidXNlcl9pZCI6NH0.Ih1W3bVDCbLpyZNMz6YQXMlw4XL_X44sbu9gQzxLfQI'
  • Example response for the previous call (upvote forum question):
{
  "count": 3,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": 35,
      "user": 4,
      "forum_question": 3,
      "created_at": "2024-11-25T15:29:24.266874Z"
    },
    {
      "id": 34,
      "user": 4,
      "forum_question": 2,
      "created_at": "2024-11-25T15:29:23.415040Z"
    },
    {
      "id": 3,
      "user": 4,
      "forum_question": 1,
      "created_at": "2024-11-25T07:45:48.520464Z"
    }
  ]
}
  • Example Call for Downvote Endpoint:
curl -X 'GET' 'http://138.68.97.90/api/v1/forum-downvote/?page=1&per_page=3' -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzMzNDk5ODg1LCJpYXQiOjE3MzI4OTUwODUsImp0aSI6IjE0ODI3OWNlMjQ0OTRkMDU5ZmYzNTUyNzIxYzU3ZmU0IiwidXNlcl9pZCI6NX0.bNQxGZoPmVgNBoqI44dLHo4AA9KTRIYxr6ugX4zEzDo'
  • Example response for the previous call (downvote forum question):
{
  "count": 5,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": 27,
      "user": 5,
      "forum_question": 2,
      "created_at": "2024-11-29T15:47:42.684177Z"
    },
    {
      "id": 26,
      "user": 5,
      "forum_question": 14,
      "created_at": "2024-11-29T15:47:39.917154Z"
    },
    {
      "id": 25,
      "user": 5,
      "forum_question": 13,
      "created_at": "2024-11-29T15:47:39.148501Z"
    },
    {
      "id": 24,
      "user": 5,
      "forum_question": 15,
      "created_at": "2024-11-29T15:47:37.731433Z"
    },
    {
      "id": 23,
      "user": 5,
      "forum_question": 16,
      "created_at": "2024-11-29T15:47:35.368187Z"
    }
  ]
}
  • I have implemented the semantic search mechanism for forum and quiz search. Though not currently added to our software product, semantic search will provide a search experience to the users that will help find the semantically related forum questions and quizzes. Learning opportunity to the user will increase.
  • The endpoints are as follows: api/v1/semantic-search-forum/ and api/v1/semantic-search-quiz/
  • Example Call for Forum Semantic Search Endpoint:
curl -X 'GET' 'http://138.68.97.90/api/v1/semantic-search-forum/?page=1&per_page=3&id=bn:00101361a'
  • Example response for the previous call (forum semantic search):
{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": 2,
      "title": "What’s the difference between \"shy\" and \"reserved\"?",
      "question": "Hello! I often see the words \"shy\" and \"reserved\" used in English, but I’m not sure if they mean the same thing. Can anyone explain the difference? Examples would be great too!",
      "tags": [
        {
          "name": "reserved",
          "linked_data_id": "bn:00109713a",
          "description": "Marked by self-restraint and reticence"
        },
        {
          "name": "shy",
          "linked_data_id": "bn:00101361a",
          "description": "Lacking self-confidence"
        },
        {
          "name": "emotion",
          "linked_data_id": "bn:00030581n",
          "description": "Any strong feeling"
        },
        {
          "name": "vocabulary",
          "linked_data_id": "bn:00080171n",
          "description": "A listing of the words used in some enterprise"
        }
      ],
      "author": {
        "id": 4,
        "username": "muhammet_41",
        "email": "[email protected]",
        "full_name": "Muhammet Emin Çiftçi",
        "avatar": "https://api.dicebear.com/9.x/avataaars/webp?accessories=eyepatch,kurt,prescription01&seed=Samuel Watson"
      },
      "created_at": "2024-11-25T07:49:09.445405Z",
      "answers_count": 1,
      "is_bookmarked": null,
      "is_upvoted": null,
      "upvotes_count": 3,
      "is_downvoted": null,
      "downvotes_count": 1,
      "answers": [
        {
          "id": 4,
          "answer": "Actually, there is no difference at all",
          "author": {
            "id": 6,
            "username": "ali",
            "email": "[email protected]",
            "full_name": "Ali Yılmaz",
            "avatar": "https://api.dicebear.com/9.x/avataaars/webp?accessories=eyepatch,kurt,prescription01&seed=Rebecca Weiss"
          },
          "created_at": "2024-11-25T12:49:30.861025Z",
          "is_my_answer": null,
          "is_upvoted": null,
          "is_downvoted": null,
          "upvotes_count": 1,
          "downvotes_count": 1,
          "forum_question": 2
        }
      ],
      "is_my_forum_question": false,
      "quiz_question": null,
      "quiz_question_type": null
    }
  ]
}

Code Related Significant Issues

Issue Title Description Issue and/or PR Link
Implement Upvote and Downvote Functionalities Implemented Model and Viewset for upvote and downvote forum questions. issue PR
Implement Semantic Search Implemented semantic search mechanism for forum and quiz search. issue PR

Management Related Significant Issues

Issue Title Description Issue and/or PR Link
Document SVG 2 Standards Created documentation that summarizes the Scalable Vector Graphics (SVG) 2 standards issue wiki
Create a Plan for the Milestone 2 Demo Created the plan for the Milestone 2 demo, including data population strategy, scenario, etc. issue wiki
Document User Stories Created two user stories issue wiki

PRs

PR Summary
#641 API endpoints of forum question upvote and downvote are implemented. Forum question API endpoint has already implemented, therefore this endpoint will be connected to it. The rows that hold the information for upvote and downvote are stored in two different tables in back-end: upvote table and downvote table. Throughout the implementation of these endpoints, there were different suggestions to implement them. In the end, using two different tables was decided on.
#696 API endpoint of semantic search that will be used in forum and quiz is implemented. Forum questions hold tags that will help users to find semantically searched forum question. Similarly, quizzes also have tags that will direct the users that search for any keyword that semantically related to that tag. This endpoint has not yet integrated into our application, but it is a feature we will provide in the next milestone.
#595 The standards we decided on to use on our application are documented in the wiki. The standards includes the followings: WCAG 2.1 Standards, WAI-ARIA 1.2 Standards for Accessibility Compliance, and Scalable Vector Graphics (SVG) 2 standards. This was our lab task.
#635 API endpoint for taking a quiz is implemented. Already present quizzes on our database are fetched and users are able to solve them. This was our one of the primary features we promised to provide for our platform's users.
#624 API endpoints for quiz and rating a quiz are implemented. Front-end is now able to reach the model defined by the back-end to enable users to create quizzes. This endpoint is strongly co-related to the endpoint mentioned in the previous pull request.

Additional

I have also documented the meeting notes of several meetings we hold, which helped me and my team to track the things we have done and are planning to do. I have also took a part in the integration of our back-end to the mobile part. It made me realize how important is to keep in contact with the other sub-teams.