Individual Contributions ‐ Ozan Oytun Karakaya - bounswe/bounswe2024group11 GitHub Wiki

Individual Contributions of Ozan Oytun Karakaya for Customer Milestone 2

Responsibilities

  • I am a member of Backend development team. In this milestone, I have focused on question/quiz point mechanism & forum answers.
  • I am also responsible for Devops processes of the project with Muhammed Emin Arayıcı.

Main Contributions

  • Forum Answer Endpoint Implementation
  • Question Difficulty Endpoint Implementation
  • Auto Point Assignment Mechanism Implementation for Questions/Quizzes
  • Migration of the Turquiz Application to DigitalOcean Servers (for upscaling the host machine) & Bug-Fixes

API Contributions

  • I have implemented the endpoint for answering to forum questions with nested URL enabling to access to the endpoint with the schema:

    /api/v1/forum-question/<forum_question_id>/answer. With this endpoint, forum answer objects are created when POST requests are sent to this endpoint and linked with related forum question. Also related Unit Tests for this feature iare implemented with Mucahit Erdogan Unlu.

  • I have implemented the endpoint which enables us to get a difficulty point in the scale of {(10,20,30):(beginner, intermediate, advanced)} for a linked keyword. It is accessible without permission under /api/v1/get-difficulty/ endpoint. Related documentation for this endpoint is linked under this page. Again, integration process for this endpoint is completed with Mucahit Erdogan Unlu.

  • I have implemented the point field for Question and Quiz models. It expected from client/mobile side to use the API mentioned in the previous item and get the difficulty point for each question when creating a quiz. /api/v1/quizzes/ endpoint is modified so that it can accept the sent difficulty points for questions, calculate the level of the quiz and return it in the response.

  • /api/v1/take-quiz/ is modified with Mucahit Erdogan Unlu for returning the points earned by the user when taking a quiz.

  • I have worked with Ceyda and made some contributions for the implementation of /api/v1/profile/ endpoint. Please note that it is not merged yet to the main, you can access it with the branch backend/profile.

  • Please note that sample requests and responses are not shown here since I want to keep this report readable. Please refer to Swagger Docs page to see the sample requests and responses for the endpoints mentioned above.

  • To use the swagger, first login to the sample user of mine, {username: ozan, password: pass}. Provide the login information /auth/login/ and get the access_token. Then, using the Authorize button, copy and paste the access_token such: Bearer <access_token>. After completing these steps, you should be ready for trying endpoints.

Code Related Significant Issues

Issue Title Description Issue and/or PR Link
Implement Point Assignment API Auto Difficulty Point Calculation for linked keywords in the quiz questions. #679
Document Auto Point Assignment Mechanism Since question points are assigned automatically with this complex mechanism, it was required to create the related documentation. #678
Implement Answer Feature to Forum Question Answering feature for forum questions is implemented. #612
Resolve CORS Problem Resolved CORS problem for backend-client connection with Umit Can. #651
Migrate Application to DigitalOcean Host machine in EC2 is not sufficient for our application. Upscaling was needed for the machine, thus, we have preferred the DigitalOcean since it provides free credits for larger machines. #710
Implement Profile Enpoint Helped Ceyda for profile endpoint's implementation. #681
Implement Point Scoring in Take Quiz Point scoring feature for take-quiz feature in the backend according to taken quizzes with Mucahit Erdogan Unlu. related commit
Fix Local Deployment Problems We have investigated the problem with local docker-compose with Muhammed Emin Arayici, found it related with volumes. related commit
Fix Radio Button for W3C ARIA Reviewed W3C Standart fix for radio buttons for quiz sorting. #599

Management Related Significant Issues

Issue Title Description Issue and/or PR Link
Milestone 2 Demo Plan Created the demo plan for CM2 with Muhammet Emin Ciftci. #647
Refactor Backend Branches Unnecessary branches was required to be refactored and code review was required to be done. #623

PRs

PR Summary
#692 This PR includes the implementation for auto difficulty point assignment for related keywords in quiz questions and quiz points/levels.
#642 Last version merged PR for Forum Answer with different structure than the first, also includes the unit tests.
#615 This PR is the first version of the Forum Answer feature, not merged since the file system in the backend directory was changed after branching.
#646 This PR includes the work I have done for resolving CORS issue and Milestone 2 Demo plan.
#611 Reviewed the rate-quiz endpoint with Mucahit Erdogan Unlu and merged this PR.
#624 Reviewed the Quiz endpoint's implementation and merged this PR with Muhammet Emin Ciftci. Related to #623.

Additional

  • The research about automatically assigning points for questions is documented here since this process requires a wide research for APIs available and testing.
  • Implemented mechanism for question difficulty point assignment is documented in detail here.
  • Updated the README.md file in the main branch with current local deployment (docker) instructions, you can view the related commit. You can also view the instructions here.
  • You can also see the Personal Efforts page of mine which issues and PRs are included with related timelines here.