Milestone 2 Report - bounswe/bounswe2023group4 GitHub Wiki

CMPE 352 Group 4 Milestone 2 Report Practice Application Deliverables

Contributors

  • Enes Furkan Arslan
  • Emre Batuhan Göç
  • Selin Işık
  • Ali Nasra
  • Halil Özkan
  • Yusuf Suat Polat
  • Ali Alperen Sönmez
  • Ahmet Emre Şafak
  • Yiğit Şekerci

Table of contents

1. Executive Summary

1.1 Summary of the project

Introducing Prediction Polls, a sophisticated platform designed to enable users predict future events, share their opinions and insights with the world! As a part of our milestone report, we are pleased to present our innovative platform that empowers our users to participate in a diverse range of polls on topics ranging from politics to pop culture, and gauge how their views compare to those of other members.

You will quickly look for polls and profiles utilizing our user-friendly, intuitive interface's keyword, category, and username search functionality. Furthermore, our cutting-edge privacy settings will provide you total control over your profile and behavior, guaranteeing that your privacy is safeguarded.

As a valued member of our community, you will have the opportunity to connect with other users by adding friends, sharing accomplishments, and engaging in the comment section of polls. Furthermore, our poll creation feature will allow you to initiate conversations and gain valuable insights on topics that are of significance to you.

1.2 Overall Status

As of rigth now, other than deliverables completed at milestone 1 the team successfully developed a simple web application that included an Application Programming Interface (API). Team members utilized one third-party API and created an API function. The team developed a RESTful API that utilized the chosen APIs and supported GET and POST methods. The team also developed a user-friendly front-end for the application.

The team effectively utilized personal development environments and Git versioning system to manage the team code base. Team members contributed to the code base, wrote unit tests for their code, reviewed the code of other team members, and created pull requests that implied code review.

The team Dockerized the application and deployed it to an Amazon AWS EC2 instance. The team updated their GitHub wiki page with a description of the API and the functionality introduced. User acceptance tests were successfully performed.

Overall, the team successfully completed the assignment and gained valuable experience in software development practices as a team, including effective use of personal development environments, Git versioning system, RESTful API development, Dockerization, and deployment.

1.3 Basic functionality of the application

This is a practice application for the project shortly defined above. Team members have chosen an API with a specific functionality of that API which can be useful for our project. Then different pages are prepared for each functionality. These pages can be considered as the prototype of the usage of these APIs in our final project.

2. URL of practice app code and the tag

3. All Information needed to test the application

Backend tests

  • First navigate to the backend directory
  • Install requirements with "pip install -r requirements"
  • Then run "python manage.py migrate" command to migrate databases.
  • Then you can test the app with "python manage.py test" P.S Some tests may fail because of the limits of third party API request limits.

4. Instructions for building the application with docker

  • First use "docker-compose build" to create images
  • Use created images with containers and bind their ports.
    • For backend use "docker run -d -p 8000:8000 practice-app-backend" to start localhost:8000:
    • For frontend use "docker run -d -p 3000:3000 practice-app-frontend" to start localhost:3000:
  • You can check the container status with "docker container ls"
  • Note that .env files are missing in these configurations and if you haven't created env files, containers cannot work properly.

API URL to a documented API:

5. Links to meeting notes related to practice app

6. Evaluation of tools and processes

6.1 Discord

  • We have used Discord for mostly project-related stuff for example sharing our improvements on APIs.
  • We used the property of Discord that enables us to create different pages for distinct issues. This property helped us to track works together with Github.
  • We conducted our meetings in Discord.
  • Discord's text channels allowed us to categorize our conversations.
  • Discord's talk priority feature helped the moderator in our meetings to resolve heated discussions more easily.
  • Different voice channels are used extensively when we needed to split up for works.

6.2 WhatsApp

  • We talked in WhatsApp mainly timing related issues for example determining the time for the next meeting.
  • Its poll system helped us to find the right time slots for our meetings asynchronously.
  • Some of us made brainstormeing in this area but they were more likely to be forgotten than considered for the project because of the informal nature of the platform.
  • Also urgent issues are discussed here like new milestone announcement.

6.3 Github

  • We have used GitHub as a version management system for our project.
  • We used the clone repository and new branch properties effectivly to write codes.
  • We used commits with proper explanation in our branches before sending a pull request.
  • Thanks to pull request property we reviewed each other's codes and resolved the conflicts before merging them to main branch.
  • We have used GitHub's document system wiki to store our research and milestones.
  • GitHub allowed us to make our work asynchronously.
  • Its version control system allowed us to revert unwanted changes.
  • Its issue system allowed us to follow what needs to be done and what is being done more easily.
  • Flag system helped us to categorize our issues to help non-assignee viewer navigation in issues.
  • Issue template feature helped us to create our issues in the same pattern.

6.4 Django

  • We used Django as our backend framework.
  • Its automatically created features like models, views, routers, serializers were very helpful for us to create our own APIs and also use 3rd party APIs.
  • We have also provided URLs for requests with GET and POST methods using Django.

6.5 React

  • We used React as our frontend framework.

6.6 Amazon Web Services

  • We created an AWS EC2 Instance and deployed our project to the server using Docker images.
  • AWS provides us very important properties such as availability. Without deployment it was hard to reach backend from frontend.

6.7 Postman

  • Most of our team members used Postman for testing their API requests for both own created and 3rd party API.
  • Postman provides us with the opportunity that seeing response from the API in JSON form and arranging the parameters easily.

6.8 Docker

  • We dockerized our working environment for the application.
  • We used docker images for deployment.

7. Challenges we met as a group

  • Most of the concepts were new to the group members so a lot of research required before starting.
  • This milestone required both group and individual contribution so splitting responsibilities was an issue.
  • Of course as expected every team member was not equally dedicated to the work which leaded to demotivation in some cases.

8. Individual Contribution Reports