Individual Contributions Aras Tasci Milestone 3 - bounswe/bounswe2024group6 GitHub Wiki

Responsibilities

As a member of the backend team, my main responsibilities were to ensure seamless communication between the "quiz" part of the backend and the frontend. I also took responsibility for the backend related managemental issues, such as the app's deployment and maintenance and provided creative solutions for urgent problems to ensure continuous development. I was quick to respond to the requests of our web / mobile teams and always kept in touch with them, making sure our development process was advancing. I worked closely with the frontend team to ensure smooth integration of APIs and resolved issues promptly.

I also contributed to project management through efficient backend deployments (although they didn't have their respective issues). In the previous milestone, I provided various auxiliary tools for backend deployment, such as a shell script for the team to use to deploy the backend with ease. For this milestone, to ensure we get the needed computational power (as the other machine kept running out of memory because of its low RAM (it was just 1 GiB)), we switched the backend from the t1 micro instance in AWS EC2 to a more powerful and and affordable instance in DigitalOcean with Oguz. From there on, I managed the deployment process as it was before - I was the go-to guy in any backend-related problem and took responsibility for handling all problems on-the-go.

Main Contributions

Code-Related Significant Issues

Below are the issues I were assigned to, in tabular format. You can see I was very versatile in the backend, touching all aspects of the project, from quizzes to comments, from implementing activity streams for every activity we have in the app to implementing new features such as bookmarking words:

Issue Title Link Action Time Taken
Backend: Implement Administrator Functionalities #748 Assigned 2 hours
Backend: Swagger Documentation #749 Assigned 1.5 hours
Backend: Cancelling Quiz Attempts #758 Assigned 1 hour
Backend: Finalizing Guest Quiz Requirements #759 Assigned 1.5 hours
Backend: Implement Bookmarking Words Endpoints #762 Assigned 1 hour
Backend: Automatically Create Quizzes from Incorrectly Answered Questions #769 Assigned 2 hours
Add Missing Fields To Quiz Results #766 Assigned 1.5 hours
Backend: Admin Ban Endpoint #786 Assigned 1.5 hours
Backend: Remove Authentication for Post Details #782 Assigned 1 hour
Backend: Remove Auth in get_comments_by_id Endpoint #812 Assigned 30 mins
Backend: Additional Activity Streams #814 Assigned 1.5 hours
Backend: Check Authentication in User Post Feed #815 Assigned 1 hour
Add Unfinished Quiz Label #817 Assigned 1 hour
Backend: Implement Endpoint to Check if the Current User is Admin #822 Assigned 1.5 hours
Backend: Return isBanned Field in Profile #880 Assigned 1 hour
Backend: Profile Get Posts' Author As Well #922 Assigned 1 hour
Change Cancel Quiz Endpoint #925 Assigned 1 hour
Backend: Comments in Profile Endpoint Correctly Returning Context Related Fields #931 Assigned 1.5 hours
Backend: Unit Tests for Quiz Endpoints #977 Assigned 2 hours

Management-Related Significant Issues

Issue Title Link Action Time Taken
Backend: Modify Main Docker-Compose File According to Backend Dev YAML File Changes #973 Assigned 1 hour
API and API Documentation Acceptance Criteria #718 Assigned 2 hours

Pull Requests

Pull Request Title Link Action Time Taken
chore: put database content in repo #989 Assigned 1 hour
chore(backend): quiz tests #986 Assigned 2 hours
chore: modify docker-compose.yml file according to new docker configuration #974 Assigned 1.5 hours
fix: pass context to commentserializer in profile serializer #932 Assigned 1.5 hours
feat: cancel quiz given quiz_id #927 Assigned 1.5 hours
impr: give author info on profile posts #923 Assigned 1 hour
feat(backend): is_banned field on profile endpoint #883 Assigned 1.5 hours
feat(backend): automatic quiz creation from wrong questions #878 Assigned 2 hours
feat(backend): Check if the Current User is Admin #837 Assigned 1.5 hours
feat(backend): Add Unfinished Progress Label to Quiz Details #836 Assigned 1 hour
misc(backend): Requested Activity Streams #835 Assigned 1.5 hours
fix(backend): check authentication in user post feed #816 Assigned 1 hour
fix(backend): comments are viewable by anyone #813 Assigned 1 hour
feat(backend): admins now have banhammers #787 Assigned 1.5 hours
fix(backend): proper anonymous user handling in post details endpoint #785 Assigned 1 hour
impr: remove auth for post details #784 Assigned 1 hour
impr(backend): Add Missing Fields to Quiz Results #767 Assigned 1.5 hours
feat(backend): Bookmarking Words #763 Assigned 1.5 hours
feat(backend): Finalize guest-quiz requirements #761 Assigned 1.5 hours
feat(backend): implement quiz canceling #760 Assigned 2 hours
feat(backend): Implement Admin Functionalities #757 Assigned 2 hours
feat(mobile): add unit tests and remove old ones #990 Reviewed -
search unit tests #979 Reviewed -
image unit tests #976 Reviewed -
Image url returning endpoint #964 Reviewed -
Removed Authentication for Guest Users #960 Reviewed -
Frontend 819: fixed issues related to access token/guest #840 Reviewed -
Let admins delete comments of everyone (BACKEND) #795 Reviewed -
Quiz endpoints are updated with Image Uploading #788 Reviewed -
added image endpoints #736 Reviewed -

Unit Tests

Below is the list of unit tests I wrote:

  1. test_get_quiz: Verify if a quiz is correctly retrieved by its ID.
  2. test_view_quizzes: Ensure quizzes feed returns the correct data.
  3. test_create_quiz_success: Test the successful creation of a quiz.
  4. test_create_quiz_missing_title: Verify that creating a quiz without a title fails.
  5. test_get_question: Check if a specific question is correctly retrieved.
  6. test_solve_question: Test the process of solving a quiz question.
  7. test_submit_quiz: Validate quiz submission and result calculation.
  8. test_start_quiz: Verify if a quiz starts correctly and returns progress details.
  9. test_get_quiz_results: Ensure quiz results retrieval works as expected.
  10. test_like_quiz: Test liking and unliking quizzes functionality.
  11. test_bookmark_quiz: Check bookmarking and unbookmarking quizzes functionality.
  12. test_view_bookmarked_quizzes: Validate retrieval of bookmarked quizzes.
  13. test_view_liked_quizzes: Verify retrieval of liked quizzes.
  14. test_view_created_quizzes: Test if created quizzes are correctly listed.
  15. test_view_solved_quizzes: Check retrieval of solved quizzes.
  16. test_delete_quiz_unauthorized: Test unauthorized quiz deletion attempt.
  17. test_delete_quiz_as_staff: Verify quiz deletion as a staff user.
  18. test_update_quiz_unauthorized: Test unauthorized quiz update attempt.
  19. test_update_quiz_authorized: Verify authorized quiz update.
  20. test_cancel_quiz: Check cancellation of a quiz progress.
  21. test_cancel_quiz_id: Verify cancellation of quizzes by their ID.