Muhammet Ali Topcu's Individual Contribution Report - bounswe/bounswe2023group1 GitHub Wiki

Member: Muhammet Ali Topcu

Group: Group 1 - Disaster Response Platform

Responsibilities:

  • Deciding the tech stack that will be used throughout the project in the backend development.
  • Resetting the branches on Github and making a convention on how to open issues and create branches from them.
  • Reviewing the Project Timeline for backend.
  • Creating the initial backend structure.
    • Implementation of logging mechanism for backend.
    • Implementation of Swagger API Documentation.
    • Creation of the folder which keeps project environment variables and storing in a folder that is ignored while pushing to Github.
    • Implementation of the 3-layered architecture(Controller-Service-Repository)
  • Reviewing the class diagrams and designing the database relations with Furkan and Volkan.
  • Implementation of database relations in the code.
  • Implementation of Authentication and Authorization mechanism. (Includes AuthService and UserService and many other configuration-related classes.)
  • Initial implementation of CategoryTree.
  • Writing unit tests for the service layer classes that are written by me. (AuthServiceTest, UserServiceTest, and CategoryTreeNodeServiceTest)
  • Dockerizing the backend, pushing to DockerHub and deploying the application on AWS.

Main contributions:

  • We decided the backend tech stack with our backend team through discussion. We chosed Java and Spring Boot framework, PostgreSQL as database since most of the backend team are more familiar with these technologies.
    Issues: #247

  • Resetting the branches on Github and making a convention. We need a convention to manage our branches so that we can later find relevant branches easier in case of need.
    Issues: #263

  • Reviewing the Project Timeline for backend. Mostly, Furkan and Volkan contributed for this phase. I reviewed later with them.
    Issues: #260

  • Creating the initial backend structure. (Includes subsections as described above, but single issue for all of the work done.). I created a configuration folder which is given in the application from environment variables. The folder includes 2 folders: conf and logs. conf folder includes a text file which includes application properties. Other folder named as logConf.xml includes the xml-based configuration for logging mechanism (where to log, how to log, where to store the log files that exceeds the limit provided for them). logs folder includes the current log of the application and older ones. Lastly, I implemented Swagger API Documentation and made it accessible to all users with disabling the authorization for that endpoint.
    Issues: #255

  • Reviewing the class diagrams and designing the database relations with Furkan and Volkan. We reviewed the class diagram together and later, Volkan fixed some ambiguous points. In addition, since I implemented the Authentication/Authorization part and changed some points, I edited the previous Sequence diagram for registration/login process.
    Issues: #242, #243, #244
    Links: Sequence Diagrams, Class Diagrams

  • Implementation of Authentication and Authorization mechanism. There are 5 roles in our project: Admin, Victim, Responder, Facilitator and Coordinator. For registration, we should get the minimum information required, so I chosed Victim as the default role for the users registered to the system. Later, since other roles are more available to give extra information, they can request for other roles and their roles could be given to them if they are eligible for that role. On backend, we have JWT-based authentication and role-based authorization.
    Issues: #273

  • Initial implementation of CategoryTree. CategoryTree will be used for the classification of resources, needs and requests. So, it should be carefully designed. I created the inital tree implementation but not finalized yet. We will store the tree in our database.
    Issues: #297

  • Writing unit tests for the service layer classes that are written by me. (AuthServiceTest, UserServiceTest, and CategoryTreeNodeServiceTest)
    Issues: #318, #321, #328

  • Dockerizing the backend, pushing to DockerHub and deploying the application on AWS.
    Issues: #281
    Links: DockerHub Repository
    Backend Swagger API deployed on AWS (Hosting implemented by Ilgaz Er.)

Management related significant issues:

  • Initial backend structure implementation.
  • Deployment of the backend.
    (Since both include coding part, they are included above.)

Pull Requests:

  • PRs created by me:

    • Pull request for initial backend setup.
      PR: #272
      Issue: #255

    • Pull request for implementation of Authentication and Authorization.
      PR: #274
      Issue: #273

    • Pull request for implementation of database design.
      PR: #287
      Issue: #259

    • Pull request for Dockerfile implementation and deployment.
      PR: #308
      Issue: #281

    • Pull request for implementation of getting user info endpoint.
      PR: #315
      Issue: #314

    • Pull request for unit tests for UserService class.
      PR: #319
      Issue: #318

    • Pull request for unit tests for AuthService class.
      PR: #325
      Issue: #321

    • Pull request for unit tests for CategoryTreeService class.
      PR: #336
      Issue: #328

  • PRs reviewed and merged by me:

    • Merged pull request for Design API for responder functionalities.
      PR: #304
      Issue: #296

    • Merged pull request for Design API for victim functionalities
      PR: #305
      Issue: #283

Additional information:

  • Above, getting user info endpoint was not in our plan, but I implemented since our mobile team requested.
  • In addition, deployment of the backend application was not assigned to me at first. Later, since it was compulsory, I self-assigned the task and completed.