Ahmet Melih Aydoğdu Weekly Effort - bounswe/2021SpringGroup9 GitHub Wiki

The headings indicate "Title - Time - Type of Work - Issue Link".

CMPE 352 Weekly Efforts

Week 1 (23.03.2021 - 29.03.2021)

Before Meeting

  • Meeting Preparation - 1 hour - Research
    We determined our meeting time in the lecture. Before the meeting, I examined the repositories that are created in the previous years. Based on both the assignment pdf and the repositories of the past years, I prepared the topics that will be discussed in the meeting. These topics were:
    • Customizing labels and creating issues
    • Creating communication plan
    • Modifying README file
    • Writing meeting note
    • Taking lecture notes
    • Research GitHub repositories that we like
    • Creating Doodle for weekly meeting time
    • Creating Wiki home page
    • Creating Wiki side bar
    • Creating personal Wiki page

Meeting

  • Weekly Meeting - 1 hour - Meeting
    At the meeting, we went through the topics that I prepared and discuss about how they should be done. We assigned each topic to one person in the group. Some tasks will be done individually by everyone. Each task was assigned to someone in the meeting. Creating issues task was assigned to our friend named Zehranaz Canfes. Because it was her task, I did not create an issue this week. Week after week tasks will be assigned to different people. Meeting report is here.

Tasks

  • Take Lecture Notes - 2 hours - Research - Issue #2
    I took lecture notes on March 30. We thought that taking lecture notes would make our job easier for the assignment of the week.

  • Research GitHub Repositories - 1.5 hours - Research - Issue #12
    I made some research about GitHub repositories. I chose a repository that I like and added it to Useful GitHub Repositories together with my comments about it.

  • Learn More Git - 1.5 hours - Research - Issue #15
    I watched a video on YouTube.

  • Edit Personal Wiki Page - 30 minutes - Wiki - Issue #11
    I prepared my own Wiki page.

  • Contact Assistan about Discussion Section on Github - 10 minutes - GitHub - Issue #3
    I emailed to assistant and Discussion section is now available on GitHub.

Week 2 (30.03.2021 - 05.04.2021)

Meeting

  • Weekly Meeting - 2 hours - Meeting
    This meeting was before the announcement of the project. The task of weekly assignment was discussed. Main topics were Requirements, Similar Softwares and Questions to Customer. Everybody was in charge of creating their own issues, examining Similar Softwares, coming up with Questions to Customer. Subsections of Requirements is distributed. Meeting report is here.

  • Arranged Meeting - 30 minutes - Meeting
    This meeting was after the announcement of the project. Some tasks were discusesd and changed. Meeting report is here.

Tasks

  • Project Selection - 40 minutes - Wiki and Research - Issue #18
    I read the project description and rated the projects. I added them to to Project Selection page. The reason of the number 1 project is also added.

  • Issue Creation - 2 minutes - Issues
    I created Issue #27. This was for the requirement subsection that I will edit.

  • Question to Customer - 30 minutes - Wiki - Issue #29
    I had some questions about the project. I prepared my questions and chose the important ones because I had some similar questions and question amount was enough. I added the questions to Question to Customer.

  • Similar Software - 45 minutes - Wiki and Research - Issue #28
    I made some research about similar softwares. Then, I think of Snapchat. It has a feature similar to our software. People's posts can be seen on a map. By clicking on the map, you can discover other people's posts. Explanation and table for it can be found in Research on Related Software Systems page.

  • Requirement - 1 hour - Wiki and Research - Issue #27
    I made some research about requirements to grasp a better idea of the topic. I think this explains the topic short and clear. I created Sign Up, Sign In sections in System Requirements and Database section in Non-functional Requirements. They can be found in Requirements page.

Week 3 (06.04.2021 - 12.04.2021)

Meeting

  • Weekly Meeting - 1 hour - Meeting
    The requirements and questions to customer were reviewed. Some changes were made and some changes were distributed. A meeting with customer will be arranged. Meeting report is here:

Tasks

  • Meeting Notes - 45 minutes - Wiki - Issue #65
    I took notes in the meeting 4 and added it to wiki after editing. The meeting report is here.

  • Email to Assistan - 10 minutes - Communication - Issue #45
    I emailed assistant for customer meeting and to inform about PS hour. Then, I opened a doodle to choose a suitable hour on Monday.

  • Update Requirements - 15 minutes - Wiki - Issue #44
    I made the necessary changes that were written in the issue link. I updated Sign Up and Sign In sections in System Requirements and Database section.

Week 4 (13.04.2021 - 19.04.2021)

Meeting

  • Weekly Meeting(Meeting 5) - 1 hour - Meeting
    We talked about the scenarios that we will create. We decided on 3 scenarios. These were creating posts, viewing posts and exploring. We talked about the content of these scenarios. The decided topics are in the meeting 5 notes. We are divided into 3 group and each scenario is assigned to seperate group. The deadline for creating scenarios were on Saturday. The meeting 5 notes is here.

  • Arranged Meeting 1(Meeting 6) - 1 hour and 10 minutes - Meeting
    After creating scenarios, we gathered to create mockups. We decided on a template for scenarios. Also, we created templates for mockups so that everyone has a template to work on. Templates are designed for both android and web. When creating scenarios, there were some requirements that comes to mind. We determined these requirements to add to requirements page. The meeting 6 notes is here.

  • Arranged Meeting 2 - 1 hour and 20 minutes - Meeting
    Me, Mert Alkan and Zehranaz Canfes had a meeting on Sunday to create mockups. After creating create post mockup, we divided tasks. I was responsible for adding story to mockup, creating after post mockup and adding requirements. We did not took meeting notes for this meeting.

Tasks

  • Research Drawing Application - 1 hour - Research
    I reserached some drawing applications for mockups. The applications that I looked are figma, lucidchart and balsamiq. I used them to examine their features. Unfortunately, these applications have trial versions. We decided to use draw.io in the meeting 6.

  • Meeting Notes for Arranged Meeting 1 - 45 minutes - Wiki - Issue #66
    I took notes in the meeting 6 and added it to wiki after editing. The meeting report is here.

  • Create User Persona - 40 minutes - Wiki - Issue #56
    I created user persona for Creating Scenarios page. The persona is Nuri Bilge Ceylan. I thougth it would be a good idea to use a real person that graduated from our university.

  • Add Story to Mockup - 20 minutes - Wiki - Issue #56
    I added a story for Creating Scenaorios mockup. I researched a text for our user persona. I used this webpage.

  • Create After Post Mockup - 1 hour - Wiki - Issue #56
    I created the mockup for after post screen. After posting the story, user will review the story. User can see the comments in this screen. It is added to Creating Scenarios page.

  • Add Requiremements - 5 minutes - Wiki - Issue #56
    I added the requirements that were specified in the meeting 6 notes to the requirement page.

  • Add Mockups to Wiki - 20 minutes - Wiki - Issue #56
    I added the mockups I created to the Creating Post wiki page.

Week 5 (20.04.2021 - 30.04.2021)

Meeting

  • Weekly Meeting (Meeting 7) - 1 hour and 10 minutes - Meeting
    We talked about which classes that we will need for the project. The classes are decided and distributed to team members. Also, we talked about which sequence diagrams that we should create. These sequence diagrams are also distributed. While discussing these topics, we found some requirements that should be added. After the task distribution, the meeting ended and we decided to meet on saturday (25.04) so that we can combine class diagrams, create use case diagram and discuss the sequence diagrams. Meeting note is here.

  • Arranged Meeting 1 (Meeting 8) - 1 hour and 30 minutes - Meeting
    The classes that we will use for class diagram are created as well as sequence diagrams. We decided to add sequence diagrams to wiki page. We started to create class diagram and use case diagram. However, we could not complete the diagrams because of lack of knowledge in these topics. We decided to learn more about class diagram and use case diagram so that we can complete these diagrams on our next meeting. In addition, we decided on the requirements that we discussed on our previous meeting. These requirements are distributed to some of our team members. Meeting note is here.

  • Arranged Meeting 2 (Meeting 9) - 2 hour and 25 minutes - Meeting
    We started by completing use case diagram. In the previous meeting, we added some use cases but we did not connect the use cases. We completed most of the use case diagram. The task of final adjustment is given to Ahmet İbrahim Şentürk. Then, we started to complete the class diagram. We brought together the classes that we created and connected them. We completed most of the class diagram. The task of final adjustment is given to me. In addition, because the sequence diagrams that we created previously did not have a common design, we reviewed the sequence diagrams. Fixing errors and checking their consistency is given as a task to all group members. Meeting note is here.

Tasks

  • Create Class Diagrams - 30 minutes - Documentation - Issue #71
    I created classes for User, Admin and Guest. In the meetings, we decided that there should be User, Registered User, Admin and Guest. Registered User, Admin and Guest will be a type of User. These changes are made in the meeting 9.

  • Create Sequence Diagram - 30 minutes - Documentation and Wiki - Issue #71
    I was responsible for creating Sign In diagram. It is created and added to Sequence Diagram page. After meeting 9, the sequence diagram is changed slightly.

  • Study Use Case Diagram and Class Diagram - 1 hour 30 minutes - Research
    I researched some websites that explain the diagrams descriptively. These websites were microtool, visual-paradigm and wikipedia page for class diagram.

  • Edit Requirements - 30 minutes - Wiki - Issue #78
    In meeting 8, we decided to add some requirements. I updated the user, admin and guest's requirements.

  • Complete the Class Diagram - 1 hour and 20 minutes - Documentation - Issue #82
    After meeting 9, the class diagram was not fully completed. Some classes were not connected and the design of the some classes were not the same as others. I connected the classes and made some final adjustments. Then, I added the class diagram to Class Diagram page.

  • Update Sequence Diagram - 10 minutes - Wiki - Issue #83
    After meeting 9, it is decided to check the inconsistencies and fix the errors. After making some correction, I updated Sign In sequence diagram in Sequence Diagram page.

Week 6 (01.05.2021 - 09.05.2021)

Meeting

  • Arranged Meeting 1 (Meeting 10) - 1 hour and 45 minutes - Meeting
    We talked about milestone report and determined the topics that must be done. Deliverables had already been done except project plan and responsibility assignment matrix. Project plan and RAM is decided to be created later that week because that week was very busy for group members. Except deliverables, there were 5 parts of milestone report that must be done. These were executive summary, list and status of deliverables, evaluation of deliverables, evaluation of tools and individual work of each member. These tasks were distributed among group members and my tasks were writing "project status" part of executive summary and completing my part of the individual work table. Meeting note is here.

  • Arranged Meeting 2 (Meeting 11) - 1 hour and 35 minutes - Meeting
    We started to make project plan in ProjectLibre in meeting. I was sharing my screen. By looking at the old meeting reports, we wrote the task names and their corresponding assignees in ProjectLibre. After going through all the meeting notes, we prepared the project plan. However, we had some difficulties when planning the future. Therefore, planning the future and creating responsibility assignment matrix will be done in the next meeting. Meeting note is here.

  • Arranged Meeting 3 (Meeting 12) - 30 minutes - Meeting
    We first started with creating responsibility assignment matrix. I was sharing my screen. We moved the tasks in ProjectLibre to a Google Sheet. Everybody completed their own column in meeting and after that, the matrix was reviewed in the meeting. Then, we planned the future in ProjectLibre and RAM. After this meeting, my task was uploading the deliverables to milestone report and submitting the milestone report via Moodle. Meeting note is here.

Tasks

  • Project Status part of Executive Summary - 1 hour - Milestone Report - Issue #95
    I explained the work we done throughout the project briefly in the milestone report. I divided the work in different steps as we did it. These steps are setting up infrastructure, determining requirements, creating scenarios and mockups, software desing with UML and preparing project plan and responsibility assignment matrix. I explained each step.

  • Summary of Work Done - 15 minutes - Milestone Report - Issue #96
    I wrote my individual work in the milestone report. When doing it, I looked at this weekly effort page, meeting notes and the issues.

  • Study ProjectLibre - 1 hour - Research
    As a project management software, it was advised to use ProjectLibre. I downloaded the program and tried to get use to it. First, I watched a youtube video that explains ProjectLibre briefly. Then, I had difficulty when changing the calendar and watched another video to solve it. At the end, I figured out that we can add calender to the tasks. We changed every task's calendar to 24 hours so that working with it is more flexible.

  • Future Plan of the Project - 30 minutes - Project Plan and RAM - Issue #97
    After meeting 11, we were not sure about the future of the project so that we decided to meet the other day after making some research. I researched some older GitHub repositories about this.

  • Upload Deliverables - 1 hour - Milestone Report - Issue #105
    I copy paste the deliverables in the Wiki page to our milestone report. Because we were using hackmd.io, I could directly copy and paste. After this, I had to make some adjustments so that the headers are consistent with each other. I deleted some html markings. Also, I converted the pdf versions of project plan and responsibility assignment matrix to png and added to report.

  • Upload Project Plan and RAM to Wiki - 10 minutes - Wiki - Issue #105
    I added the pngs of project plan and responsibility assignment matrix to wiki.

  • Submit Milestone Report - 10 minutes - Submission - Issue #106
    I submitted the pdf version of the milestone report to Moodle and added it to deliverables folder in Code section of GitHub.

Practice App Project (18.05.2021 - 10.06.2021)
In this project, I spent a lot of time to research and learn new concepts because I did not have any previous experience in technologies that we used.

Week 1 (18.05.2021 - 24.05.2021)

Meeting

  • Arranged Meeting 1 (Meeting 13) - 1 hour and 45 minutes - Meeting
    In this meeting, we decided on what framework we will use and we talked about the technologies that we will need to complete this project.
    • We decided to use Django and all the group members should learn how to use Django.
    • A Map API should be chosen for our project. Yandex and Google Maps API will be compared for this.
    • Every group member should think of functionality to add to the project.
    • The knowledge on Git should be reviewed to work effectively on this practice app.
    • Because we will use docker and AWS server, these concepts should be studied as well.

       In conclusion, this meeting is about what to work on and how to work on the practice app. Meeting note is here.

Tasks

  • Research Different Map APIs - 30 minutes - Research
    I looked at the services both Yandex Maps API and Google Maps API offers. Google Maps API offers more than Yandex and Yandex expects users to meet a couple of conditions. I think Google Maps API is superior.

  • Learn Django and Django REST Framework - 6-8 hours - Research and Learning - Issue #116
    I followed the videos and tutorials in the issue. Especially, the tutorials on Django's websites are very useful. They helped me a lot when implementing my API functionality.

  • Functionalities for Project - 30 minutes - Practice App
    In meeting 13, we decided that everybody should think about functionalities for the project. I researched some external APIs. I thought Twitter API and Instagram API can work well with our practice-app.

  • Review Knowledge on Git - 3 hours - Learning
    I attended all the PS sessions. Also, I worked on a dummy GitHub repo to understand better. I wanted to figure out how reset and revert commands work. After studying Git, I was confident about using Git.

  • AWS and Dockerization - 30 minutes - Research and Learning
    I installed docker. Also, I sign up Docker Hub and AWS Console.

  • Contact TA to Arrage a Meeting - 5 minutes - Communication
    I send an email to TA to talk about the project.

Week 2 (25.05.2021 - 31.05.2021)

Meeting

  • Arranged Meeting 1 (Meeting 14) - 2 hour and 15 minutes - Meeting
    A project plan is made in this meeting. 6 days for implementing functionalities and unittests for them. 2 days given for reviewing code. 3 days are given for implementing the front end of the project. 2 days are given for dockerizing and deploying the application. 1 day is given for preparing the milestone report. Also, Google Maps API is chosen for Map API. I will get the key for Google Maps API and share it with group members. Finally, all of the functionalities and the APIs that will be used in this project are decided. Group members are assigned to these functionalities. As a last note, the functionalities and project plan are different from the final functionalities and project plan. Everything did not go as planned and we had to make changes. Meeting note is here.

Tasks

  • Get Google API Key - 15 minutes - API - Issue #115
    I used my credit card to get a Google Maps API key. I shared it with group members. 200 dollars worth of service is free for every month.

  • Learn How to Use Google Maps API - 2-3 hours - Code
    My API was about getting the coordinates of the location of the story that is posted and getting the image of the map with a marker on the location. First, I had to learn what functionalities to use in Google Maps API to get the results I want. To get the coordinates, I used Geocoding API and to get the image of the map, I used Static Maps API. I learned how to use these APIs from the following links:

  • Implement Location API Functionality - 2 hours - Code
    After learning how to use Google Maps API, Django, and Django REST Framework, it was easy to implement the location API functionality. I created a model for Location so that I can use GenericAPIView and serializer libraries of Django REST Framework. The explanation of this can found in the documentation.

  • Learn Unittest and Implement - 1 hour - Code
    I watched a YouTube playlist to learn how to implement unittest in Django Application. It was pretty easy so it did not take a lot of time.

Week 3 (01.06.2021 - 07.06.2021)

Meeting

  • Arranged Meeting 1 (Meeting 15) - 1 hour and 30 minutes - Meeting
    We planned to finish the implementation of APIs at the beginning of this week. However, it did not go as planned. We ran into some problems. We should have created a model for our application to implement the functionalities we wanted. In this meeting, we decided on the model which is Story Model. It will be stored in the database when users post stories. Everybody should implement their functionalities by using this model. Also, we created an environment file to hide keys in the project. This file is shared with group members. We decided that everyone will finish implementing API functionalities and unittests and open pull requests until the next meeting. Lastly, I shared my screen and tried to explain how my implementation works so that group members that face difficulties can understand. I hope I was helpful. Meeting note is here.

  • Arranged Meeting 2 (Meeting 16) - 3 hour and 20 minutes - Meeting
    Everybody opened pull requests. In this meeting, all the pull requests are reviewed and merged to master. Group members made comments and ask questions about functionalities. In this way, everybody has an idea of what exactly everyone's functionalities do. When merging, we ran into a big problem. Because everybody implemented their functionalities and unittests to the same file, there were a lot of conflicts that are hard to solve. Everybody reorganized their files and updated their pull requests. View and test folders are created for this purpose. In the end, merging was a lot easier. After merging pull requests, we divided into two groups. One group was responsible for the front end and the other group was responsible for deployment. I was a part of the deployment group. Before finishing the meeting, we talked about how the front end should be. Meeting note is here.

  • Arranged Meeting 3 (Meeting 17) - 1 hour and 40 minutes - Meeting
    In this meeting, the front-end group showed their work. Group members shared their opinion about their work. The deployment group wrote Docker files for the project. To this point, the database of our application was SQLite. In this meeting, we changed it to MySQL because we used MySQL in the docker-compose file. We decided that the front-end group will finish their work and the deployment group will write Dockerrun.aws.json file for deployment. Meeting note is here.

Tasks

  • Implement GET, PUT, DELETE for Story Model - 1 hour - Code - Issue #117
    After we created a story model for our practice-app. There should be API functionalities for the story model. In this way, we can use the data stored in our application, delete them or update them. Also, unittest for these functionalities should be written. Because I studied Django REST Framework well, this was easy to implement. GenericAPIView and Serializer made it easier. The explanation of these libraries can be found in the documentation.

  • Implement Swagger UI - 2 hour - Code
    After seeing the message from TA in Discord, I wanted to research and find a way to implement it. When using GenericAPIView and Serializer, Swagger UI can find the endpoints easily and also shows the example response data. However, it cannot find endpoints that connect to a function-based implementation. I researched to solve this issue and find a solution. Using the api_view decorator from Django REST Framework solved this issue.

  • Open Pull Request after Implementation - 15 minutes - Pull Request - Pull Request #130
    After implementing Location API, API functionalities for Story Model, and Swagger UI, I opened a pull request. Zehranaz Canfes reviewed and asked me to clean unused imports and delete the database file from the pull request. I updated my pull request according to this.

  • Review Pull Requests - 1 hour - Pull Request
    I reviewed the pull requests of group members. I approved everyone's pull requests. I commented on Melih Özcan's pull request. I think it would be better if it used the tag or title of the story.

  • Research and Learn Docker - 6 hours - Research and Learning - Issue #153
    I attended all the PS sessions about Docker. I asked my questions about Docker. Before docker-compose PS, I studied docker from a tutorial. It was actually an image from Docker Hub and it was very helpful. After attending PS sessions and studying by myself, I was feeling confident about using Docker.

  • Fix Testing Bug - 1 hour - Bug Resolving - Pull Request #153
    When creating docker-compose file for our project, we used MySQL. After that, our tests are started to fail. The reason was MySQL assigning the IDs to stories differently than the previous database. I solved this issue in this pull request by giving expected IDs manually.

  • Arrange .env File Location - 30 minutes - Code - Pull Request #153
    Before this pull request, ".env" file should be in every folder. I modified the code so that ".env" file should be in the same directory as "manage.py".

  • Update Group Members Code for Swagger UI - 30 minutes - Code - Pull Request #153
    If Django REST Framework is not used, endpoints do not appear in Swagger UI. I made a small addition to group members' codes so that their endpoints are visible in Swagger UI as well. The addition was adding api_view decorator to functions.

  • Update Setting for Deployment - 30 minutes - Code - Pull Request #153
    Some settings should be added to a Django Application so that it is deployable. I watched the following YouTube video to make necessary changes:

Week 4 (08.06.2021 - 14.06.2021)

Meeting

  • Arranged Meeting 1 (Meeting 18) - 40 minutes - Meeting
    A pull request #148 I opened is merged to master. In this branch, I made some addition to APIs so that they are visible on Swagger UI and fix a bug in testing. In this meeting, the front-end group merged all their work into one branch. Then a pull request is opened to merge the branch to master. Everybody should review the pull request before merging. Also, I shared my screen and we tried to deploy the application to an AWS EC2 instance. Everybody in the deployment group was working on deploying the application. Lastly, everybody will start to write their API documentation on Wiki. Meeting note is here.

  • Arranged Meeting 2 (Meeting 19) - 30 minutes - Meeting
    In this meeting, we distributed the tasks for practice-app deliverables and we merged the front-end branch. After merging the front-end branch, I was responsible for deploying the application. After the deployment, every group member should add a story. Meeting note is here.

  • Arranged Meeting 2 (Meeting 20) - 30 minutes - Meeting
    In this meeting, we distributed the tasks for the milestone 2 report. Also, everybody should complete the work done part in the milestone 2 report. Meeting note is here.

Tasks

  • Review Front-end Pull Request - 15 minutes - Review
    I reviewed the pull request #162 and approved it. It was presented by the front-end group in meeting 18 and it was meeting expectations.

  • Research and Learn Deployment - 4 hours - Research and Learning - Issue #153
    I first pushed the image of our application to my Docker Hub. Then, I started to research how to write an AWS JSON file for deployment. However, I found out that if docker-compose file is used, AWS JSON file cannot be used for deployment. A docker-compose file should be used. By using a similar docker-compose file we wrote with the deployment group, I tried to deploy the application to Elastic Beanstalk. It was not successful. After multiple attempts, I still was not successful. I give up and tried to launch an AWS EC2 instance like it was shown in Docker PS and run the docker-compose file in that instance. This time it worked.

  • Deploy the Application - 30 minutes - Deployment
    After merging the front-end to master, our application was ready to be deployed. Because I was successful to deploy the application to AWS EC2 instance, I was responsible for deployment. I created the most recent image of our application and pushed it to Docker Hub. Then, I deployed our application to the AWS EC2 instance by using the most recent image.

  • Add Story to Application - 15 minutes - Practice-app
    Because our application and our API functionalities need stories to work, adding a story to the application was everybody's task.

  • Write Readme for Practice-app Deliverables - 30 minutes - Practice-app
    I wrote a readme.txt file for practice-app deliverables to make testing easier.

  • Write Simple Explanation of API for Practice-app Deliverables - 30 minutes - Practice-app
    I explained my API and its functionality in Practice-app deliverables report.

  • Prepare Project Plan for Milestone 2 Report - 1 hour - Milestone Report - Issue #197
    I prepared a project plan for Milestone 2 report according to what we have done for Practice-app.

  • Complete Work Done Part of Milestone 2 Report - 30 minutes - Milestone Report - Issue #197
    I wrote my work done part of Milestone 2 report.

  • Write API Documentation - 4 hour - Wiki and Documentation
    I documented the APIs that I implemented. I created a documentation page for Location API and Story API(GET, PUT, DELETE).

  • Write Individual Milestone 2 Report - 3-4 hour - Milestone Report - Issue #198
    I wrote the individual report as best as I can. It was difficult for me to stay in front of the computer due to a health problem.

CMPE 451 Weekly Efforts

Week 1 (12.10.2021 - 18.10.2021)

Meeting

  • Weekly Lab - 2 hours - Meeting
    At the meeting, we went through our wiki page, old TA's feedbacks and our deliverables. We decided to make some changes on those deliverables so that the implementation will be easier. We wrote down the necessary changes that should be made and each task was assigned to someone in the meeting. Our backend, frontend and android teams are formed. Also, we decided on our application's name. Meeting report can be found here.

Tasks

  • Enhance the Glossary - 1 hour - Wiki - Issue #226
    In the requirements page, not all terms are defined and explained in the glossary section such as main page, inappropriate content and profile page. I added explanation in the glossary for those terms so that we and the people who reads the requirements can understand them easily. The glossary and requirements can be found here.
Week 2 (19.10.2021 - 25.10.2021)

Meeting

  • Weekly Lab - 2 hours - Meeting
    We reviewed our requirements page and the changes that we made last week. Also, our teacher and TA informed us about issue template. We discussed about which issue templates should we create. Meeting report can be found here.

Tasks

  • Mail to TA - 10 Minutes - Wiki
    We had some questions about the project in the weekly lab. Those were creation of issue templates, location logic in our application and technologies that can be used. I send an email about this topics to our TA.
Week 3 (26.10.2021 - 01.11.2021)

Meeting

  • Weekly Lab - 2 hours - Meeting
    Before this lab, we received a feedback mail for our project from our TA. In this meeting, we reviewed all of the topics and discussed how to fix them. We separate these topic into 4 and those were:
    • Finalize Requirements
    • Finalize Project Plan
    • Finalize Class and Sequence Diagrams
    • Finalize Issue Templates

       We assigned these tasks to different groups in the meeting. Meeting report can be found here.

  • Weekly Meeting - 1 hour and 30 minutes - Metting
    We discussed the project plan that me and Ahmet Şentürk prepared. Everyone was OK with it. Niyazi Ülke and Zehranaz Canfer created some logos for our project. We reiviewed the logos and decided to use the logo that Niyazi Ülke created. We also reviewed the sequence diagram changes and we find inconsistencies in Follow a User and Report a User diagrams. We discussed about how to fix them. Meeting report can be found here.

Tasks

  • Finalize Project Plan - 2 hours - Wiki - Issue #239
    Previously, we prepared a tentative project plan but a more detailed project plan is required to progress better. Me and Ahmet Şentürk had a meeting and prepared a project plan. We have 3 milestones. In the first milestone, we planned to run our application successfully. In the second milestone, we planned to add the fundemental structure of the application which is Google Maps. In the final milestone, we planned to finalize our application by adding admin and notification systems. We created the project plan in Project Libre and it can be found here

  • Update Follow a User Sequence Diagram - 15 minutes - Wiki - Issue #244
    There was an unnecessary step to follow a user. I changed it and make the sequence diagram consistent with other sequence diagrams.

Week 4 (02.11.2021 - 08.11.2021)

Meeting

  • Weekly Lab - 2 hours - Meeting
    We reviewed the project plan, issue templates, requirements, class and sequence diagrams. We also discuseed Activity Streams and the purpose of it and ask questions about it to our TA. We discussed about how to start implementation and how to organize files in the repository. We decided that every team will meet up in 1 or 2 days and start the implementation. Meeting notes can be found here.

  • Weekly Meeting - 1 hour - Meeting
    We discussed activity streams and how to implement them in our application. We had questions about the purpose of this and how to use it. We decided to ask them in lab meeting. Also, we discussed about how to store images on backend and whether store a list or a json string in the backend for fields that require more than one objects. The backend team will further research and inform the group members. Meeting notes can be found here.

  • Backend Meeting - 1 hour - Meeting
    We initialized the backend project and determined the steps to implement and give them priorities. Those were:

    1. Initializing Backend Project
    2. MongoDB and Django Integration
    3. Implementing API Functionalities
    4. Deploying the Project with GitHub Actions

       We researched about how to integrate MongoDB and Django. We found there were several ways to do it. We decided to research further about that and start implementation. Also, we should learn how to work with GitHub actions. Meeting notes can be found here.

Tasks

  • Add Activity Stream to the Project Plan - 10 minutes - Wiki - Issue #262
    In this week's lab, we talked about Activity Stream and when to implement it. We decided to implement at the final milestone. I added it to the our project plan. Project Plan can be found here.

  • Research MongoDB and Django Integration - 1 hour - Research
    I watched a youtube tutorial video and create an example project to learn how to integrate and work with MongoDB. I used Docker for creating MongoDB server. I also created Dockerfile to run MongoDB and our backend together. In the following backend meeting, we created the models for Posts and connected MongoDB to our Django application. Youtube video can be found here.

  • Research GitHub Actions - 1 hour - Research
    I watched a youtube video to learn the basics of the GitHub actions. After that, I researched some actions that we can use to deploy our application. We need only two actions for deployment. One of them is for building and pushing the docker image and the other one is for connecting to AWS EC2 instance and running our application. Youtube video I watched can be found here.

  • Create EC2 Instance on AWS - 30 minutes - Implementation
    I created an EC2 Instance. The ports should be arranged so that they can accessible anywhere. After creating, the instance I installed docker and tested our application.

Week 5 (09.11.2021 - 15.11.2021)

Meeting

  • Weekly Lab - 1 hour 45 minutes - Meeting
    We discussed about how to write milestone report. We asked questions to our TA if we are going to put old deliverables to our milestone report or not. We also asked questions about activity stream. After this meeting, we received email from our TA which answers those questions. Also, we will send the secrets that we will use for deployment to our TA. Meeting notes can be found here.

Tasks

  • Send Mail to TA for Secrets - 15 minutes - Implementation
    I arranged all the secrets and send an email to TA. The secrets will be used in GitHub actions.

  • Create Workflow for Backend Deployment - 2 hour - Implementation - Issue #283 - PR #274
    Last week, I made research about GitHub actions. I used two actions in the workflow to deploy. First one uses Dockerfile to build and push the docker image and second one connects to EC2 instance with ssh and runs the docker images. Before deploying, I also run the docker images to see whether they work as we expected.

  • Implement GET, PUT and DELETE API Functionalities - 2 hour - Implementation - Issue #282 - PR #275
    We only created the model for the posts that user creates and for those posts, I implemented GET, PUT and DELETE functionalities. I tested these functionalities with Postman.

  • Add Backend Corsheaders - 15 minutes - Implementation
    After implementing the API functionalities, frontend team informed us about an error they were getting. They cannot get the expected response from our API. The reason was that backend side was missing corsheaders. I added corsheaders and the problem is solved.

  • Add Image Store Mechanism to Backend - 2 hour - Implementation
    We decided to store the images on AWS S3 bucket so that when we redeploy the application the image database does not reset. I used this website as reference. We use multipart/form-data while sending data to our backend and store the images directly to S3 bucket.

  • Help Frontend Team for Deployment - 1 hour - Implementation
    We used nearly the same workflow used for backend deployment. I showed how to adjust the backend workflow to deploy frontend.

Week 6 (16.11.2021 - 22.11.2021)

Presentation

  • Customer Presentation - 3 hours - Presentation
    This week, we had customer presentation. I attended and listened multiple groups' presentation and wrote feedback to 3 groups.

Meeting

  • Weekly Lab - 20 minutes - Meeting
    We distributed the tasks to write the group's milestone report. Meeting notes can be found here.

Tasks

  • Milestone 1 Report - 3 hours - Report
    I wrote my milestone report by using my previous weekly efforts.

  • Group Milestone 1 Report - 2 hours - Report
    I wrote the project status part of group milestone report and added evaluation for MongoDB. We wrote the report in markdown. I converted it to PDF and uploaded to moodle.

Week 7 (23.11.2021 - 29.11.2021)

Meeting

  • Weekly Lab - 2 hours - Meeting
    The location and time concepts are discussed. User can be able to enter multiple locations in order by choosing location on a map. Google Maps will be used for this. Also, user can be able to enter time flexibly. Moreover, login mechanism is discussed. Users can login by using their email addresses. Meeting notes can be found here.

Tasks

  • Researching Authentication Systems - 3 hours - Research
    At the beginning of the milestone 2, User will be added to the project. An authentication system should be implemented to do this. I researched Django's default authentication mechanism but instead of using it, implementing our authentication system made more sense for me. However, after some research and discussion with the backend team, we decided to use Djoser. It is a Django framework that provides basic authentication functionalities.
Week 8 (30.11.2021 - 06.12.2021)

Meeting

  • Weekly Lab - 2 hours 5 minutes - Meeting
    Djoser framework and JWT tokens will be used in backend for authentication. Locations is selected from Google Maps. They will be sent to the backend with longitude and latitude. Users enter the time in an ordered way. He/she will first enter year, then months, then day, then hour and then minutes. If a higher ordered type of date is omitted the lower ordered ones has to be omitted as well. Meeting notes can be found here.

Tasks

  • Adding Djoser Settings - 2 hour - Implementation - Issue #369 - PR #365
    To enable Djoser, the settings of the Django project should be updated. There were different settings to enable different functionalities. User creation and activation settings are added. Email templates for activation also added.

  • Updating User Model - 1 hour - Implementation
    User model is updated so that Djoser authentication mechanism can work. User object should be created and saved to the database in the form as we want. After adding Djoser settings and updating User model, new users can be created and they can login to the application.

  • Adding User Photo Functionality - 30 minutes - Implementation
    The same mechanism that was used in the post is used. The photo is stored in the S3 bucket. A new API functionality is added for this. A new field is added to User model.

  • Adding Comment and Like Functionalites - 3 hour - Implementation - Issue #370 - PR #385
    Users can be able to interact with the posts by liking and commenting. By using the ID of the stories, they are able to do that. To implement those functionalities, Post model is updated and two new API functionalities are added. Those functions returns the updated story so a new get story function is written as well.

Week 9 (07.12.2021 - 13.12.2021)

Meeting

  • Weekly Lab - 2 hours - Meeting
    The current status of the project is reviewed. Backend team will deploy the backend side in that week so that other teams can work easily. There is no meeting notes for this meeting.

Tasks

  • Adding Updated Location and Time Fields - 2 hour - Implementation - Issue #397 - PR #396
    The location and time concepts were always being discussed. In the last week's meeting, the concepts are determined and I implemented them. Users can add multiple locations in order and the time can be added flexibly.

  • Creating New EC2 Instance and S3 Bucket - 2 hour - Deployment
    AWS S3 bucket is used for image storage and there was a single IAM user to use that bucket. All the group members were using the same IAM user. AWS took those different IP addresses as a threat and blocked my account. I created a new AWS account, a new EC2 instance, a new S3 bucket and a new IAM user. The project deployed again by using these new settings

  • Updating IP Addresses for New EC2 Instance - 10 minutes - Fix
    New IP addresses are updated in the backend project.

  • Updating Corsheaders for Authentication - 30 minutes - Fix
    After deploying the backend of the application, frontend team got an CORS error. The reason was the authentication mechanism. After some research, I added necessary setting to the backend project.

Week 10 (14.12.2021 - 20.12.2021)

Presentation

  • Customer Presentation - 3 hours - Presentation
    This week, we had second customer presentation. I attended and listened multiple groups' presentation and wrote feedback to 3 groups.

Tasks

  • Milestone 2 Report - 3 hours - Report
    I wrote my milestone report by looking at issues, pull requests and meeting notes.

  • Group Milestone 2 Report - 2 hours - Report
    I wrote the project status part and implementation of the core functionality in the backend side. I also added sign up, activation, sign in, post create, post update, comment and like API endpoints. We wrote the report in markdown. I converted it to PDF and uploaded to moodle and GitHub.

Week 11 (21.12.2021 - 27.12.2021)

Meeting

  • Weekly Lab - 1 hour 50 minutes - Meeting
    Milestone 2 reviewed with TA. Also, we discussed the implementation of the final milestone goals. These includes searching, filtering, notificatons, activity stream and wikidata tags. For filtering, every team should make additions to the application.

Tasks

  • Implement Filter and Search Mechanism - 3 hour - Implementation - Issue #498 - Pull Request #512
    Posts are implemented in the application. Now, user should be able to filter and search for the posts that he/she likes. Users can filter by user, tag, location, keyword and time. In addition, when users search for tags, there are two options. Users can chose only search for the tag they entered or they can chose search for related tags. Related tags are retrieved from wikidata.

  • Implement Admin Functionality of Django - 1 hour - Implementation - Issue #499 - Pull Request #512
    Django has a built-in admin property. To activate it, there should be some modification. Also, returned string type should be modified to view the objects in the database better,

Week 12 (28.12.2021 - 03.01.2022)

Meeting

  • Weekly Lab - 1 hour 50 minutes - Meeting
    The implementations of the previous week were discussed. The activity stream was reviewed. Frontend and android will show the activity stream on a separate page. Users can see the activities in that page. Wikidata sometimes returned unrelated tags. It should be fixed. The design of the searching and filtering mechanism were decided.

Tasks

  • Implement Unit Test - 1 hour - Implementation - Issue #500
    A unit test for the filter functionality implemented. In the setup function, users and stories are created. Then, by using filter unittest, the expected story is returned.

  • Wikidata Fix - 2 hour - Implementation
    The first implementation of wikidata sometimes returned unrelated tags. To avoid this, the claims and aliases fields are used. Also, the returned tag amount is limited.

  • Implement Save Post and Ban Control Functionalities - 1 hour - Implementation - Pull Request #517
    Users now can save the posts they like. It is stored in the User object. Also, a ban control mechanism added but it was not reliable, so it was not used.

Week 13 (04.01.2022 - 10.01.2022)

Meeting

  • Customer Presentation - 1 hour - Presentation
    This week, we had final customer presentation. I attended and listened several groups' presentation. I think our team's presentation was very good.

Tasks

  • Write a README File - 2 hour - Documentation - Issue #601
    The instructions for deploying the backend of the application is documented in a README file. It can be found here.

  • Take Dump of the Database and Restore - 3 hour - Software Release
    For the final milestone software release submission, the dump of the database should be obtained so that the same application can be deployed. I researched how to do it and wrote the necessary commands to restore the database to the README file.

  • Write Individual Milestone 3 Report - Documentation
    I wrote my individual milestone report and submitted via Moodle.

⚠️ **GitHub.com Fallback** ⚠️