Milestone 3 Report - bounswe/bounswe2025group5 GitHub Wiki

Milestone Report

Introduction

This is the milestone report for our group project, bounswe2025group5. We are a group of dedicated students, committed to building WasteLess, a comprehensive platform designed to empower users to track, manage, and reduce their environmental footprint through features like waste logging, community challenges, and a supportive forum. The documentations for the different parts such as deployment, backend, dockerization etc are done at the wiki and the links to them are provided at the deliverables part of this report.

Team Members

Table of Contents

1. Executive Summary

1.1 Project Description

WasteLess is a comprehensive, gamified platform available on both web and mobile, designed to empower individuals and communities to actively track, manage, and reduce their environmental footprint. The core mission of WasteLess is to foster sustainable habits by providing users with intuitive tools to monitor their waste generation, engage in motivating challenges, and connect with a like-minded community.

Users begin their journey by registering an account, which unlocks a personalized experience including a profile page displaying waste reduction statistics, goals, and achievements. A key feature of WasteLess is its waste tracking system with user friendly interface, allowing registered users to log their daily waste across predefined categories (e.g., plastic, organic, paper, metal, glass) using various units of measurement. This part is utilized by the users to limit themselves to specific amount of usage of waste and try to not exceed that. This data is then visualized through insightful bar representation, enabling users to monitor their progress and identify areas for improvement. Registered users can set personal waste reduction goals and strive to meet them. With using the waste tracking feature of the application, users are able to obtain badges for their effort such as "First Try" for creating first waste goal or "Plastic Saver" for logging 100 amount of plastic usage.

Beyond individual tracking, WasteLess cultivates a vibrant community through features like posts, where users can share tips, eco-friendly product recommendations, and sustainability stories or ask questions. Individuals are able to like, comment or save posts, also they can see the their saved and own posts in the profile page to reach them readily. A significant aspect of the platform is its Community Sustainability Challenges, time-bound events where users compete to reduce waste and see their rankings at the leaderboards. The challanges are started by admins and they are created per waste type like "Monthly challenge to reduce plastic waste in our community!". All users start with the point 100 ( the amount is determined by the admin for that month), then with each log for that duration their point is decreased for that waste type if s/he attends the challenge. The challenge part is the one of the main motivating part of the application and it also provides connection between individuals. Each challenge has its own leaderboard and all users are able to see the status of the leaderboard from challenge page.

For unregistered users, WasteLess offers read-only access to browse forum discussions and view community challenges, encouraging them to join the platform for full participation.

Overall, WasteLess aims to make waste reduction an engaging, measurable, and community-driven endeavor, providing users with the knowledge, motivation, and tools to make a tangible positive impact on the environment.

1.2 Project Status

1.2.1 Summary of Project Status

During the current milestone period, development efforts on the WasteLess platform concentrated on the implementation and refinement of core functionalities, with a focus on enhancing user engagement and streamlining the overall user experience. Progress was made across user interaction features, backend infrastructure including Dockerization, deployment and cloud storage , and in achieving greater UI/UX consistency between the web and mobile applications. The primary objectives for this milestone have been addressed, resulting in an expanded set of operational features designed to improve platform utility.

Specific advancements include the completion of the content management features, allowing users to create, share, and interact with posts now enriched with image upload capabilities, thereby fostering more dynamic community participation. User profile functionality was extended to include photo customization and an automated profile creation process post-registration, aiming for a more personalized user journey. The photos are saved in the secure cloud storage. The core waste tracking and goal management systems were implemented and stabilized to ensure a reliable experience for users monitoring their progress. The visualization of the waste tracking is provided to user for to make the tracking be pleasing to the eyes. Administrative controls for managing community challenges were developed, providing essential oversight tools. Furthermore, efforts were directed towards ensuring UI/UX parity between the web and mobile interfaces, contributing to a more cohesive and predictable user experience across different access points. Foundational work in backend containerization using Docker has also progressed, alongside the establishment of unit testing procedures. After the deployment part is ended, the releases also provided in the github with the tags "1.24.x". These developments collectively enhance the platform's interactivity, usability, and maintainability.

1.2.1.1 Status of the Apps

1.2.1.2 Status of the DB

  • 200+ realistic users with their profiles
  • 50+ posts for the forum part
  • 600+ waste log
  • 300+ waste goal
  • 5+ challenge and leaderboard

1.2.1.3 Status of the Releases

  • 1.24.9 - First release with the deployment
  • 1.24.10 -Feed page for load more fix
  • 1.24.11 - Mobile apk configuration files
    • How to build and run the services inside a container is given in the releases. For the mobile application:
    • Download the APK from here
    • Enable "Installation from unknown sources" in your Android device settings if required.
    • Open the downloaded APK file to install the application.

1.2.1.4 Third Party APIs

1.2.2 Status of Deliverables

Deliverable Status Related Link
Communication Plan Done link
Requirements Done link
Scenarios Done spotlight all
Research Done git_documentation zero-waste-communities
Meeting Notes Done general teams
Issues and PRs Done PRs issues contributions
Implementation Done backend-documentation
Project Plan Done roadmap
Demo Video Done mobile_demo_drive_link web-demo-drive-link
Unit Tests Done backend mobile
Dockerization Done link
API Documentation Done link
UI/UX Documentation Done link
Postman Collection Done collection-link
APK of the mobile app Done link

1.3 Development Approach and Challenges

Team Members Main Jobs

Team Member Main Jobs
Kerim Kasar Mobile Development
Serdar Bahar Mobile Development
Yusuf Onur Öksüz Mobile Development
Uygar Apan Mobile Development
Eren Şen Frontend Development
Abdurrahman Arslan Frontend Development
Ahmet Çağdaş Girit Frontend Development
Cengiz Bilal Sarı Backend Development
Cengiz Bilal Sarı Deployment- Devops
Ahmet Mert Balcı Backend Development
Osman Yusuf Tosun Backend Development
Ahmet Ege Tanrıverdi Backend Development

The development process during this milestone continued to follow the established framework of parallel sub-teams for frontend (web), backend, and mobile components, as outlined in our initial project planning and detailed in previous milestone reports (Milestone 1 and Milestone 2). This structure facilitated focused work on distinct platform areas. Regular inter-team coordination meetings, documented in our Meeting Notes (can be found on the sidebar), were maintained to ensure alignment, address dependencies, and integrate functionalities progressively. The team adhered to the agreed-upon version control practices, utilizing separate branches for feature development to maintain the stability of the main codebase until features were ready for group-approved merges. This structured approach enabled concurrent progress across the different parts of the WasteLess platform, contributing to the timely completion of planned features for this period, all of which are tracked within our issues for this milestone.

Throughout this phase, the primary challenges encountered were typical of a multi-faceted software development project. These included ensuring seamless integration between the frontend, backend, and mobile components, and maintaining UI/UX consistency across the different user interfaces. Managing dependencies between sub-teams and coordinating feature rollouts required ongoing communication and agile adjustments, as reflected in our task management. Additionally, the team focused on adapting to new requirements and incorporating feedback effectively, informed by ongoing research and iterative development insights. This involved tasks such as implementing robust image handling capabilities across platforms and refining the user experience. Overcoming these challenges required collaborative problem-solving and a steadfast commitment to the project's core objectives.


Webpage Development

We made an initial plan for our design and page navigation. After that we followed the plan with consistent meetings mostly once a week. Also whenever we needed to work together we were on 1-1 meetings. @yukseleren lead the scenario for our development and made the division of labor mostly. We also exchanged ideas for any challenge in our whatsapp group. The main thing we focused on was the backend-database implementation before we began implementing anything.

Key challenges & learnings

  • Learning Frontend development 2 of our team members didn't have any prior web development experience. So they needed to learn how react, javascript, html, css and browser engines work.

  • Steep Bootstrap learning curve We didn't have experience with React-Bootstrap, so we spent several days diving into the docs, experimenting with the grid system, and custom‐overriding its Sass variables to match our brand.

  • Maintaining cross-device consistency Tweaking margins, paddings, and breakpoints across desktop/tablet/mobile took far more time than anticipated—especially around our custom PostCard and GoalCard components.

  • Figma→Code handoff Ensuring every CSS property from Figma made it into our Tailwind/Bootstrap mix with the designer and frequent style.

  • State & props propagation Passing url, isLoggedIn, username (and later isAdmin) down multiple levels forced us to refactor our routing and lift state into App.js—we learned the value of context early on.

  • Third-party integration pain points Adding the Bootstrap carousel and modal for our home and leaderboard views uncovered CORS edge cases and forced us to mock API calls locally before hitting our staging server.


Mobile Development, Challenges and Communication

We followed a plan where we do our weekly mobile meetings in between 2 weekly main group meetings. This way had 2 different pseudo deadlines for doing our works every week and keeped constant communication everyday through the "mobile development" whatsapp group for implementing features, discuss design choices. We also had mixed meetings with frontend team communicator @yukselerensen to decide on in app designs. Here are the key challenges we encountered and development ideas we had in our journey of releasing the mobile version of our app:

  1. All 4 of the team members had no experience with developing any mobile app or coding process.
    • We all had to spend significant work hours to understand and get a start on coding/developing with react-native
    • We gathered documentations and tutorial videos/web pages in order to achieve this. Most of the learning process happened on the way.
  2. We had to keep a consistent UI/UX design with the frontend and had to always keep in touch to sustain that whenever a new feature/design is introduced.
  3. The main feature in our app that makes it stand out is waste logging and tracking feature and it's well and logical integration with the community.
    • We had to do several meetings just to decide on whether we should implement the idea as 1) waste reduction log or 2) waste log and how to keep track of goals user friendly and intuitive for people to use our app.
  4. The requirements we wanted to implement before the deadline for our milestones were more than we could handle in time, mostly because of we were very new to developing mobile projects.
    • We did not give up on any important feature even though some of them take very long and effort consuming work hours. For example: like, commet, save, semantic search features.
  5. Feature Specific Development and Challenges:
    • We had to re-implement the layouts and page hierarchy because of design choices we made through the development.
    • We tried to make our welcome page as interactive as possible with several external APIs so that it attracts new users in.
      • These could be found in 1.2.1.4 of this milestone 3 report.
    • We implemented a "Dark Mode" for a better visuality and more attractive UI/UX design.
    • The variable "user_id" was a problem for us. Starting the development the backend team did not pass us the variable and we did not need to use it either until the "save/unsave posts" feature was implemented. It took us some hours to redefine specific parts of the code to include user_id and pass it through pages. We still ended up with multiple errors yielding mishandling it. In the end we decided to revert the changes and asked backend team to re-implement relevant 5 endpoints with username, which is an error-free and easier approach. We saw the benefits of using different branches to implement features here since it did not take us much time to revert back to a working version.
    • Creating posts from the feed page under the navigation bar was in the process of implementation to make the app more user friendly. But after some testing and strict deadline for the implementation we had to stop the implementation for now and creating post feature is only in profile page in the current release.
    • Explore page was a difficult task by itself since it required too many different feature to sustain the requirements:
      • We had to change the way we implemented comment section: from a pop-up view to a resizeable/growing comment section.
      • Every new feature added such as: lile, save, comment, photo, editing posts, requires a better/new handlement for the page dependencies and other functions. So every new feature required us to re-do some page functions.
    • We had difficulties on sustaining page ui design consistency across devices, arranging margins, padders and other layouts took significantly more than we expected.
  6. Building with Expo Challenges: (We had no previous experience on deploying too. We had difficulties on nearly every step)
    • We had an CORS-policy error when we changed the IP's for deoployment, even though it is very easily fixable since this was our first encounter with such a problem, it took 5 hours to find a solution for it searching online, asking pears, scaning documentations on expo page.
    • Re-deploying after fixing a bug takes more than we envisioned (around 3 hours for 1 re-build since we used expo's free builder options).
    • We had to do an extended (both as time and depth) research on why our .apk had network errors, it was a result of expo android build properties and certifiation processes.

Backend Development and Challenges

The backend team is responsible for the core logic, database management, and API services of WasteLess. The team has made one backend team meeting per week other than group meetings. The encountered several key challenges during this milestone:

  1. Complex Data Modeling and Database Management:

    • Challenge: Designing a relational database schema (MySQL on Google Cloud SQL) to efficiently store and retrieve data for diverse features like user profiles, posts (with likes, comments, saves), waste logs, waste goals, community challenges, and leaderboards involved intricate relationships. Ensuring data integrity, writing efficient queries, and implementing complex triggers (e.g., for automatic profile creation post-registration, leaderboard updates based on waste logs) required careful planning and iteration. Having stable one instance of database and arrranging connections of the individuals and environment.
    • Impact: This required building stable and deployed database to Google Cloud SQL Server. The trigger parts were hard to arrange but they were tested well.
  2. API Design and Integration Consistency:

    • Challenge: Developing a comprehensive and consistent RESTful API to serve both the web (React) and mobile (React Native) clients, each with potentially slightly different data needs or interaction flows. Managing evolving API contracts and ensuring clear communication with the frontend and mobile teams was crucial.
    • Impact: Difference in expected request/response formats or endpoint functionalities occasionally led to integration issues, requiring debugging sessions. The need to support both authenticated and unauthenticated access for certain endpoints (like viewing posts) added another layer of complexity.
  3. Third-Party API Integration:

    • Challenge: Integrating multiple external APIs (Wikidata for semantic search, ZenQuotes for motivational quotes, Open-Meteo for air quality, etc.) each came with its own set of rate limits, response structures, and reliability concerns.
    • Impact: This required building services to handle API calls, parse varied responses, implement error handling (e.g., fallbacks), and transform data into a consistent format usable by the WasteLess platform. Debugging issues related to external API were needed.
  4. Deployment and DevOps :

    • Challenge: Setting up the deployment using Docker for containerizing the Spring Boot application, deploying it to DigitalOcean, and connecting it securely to the Google Cloud SQL instance. This was the first time for some team members working with this specific stack and cloud providers.
    • Impact: Initial deployment setups faced configuration hardness, particularly around environment variables, management of the containers and the cloud database, and ensuring smooth updates. Automating build and deployment processes is an ongoing effort.
  5. Secure Image Handling and Storage:

    • Challenge: Implementing a secure and efficient way to handle image uploads for user profiles and posts, and storing them in a cloud storage solution accessible by the backend.
    • Impact: The first thing was come to the mind is storing images as binary in the database but it is the worst design since the size of the images are huge. The images were stored in cloud and urls were given to database. This involved setting up the cloud storage, managing access permissions, and ensuring that image URLs were correctly associated with user profiles and posts in the database, while also considering security implications.

Addressing these challenges required a combination of technical research, collaborative problem-solving within the backend team, and close coordination with the frontend, mobile, and DevOps efforts.

2. Implementation Details

2.1 Status of Requirements

Our requirements are extensively documented and can be found in our Wiki page. We present the status of our requirements in the following table. We have classified the status of the requirements as the following:

  • ✅ Done: Requirements that we finished implementing.
  • ⏳ Partially Done: There are some aspects of it that are not finalized.
  • NF (not finished): Requirements that we have not implemented in our release 3 different ways;
    • 🗣️ NF.1 : Requirements that did not implemented after a customer meeting/communication.
    • 🔜 NF.2 : Requirements that will be implemented in the next releases.
Requirement Number Description Status
1.1 User Requirements
1.1.1 Account Requirements
1.1.1.1 Users shall be able to register for the system using an email, a username and a password. ✅ Done
1.1.1.2 Registered users shall be able to log in to the system with valid credentials. ✅ Done
1.1.1.3 Registered users shall be able to reset their passwords via an email verification link. 🗣️ NF.1
1.1.1.4 Registered users shall be able to delete their accounts, removing all associated data. 🔜 NF.2
1.1.1.5 Registered users shall be able to log out from the system. ✅ Done
1.1.1.6 Registered users shall have a profile page displaying their waste reduction statistics. ⏳ Partially Done
1.1.1.7 Registered users shall be able to edit their profile, including username and goals. ⏳ Partially Done
1.1.1.8 Registered users shall be able to set and update their waste reduction goals in grams or kilograms per week. ✅ Done
1.1.1.9 Registered users shall be able to upload a profile picture up to 2 MB in size. ✅ Done
1.1.1.10 Unregistered users shall have limited, read-only access to the application: view posts, community challenges and forums, but no interactive or posting capabilities. ✅ Done
1.1.2 Waste Tracking Requirements
1.1.2.1 Registered users shall be able to log their daily waste generation in grams or kilograms. ✅ Done
1.1.2.2 Registered users shall be able to categorize waste into at least five predefined types (plastic, organic, paper, metal, glass). ✅ Done
1.1.2.3 Categorized waste shall be tracked using different units based on type (count items, weight, or volume). ✅ Done
1.1.2.4 Registered users shall be able to view historical waste data for at least the past 12 months. ✅ Done
1.1.2.5 Registered users shall be able to visualize historical waste data through charts and bar graphs. ⏳ Partially Done
1.1.3 Gamification and Challenge Requirements
1.1.3.1 Registered users shall be able to join community sustainability challenges with a defined start and end date. ✅ Done
1.1.3.2 Registered users shall earn 10 points per 500 g of waste reduction logged. ⏳ Partially Done
1.1.4 Post Requirements
1.1.4.1 Registered users shall be able to create and share posts containing tips, eco-friendly product recommendations, and stories. ✅ Done
1.1.4.2 Registered users shall be able to delete their own posts. ✅ Done
1.1.4.3 Moderators shall be able to see reports that users send about a post. 🔜 NF.2
1.1.4.4 Moderators shall be able to delete a post if it includes inappropriate words or hate speech. 🔜 NF.2
1.1.4.5 Registered users shall be able to save posts. ✅ Done
1.1.4.6 Registered users shall be able to like posts. ✅ Done
1.1.4.7 Registered users shall be able to comment on posts. ✅ Done
1.1.4.8 Registered users shall be able to share (create) posts (to the explore page). ✅ Done
1.1.5 Incentive and Reward Requirements
1.1.5.1 Registered users shall be able to view available eco-friendly rewards that they can redeem using accumulated points. 🗣️ NF.1
1.1.5.2 Registered users shall be able to view their points balance and transaction history. 🔜 NF.2
1.1.5.3 Registered users shall be able to redeem rewards through a confirmation process. 🔜 NF.2
1.1.5.4 Registered users shall be able to take rewards (such as points) from forum activities automatically. 🔜 NF.2
1.2 System Requirements
1.2.1 Performance and Storage
1.2.1.1 The system shall store user data, including waste logs and progress reports, for a minimum of 3 years. ✅ Done
1.2.1.2 The system shall process and update waste reduction analytics within 5 seconds after new data entry. ✅ Done
1.2.2 Waste Tracking Requirements
1.2.2.1 The system shall generate weekly and monthly visual reports summarizing waste data. 🔜 NF.2
1.2.2.2 The system shall calculate and display the percentage reduction in waste over time. ✅ Done
1.2.2.3 The system shall generate graphs and charts for visualizing waste data. 🔜 NF.2
1.2.3 Gamification and Incentive Requirements
1.2.3.1 The system shall maintain leaderboards displaying the top 10 users in each challenge, ranked by completed waste reduction goals. ✅ Done
1.2.3.2 The system shall assign achievement badges when users reach predefined milestones (5 kg, 10 kg, 20 kg waste reduction). ✅ Done
1.2.3.3 The system shall provide a rewards catalog where each reward is described (discount vouchers, eco-friendly products). 🔜 NF.2
1.2.3.4 The system shall grant predetermined rewards automatically when users level up or finish top 3 in a challenge. 🔜 NF.2
1.2.3.5 The system shall create different leaderboards by country, reflecting local waste-management policies. 🔜 NF.2
1.2.3.6 The system shall assign achievement badges to the top 3 users at the end of each challenge. 🔜 NF.2
1.2.4 Notification System Requirements
1.2.4.1 The system shall send notifications to users about their goal-progress as warnings. 🔜 NF.2
1.2.4.2 The system shall send notifications for leaderboard updates. 🔜 NF.2
1.2.5 Post Requirements
1.2.5.1 The system shall support text, image, and link attachments in shared posts. ✅ Done
1.2.5.2 The system shall include tagging and categorization features to help organize content by sustainability topics. 🔜 NF.2
1.2.5.3 The system shall provide a semantic search over the forum page. ✅ Done
2 Non-Functional Requirements
2.1 User Experience Requirements
2.1.1 Performance Requirements
2.1.1.1 The system shall provide a response time under 2 s for 95 % of user actions (logging waste, viewing leaderboards, interacting with community). ✅ Done
2.1.2 Usability Requirements
2.1.2.1 The platform shall support multilingual functionality, translating all UI elements and content. 🔜 NF.2
2.1.2.2 The system shall provide tooltips, tutorials, or onboarding guides for first-time users. 🔜 NF.2
2.1.2.3 All form inputs shall include inline validation to prevent errors before submission. ✅ Done
2.1.3 Waste Tracking Requirements
2.1.3.1 The system shall ensure waste tracking data updates in real-time without page refresh. ✅ Done
2.1.3.2 The waste tracking module shall support batch data entry, enabling users to log multiple records at once. 🗣️ NF.1
2.1.4 Gamification and Challenge Requirements
2.1.4.1 The system shall ensure fairness in leaderboards by preventing fraudulent activity (duplicate logs). 🔜 NF.2
2.2 Scalability Requirements
2.2.1 The platform should be designed for horizontal scalability, enabling additional servers or cloud instances as demand increases. ✅ Done
2.3 Security Requirements
2.3.1 User data shall be encrypted to prevent unauthorized access and data breaches. ✅ Done
2.3.2 System shall require a password with at least 6 characters, including at least one number and one letter. ✅ Done
2.3.3 The platform should comply with Turkish KVKK, ensuring minimal, accurate data storage and robust security measures. ✅ Done
2.3.4 System shall ask user for KVKK approval to register. ✅ Done
2.4 Portability & Compatibility Requirements
2.4.1 The platform shall function correctly on modern web browsers (Chrome, Firefox, Edge) without layout or feature issues. ✅ Done
2.4.2 The platform shall be responsive and function correctly on mobile devices, tablets, and desktops. ✅ Done
2.5 Eco-Requirements
2.5.1 The platform shall prioritize hosting providers with certified renewable energy usage and low carbon footprints to align with sustainability goals.
                                                                            | 🔜 NF.2        |

Additional Notes

  • The gamification procces is reworked, so there is no need to add point balance system implementation.
  • We have decided to continue with a badge sytem tracked by the overall historical data of the user.

2.2 UI-UX

Code Repository Links

  • Mobile UI Implementation: repo
  • Web UI Implementation: repo

Mobile Interface

1. Welcome Page 2. Guest Explore Page 3. Login Required Warning 4. Register Page
  • The app greets us with the welcome page. There are navigators to the "Login", "Register", and "Continuing to Forum Without Login" there. Also, external APIs such as "Trivia Associated With the Total Number of Users", "Air Quality Report", and "Weather Widget" and trending posts container can be seen.
  • A first-time user can directly start viewing the explore (forum) page and explore the content about waste reduction and environmental topics.
  • In order to save (or like and comment on) posts, a user needs to log in first.
  • By clicking on the "Go to Login" button on top of the "Guest Forum" page, the user can create an account with secure credentials or log in.
5. Explore Page 6. Light Mode 7. Comment on Post 8. Edit & Delete Comments
  • Logged-in users can enjoy the full capabilities of the feed page by liking, saving, and commenting on posts.
  • The mobile app also fully supports both light and dark modes across all pages.
  • It is also possible to edit and delete a comment.
9. Search posts 10. Goals page 11. Challenges page 12. Leaderboard
  • By using Wikidata's external API, a user can search for a specific word semantically, in the example above the word "Trash" has been searched and related posts are shown.
  • A user can switch the Goals page from the navigation bar at the bottom. On this page, it is possible to create new waste reduction goal entries, edit and delete them, add a waste log associated with that waste goal, and visually track the Waste Log with a colorful progression bar.
  • On the challenges page, a user can view and filter challenges. After a specific challenge has been clicked, a user can attend/leave that challenge and view the leaderboard associated with it.
  • Administrators are able to create a challenge by assigning a deadline, waste type, and a base point. Initially, everyone has that base point, (in the example above the user @kerim.kasar just attended the challenge so he has 100 base points). The more waste log entries a user logs, the more points they lose and end up being demoted from the upper places in the leaderboard.
13. Create New Waste Goal 14. Add Waste Log 15. Updated Leaderboard 16. Profile Page
  • If a user adds a waste log entry after joining a challenge, their rank in the leaderboard will change dynamically. In the example above, the user logs 1.9 kilograms of plastic and as a result, moves to 4th place in the leaderboard. This process goes on till the end of the challenge.
  • On the personalized profile page, it is possible to navigate to the logout, edit profile, view badges, view saved posts, and create and manage posts.
17. Saved Posts Page 18. My Badges Page 19. Edit Profile Page 20. Create a New Post Page
  • A user can save a post to see it later and unsave it if they change their minds. The saved posts page can be accessed from the profile page.
  • A user can also view the badges they earn after starting using the app. After adding some specific amount of waste log, a user may earn several badges for those waste types.
  • It is also possible to edit your bio and update your profile picture anytime.
21. Add Image 22. Updated Explore Page 23. Manage My Posts Page 24. Edit Posts Page
  • A user can attach a photo that is selected from the gallery too.
  • After a post is created, it can be interacted from the explore page by other users as well.
  • To edit or delete a post, the user can go to the "Manage Posts" section under the profile page. It is possible to edit the description of the post or change the image.

Web Interface

1

  • The first page when we open the website is the homepage. There are Multiple slides in homespage. In the first slide we can either login , register or enter the feed as an unregistered user.

2

  • The second slide of homepage shows how many user we have.

3

  • The third slide of homepage shows how much plastic,paper,metal,glass and organic waste is produced each year. This lets people see how much of an impact we can have on our planet.

4

  • The forth slide of homepage shows the percentage of renewable energies in energy production in the world,EU and Turkey. Note the there is an trend towards increase as years pass.

5

  • The fifth slide of homepage shows how much forest we lost in 2022 to highlight the importance of waste reduction.

6

  • The first slide of main page allows us to go to register or login page. In register page you can register with a username, password and e-mail. You must also accept the KVKK to register. After registering you can enter via login page with your e-mail or username and password.

7

  • After logging in, you are redirected to mainpage. Here you can use the top bar to navigate and visit goal pgae, challenge page, the feed or your profile. You also log out. In the left side mainpage shows some of the posts in feed without the user needing to visit the feed. In the left side some of the challenges are shown from challenge page. User can join these challenges inside mainpage.

8

  • In feed, We page posts , a search bar(1) and a create post button(2). The search bar can be used to search various post semantically. The posts themselves have many functionalities including like(3) , edit(4),make comment(7)i delete(6) and save. The post shows who posted it(5), how many likes and comments is has and whether you saved it or not.

9

  • If the use presses the create post button in feed, a panel opens that the user to post any text and a picture (optional). When the user is ready to send the post , he/she can push the post button.

10

  • In the challenge page, we have various challenges(6) created by the admins in the left. Users can join(1) and leave(3) these challenges. Each challenge has a due date and a set amount(5). These are the amounts you shouldn’t exceed until the due date if you join the challenge. Each challenge also has a leaderboard(2). By clicking the leaderboard button(2) , user can view the leaderboard for that challenge in the right side. The number in the leaderboard correstpond to the amount set by the challenge minus the amount of waste that user created.

11

  • In the goal page, users can create(1), view, edit(2) and delete waste goals. Each goal has a type(3), unit(4) , a limit(3) and a duration. The user is supposed to not react the limit in this duration. When the user wants to log their waste, They can press the add log button inside each goal and give how many waste they created. If the user wants to create a new goal ; he/she can press the create goal button , give maste type, unit, duration and amount, and create a new goal.

12

  • In the profile page, the user sees his/her name, biography(2), profile picture (if there is one)(1) and any saved post(5). The user can edit(3) profile details then save(6) it. The user can also get various badges(4) from challenges and waste logs. These bagdes are shown in the profile page.

3. Individual Contributions

3.1 Ahmet Çağdaş Girit

Member

Ahmet Çağdaş Girit, Group 5, Frontend (React).

Responsibilities

Frontend Developer, Documenter.

Main Contributions

  • Implemented the register page: #117
  • Implemented Waste goal page: #157

Project Management & Documentation

  • Wrote the create ui/ux documentation comments.

Reviews

  • Implement frontend for external api function: #274

3.2 Abdurrahman Arslan

Member

Abdurrahman Arslan, Group 5, Frontend (React).

Responsibilities

Frontend Developer, Documenter.

Main Contributions

Task Duration Related Link
Added "Research" section in sidebar 10 mins issue-20
Made a research about git and added introduction section of git documentation 2 hours issue-21
Added two scenarios and one of them is in final page with mockups as Scenario-3 2 hour issue-28
Took and finalize notes of meeting-5 1 hour issue-46
Attended to customer meeting and updated requirements according to meeting notes. Here are my changes "1.1.1.1 is modified; 1.1.4.5, 1.1.4.3, 1.1.4.4, 1.2.5.3, 2.3.2 and 2.34 are new; 2.3.2(old) is removed, fixed some enumarations" 2 hours issue-47
Updated glossary with following additions: Moderator, Report, Tagging, Semantic Search, Batch Data Entry, KVKK 40 mins issue-59
Added a use case diagram draft as draft-4. 2 hours issue-48
Reviewed user scenario of Ahmet Çağdaş 10mins issue-63
Reviewed class uml diagram with @yukseleren 30 mins issue-76
Created a class uml diagram draft as draft-8 2 hours issue-77
Created semantic search sequence diagram and add necessary methods to class uml diagram 2 hours issue-84, issue-90
Learned about frontend development from youtube-link1-link-2 and freecodecamp 5 hours #103
Implemented login page 2 hours issue-104, pr
Implemented post cards, like button, save button and their functionalities. 5 hours issue-143, issue-144, issue-146, pr
Implemented feed page with limitations according to login status 1.5 hours issue-138,pr
Implemented comment system 2 hours issue-188,pr
Implemented post, update and delete features 3 hours issue-197,pr
Reviewed and helped @yukseleren while he is fixing cache handling for username 20 mins issue-193
Implemented challenge page with viewing, attending or leaving and viewing leaderboard using the leaderboard cards Ahmet Çağdaş implemented. 4 hours issue-196 ,pr
Implemented create and end challenge features reserved to admins. 2 hours issue-245
Fixed the delayed reaction of like and save buttons and prevent api call conflicts with repetitive clicks 1 hour issue-212,pr
Added spinner component to be used for loading information all around the app. 1 hour issue-247
Updated feed page for new decisions about bootstrap integration 2 hours issue-259
Implemented an api function using an external api as sustainable energy to total energy consumption ratio from world bank 2 hours issue-270
Implemented search bar for feed page for semantic search in a way that feed page shows the resulting posts and allowing to go back to feed. 3 hours issue-272, pr
Implemented frontend for external api function 1 hour issue-274,pr
Implemented badges for profile page 1 hour issue-293
Fix load more in feed 1 hour pr

3.3 Yüksel Eren Şen

Member

Yüksel Eren Şen, Group 5, Frontend Team (React).

Responsibilities

Frontend Lead, Documenter.

Main Contributions

Web Development

  • Set up the figma pages and showed members how to use figma : issue
  • Explained and showed how react, javascript and related components work to my teammates
  • Arranged the flow of pages in frontend : issue
  • Created carousel element in homePage with login register and feed buttons. Added some motivatonal carousel items after first page. issue
  • Added some effects to the numbers we show in homepage.
  • Implemented the cache handling for caching username and isAdmin properties.
  • Added navigation between pages
  • Showed how to pass variables to children elements to teammates for component handling and implemented it for url, isLoggedIn, username variables for app.js. Then used this technique if needed between children.
  • Implemented main page where we show some posts and challenges. Used bootstrap carousel and cards. Edited PostCard accordingly. issue
  • Implemented profile page showing biography, username and user photo. issue
  • Added edit profile logic to profile page. issue1 , issue2 Added saved posts and posts by user to profile page. Implemented a button to switch between them. issue
  • Reimplemented the goals page. Since the initial implementation of goals page was not fit to our design parameters and didnt include some features (adding log, showing progress bar, showing duration and amount) I reimplemented it from scratch. issue
  • Implemented goalcard. issue
  • Implemented the navigation bar. Added logout button as a side component which is also implemented by me. issue1 , issue2
  • Solved issue of navbar scrolling and background image zooming. issue
  • Edited login page according to our new approach with bootstrap, created a new css field for it. issue
  • Finalized registration page with some new functionalities. issue
  • Edited registration page with our new approach with bootstrap. issue
  • Edited challenges page with our new approach with bootstrap, created a new css field for it.
  • Implemented challenge card according to new bootstrap approach and added edit and leaderboard buttons to it.
  • Implemented leaderboard modal.
  • Reviewed all the pages and solved bugs that are generated because of bootstrap import. issue

Project Management & Documentation

  • Managed the meetings of frontend
  • Arrenged the division of labor for frontend throughout the implementation
  • Wrote the create ui/ux documentation slides
  • Guided mobile team in the beginning of their implementation for 2 weeks showed them some basic implementations and how react native works. Implemented a basic login logic.

Pull Requests

  • PR1 : I created an endpoint for backend to give the total users registered to system currently.
  • PR2 : The initial implementation of most of the pages for frontend. I implemented Logout, homepage, mainpage, profile page, navbar, goalcard in this pr. But the main work for me was to fix the bugs in all of the frontend and lead the implementation for frontend team.
  • PR3 : I arranged the frontend requests according to deployed url
  • PR4 : After using bootstrap for both implementation and design, all the pages except waste goal page are changed. Added new functionalities of milestone 3.
  • PR5 : Added final implementations for frontend. I reviewed all the pages again, fixed bugs, added waste goal page and components, added external api handling to both frontend and backend, added progress bar and goaldcard edit functionality
  • PR6 : Added saved posts in profile page. Fixed bugs

External API

  • Researched suitable external APIs and selected the total forest area api for world. The reason for that was it was closely related to wasting and I wanted to show that in homepage how much forest we lost in a year with api call.
  • Implemented a new backend route /forestReduction by adding three Java files:
    • HomePageController.java edited this file to include endpoint
    • ForestStatsService.java to call the forest area api and calculate the forest reduced in a year
    • ForestResponse.java to model the returned JSON
  • On the frontend side, extended HomePage so that immediately after fetching usersCount it calls /api/number/{usersCount} and saves the returned forest area number.
  • Added a carousel to show forest area reduced in 2022(latest year api returns)
  • All changes committed in PR Commits

Member

Abdülkerim Kasar, Group 5, Mobile (React Native/Expo).

Responsibilities

Group Communicator, Mobile Developer, Mobile Communicator, Documenter.

Main Contributions

Mobile Development

  • Set up the mobile workspace, emulator configuration and a dedicated development branch: #116 & #218.
  • Implemented the authentication flow (basic login & register) and refactored it after Mobile Meeting 3: #115, #125.
  • Delivered a dynamic Home page featuring live user count and trending posts — merged in PR #190 (issue #174).
  • Implemented semantic search with deep-link navigation, merged in PR #190 (issue #175).
  • Built the end-to-end Waste Goal/Waste Log page with progress visualisation, emulator-safe layout and continuous UI upgrades: #220, #242.
  • Added post management tools: edit & delete posts (#225), image upload in post composer (#227) and profile-photo upload/view (#243).
  • Integrated the saved-posts API endpoint on backend side: #173.
  • Fixed critical runtime issues: CORS policy during local testing #171 and non-scrollable comments list #252).
  • Integrated a global environmental-data API from backend to mobile dashboard widget: #257.
  • Added unit tests for HomeScreen.test.tsx and PostItem.test.tsx using Jest & Testing-Library: #217.
  • Contributed to backend endpoints (saved posts, external API wrapper) and ensured Expo-web compatibility for new routes.

Project Management & Documentation

  • Authored the initial communication plan and personal wiki template: #7 & #8.
  • Published and moderated meeting notes for 14+ sessions (e.g., #26, #91, #216).
  • Re-organised the wiki sidebar, refreshed the home page and opened dedicated mobile-documentation sections: #110, #129, #130).
  • Drafted and iterated on UML artefacts – use-case, class and sequence diagrams: #56, #67, #81).
  • Expanded and reviewed requirements, glossary and user scenarios: #40, #51, #61).
  • Compiled and uploaded the Milestone 2&3 report and artefacts: #159 #306).

Code-Related Significant Issues

  • #115 Basic login & register
  • #125 Mobile refactor after Meeting 3
  • #171 CORS policy fix
  • #174 Dynamic Home page (PR #190)
  • #175 Semantic search (PR #190)
  • #173 Saved-posts endpoint integration
  • #220 Waste Goal / Waste Log feature
  • #225 Edit & delete posts
  • #227 Image upload in posts
  • #243 Profile-photo upload/view
  • #257 External API integration

Management-Related Significant Issues

  • #7 Communication plan
  • #8 Personal wiki template
  • #110 Wiki sidebar redesign
  • #129 Mobile documentation hub
  • #158 & #159 Milestone 2 report & uploads
  • Meeting-note logs (e.g., #26, #131, #180, #228)

Pull Requests

Created by Me

  • PR #190 Dynamic Home page, live metrics & semantic search
  • PR #189 Backend Side getSavedPosts API implementation
  • PR #224 Functionally complete Waste Log/Goal page with proper input validation, edit/delete post page, Android UI improvements, unit test, view posts with images
  • PR #248 Photo upload option on edit/create post, graphical improvements on Waste Log/Goals page, add/edit profile photo, scrollable comments, proper API handling of manage posts page, more UI adjustments
  • PR #258 External API (Number trivia), comment bugfix, more unit tests
  • PR #285 margin fix
  • PR #286 All mobile implementations (mobile-dev)
  • PR #301 configuration files of deployed APK

Reviewed / Merged by Me

  • PR #191 Implement challenges and leaderboard tab.
  • PR #198 Comment feature (not merged)
  • PR #200 Like/save posts (not merged)
  • PR #229 Like and comment post.
  • PR #246 Save post/saved posts page.
  • PR #251 Scroll down in mobile posts page bug resolved.
  • PR #269 External API, unit tests.

Unit Tests

Unit tests for HomeScreen.test.tsx and PostItem.test.tsx are in mobile/__tests__/ and were merged via issue #217.

External API

  • Researched suitable external APIs and selected the public Numbers API for its simplicity and fit with our existing totalUserCount variable.
  • Implemented a new backend route /api/number/{n} by adding three Java files:
    • NumberController.java to expose the endpoint
    • NumberService.java to call the Numbers API and handle fallbacks
    • NumberTriviaResponse.java to model the returned JSON
  • On the mobile side, extended HomeScreen so that immediately after fetching usersCount it calls /api/number/{usersCount} and saves the returned trivia text.
  • Updated the UI to render the trivia fact below the trending posts (see screenshot in commit).
  • All changes committed in 25c6333 on mobile-kerim branch and documented in issue #257: backend service, controller, response model and mobile integration complete.

This page is just a summary and extraction of the main parts of my contribution. For a detailed log of weekly contributions and time spent, please see here.

Member

Cengiz Bilal Sarı, Group 5, Backend Team

Responsibilities

Backend Lead, Devops Engineer, DB Manager, Documenter.

Main Contributions

For a detailed log of weekly contributions and time spent, please see here

Backend Development

Deployment & Infrastructure

  • Researched and deployed backend on DigitalOcean with Docker containers here
  • Configured Google Cloud SQL for managed MySQL database instance and connections (ip: 34.58.140.184)
  • Arranged docker container system and docker compose file for it here
  • MySQL database schema design and initialization scripts, including triggers for waste log, waste goal, profile etc. here

Code Review & Quality Assurance

  • Reviewed 20+ PRs here
  • Authored unit tests for auth services, validating edge cases like duplicate registration here

Documentation & Leadership

  • Created comprehensive backend documentation covering API contracts, setup, and Wikidata integration here
  • Moderated 4+ backend team meetings and maintained decision logs here
  • Writing API documentation for the deliverable here
  • Writing Dockerization documentation for the deliverable here

Issues

Code-Related Significant Issues
Issue Explanation Issue Link
login and register functionality #99
Review and corrections of codes written by other individuals, review and correction of database #112
Review of the backend codes written by the others and correct the code, make neccessary modifications and additions #153
Review of the backend codes written by the others and correct the code, make neccessary modifications and additions #153
bug fix for photo url #136
most liked posts and total amount of logs endpoint for home page #154
Create generic structure of the wikidata external API calls #161
Create challenge related endpoints #177
Create leaderboard related endpoints- triggers update for it #179
Addition of saved liked info to the post endpoints #183
bug fix - modify get post endpoints for unregistered users #185
Review of the get saved posts- resolve conflict and modify the code for requirements #173
change the response of waste goal for progress of the user #214
research and find a way for the saving photos for profile and posts #221
implementation of saving photos for profile and post to the storage #222

Deployment Related Significant Issues

Issue Explanation Issue Link
Back-end initial setup for the individuals/ explanation of the system/ Deployment System Search And Setups #92
Research of deployment systems-Setup of environment, creation of connections to individuals #124
Creation of the deployment environment and deployment of the backend with docker container #165

Database Related Significant Issues

Issue Explanation Issue Link
write user related sql queries #93
create profile trigger after register for each user #203

Documentation Related Significant Issues

Issue Explanation Issue Link/Documentation Link
Back-end Information Documentation #97
Back-end Information Documentation New Additions #123
Meeting Notes of Backend Meeting 3 #122
keep track of backend meeting notes #156
Back-end Information Documentation for wikidata #162
Back-end Information Documentation for deployment system #166

Pull Requests

Created by Me

PR Explanation PR Link
Login And Register endpoint #98
Initial Setup #106
Database Creation #113
bug-fix , sending photo url in get Posts too #135
Endpoints for home page #155
Wikidata api integration- generic usage #160
just arrange of exceptions #163
deployment of backend, dockerfile and docker compose file #164
Challenge leaderboard essential parts #176
Leaderboard part of challenge- triggers and endpoint #178
Get posts response change #182
make username optional, and modify the methods according to that #184
just return the user id in login response #201
there is a little issue about saving profile- it is solved #202
change the response of waste goal for progress of the user #213
upload of photos for profile and post #223
get Posts for user endpoint and its method in service #236
change user id to username for request and response #237
send photo url too in the response for the get saved posts, change the request to send username #241
comment count and creator username for saved posts #267
badge part #278
fix for editing goal or progress #291

Reviewed-Modified/Merged By Me

PR Explanation PR Link
challenge, leaderboard, report, user-challenge entities #95
waste goal and waste log endpoints implementation #108
the response for forum page is added #111
Add user count endpoint - backend changes only #137
Like for posts and comment endpoints are added #152
Save Post related endpoints and the database query #170
endpoint implementation for retrieving challenges #187
getSavedPosts endpoint implementation #189
Main frontend #199
created get-motivated-endpoint #240
external number trivia api, comment bugfix, unit tests #258
new design, latest frontend implementations #265
external air quality api, unit tests #269
created the unit tests for waste goal service and waste log service #273
main frontend #282
All mobile implementations (mobile-dev) #286
main frontend #297
mobile dev #298
main frontend bug fixes #300
configuration files of deployed APK #301
fix load more in feed #303

Unit Tests

Unit Test Explanation Unit Test Link
registerSuccessfulRegistrationReturnsResponse Auth-Tests-1
register_EmailAlreadyExists_ThrowsException Auth-Tests-2
register_UsernameAlreadyExists_ThrowsException Auth-Tests-3
login_Successful_ReturnsLoginResponse Auth-Tests-4
login_UserNotFound_ThrowsException Auth-Tests-5
login_InvalidPassword_ThrowsException Auth-Tests-6

External API

Researched and implemented integration with Wikidata's public APIs to enable entity lookup and SPARQL query capabilities.

Implemented two main endpoints:

  1. Wikidata Entity Search API

    • Endpoint: https://www.wikidata.org/w/api.php
    • Purpose: Find top matching Wikidata entity for a given search term
    • Parameters:
      • action=wbsearchentities
      • Supports language-specific searches
      • Returns first matching result with valid Q-ID
    • Timeout: 10 seconds
    • Error Handling: Custom WebClientResponseException with detailed error info
  2. Wikidata SPARQL Query API

    • Endpoint: https://query.wikidata.org/sparql
    • Purpose: Execute complex SPARQL queries against Wikidata knowledge base
    • Parameters:
      • Accepts raw SPARQL query strings
      • Returns JSON formatted results
    • Timeout: 10 seconds (for complex queries)
    • Error Handling: Detailed error response including headers and body
  3. Implementation Details

  • Created WikidataLookUpService service class with two key methods:
    • findTopEntity() for entity search
    • executeSparqlQuery() for SPARQL execution
  • Uses reactive WebClient for non-blocking HTTP calls
  • Strict input validation (Q-ID format matching)
  • Comprehensive error handling for API failures
  1. Response Models
  • WikidataSearchResponse: Models search API JSON response
  • WikidataSearchResult: Represents individual search results
  • SparqlResponse: Models SPARQL query results

The implementation provides integration with Wikidata's knowledge graph while handling edge cases and timeouts appropriately.

Member

Osman Yusuf Tosun, Group 5, Backend Team

Responsibilities

Backend Developer, SQL Query Developer, API Endpoint Creator.

Main Contributions

For a detailed log of weekly contributions and time spent, please see here

Issues

Code-Related Significant Issues
Issue Explanation Issue Link
Filling the roadmap of the project #294
Fill the data tables #288
Create the endpoints for the like and comment features #128
Create post-related SQL queries #96

Pull Requests

Created by Me

PR Explanation PR Link
Like for posts and comment endpoints are added #152
The response for the forum page is added #111

Member

Ahmet Mert Balcı, Group 5, Backend Team (Spring Boot, MySQL)

Responsibilities

Backend Developer, PR Reviewer & Tester

Main Contributions

Backend Development

  • Implemented the complete service, controller, repository, and request/response layers for Waste Goal and Waste Log features in the Spring Boot backend.
  • Designed and maintained MySQL database tables, including writing SQL triggers for automated progress tracking and leaderboard updates.
  • Authored unit tests for WasteLogService and WasteGoalService, ensuring functionality and correctness.
  • Generated realistic fake data for project presentation:
    • 200+ users
    • 50+ forum posts
    • 300+ waste goals
    • 600+ waste logs and challenges
  • Conducted research on relevant external APIs and shared results with the team. Prepared sample endpoints and example request/response pairs in Postman to guide integration.

Documentation & Research Related Issues

  • #55: Created initial Use Case Diagram drafts, which were later finalized with team feedback.
  • #66: Authored a user scenario describing typical app interaction.
  • #83: Added Sequence Diagrams to visualize backend logic.
  • #89: Updated and finalized Class Diagram after team meeting #10 based on collective feedback.
  • #215: Conducted research and curated a list of suitable external APIs for project features like motivation, sustainability, and product recommendations.
  • #253: Prepared the 3rd Milestone Report with the other team members. Assisted in creating Executive Summary, and general structure of the document.

Code-Related Issues

  • #107: Core implementation for Waste Goal and Waste Log services, repositories, controllers, and DTOs.
  • #167: Created and updated SQL triggers, modified schema to improve performance and enforce logic.
  • #271: Developed and committed unit tests for Waste Goal and Waste Log service layers.

Pull Requests

Created by Me

  • PR #108: Implemented all request/response models, repositories, services, and controllers for Waste Goal and Waste Log features. Also made a minor update to User.java.
  • PR #240: Created a MotivationService and HomePageController to fetch and return motivational quotes using the ZenQuotes API.
  • PR #273: Added unit tests for Waste Goal and Waste Log services, ensuring correctness of business logic.

Reviewed / Merged by Me

Actively reviewed and tested backend-related pull requests from other team members:

  • PR #178: Leaderboard endpoint and related triggers
  • PR #182: Changed response structure of Get Posts endpoint
  • PR #184: Made username optional in Get Posts request
  • PR #201: Added user_id to login response
  • PR #202: Fixed profile saving issues (biography & profile picture URL)
  • PR #213: Added progress attribute to Waste Goal response
  • PR #223: Implemented post and profile photo uploads
  • PR #236: Added post editing and deletion features
  • PR #237: Refactored request/response to use username instead of user_id
  • PR #267: Added comment count and author name to posts
  • PR #278: Implemented badge system based on user milestones
  • PR #289: Reviewed and corrected teammate’s external API implementation before merging

Unit Tests

  • Developed unit tests for WasteGoalService and WasteLogService, covering expected behaviors and edge cases.
  • Ensured test coverage for all business logic, including progress calculation and data validation.

External API

Implemented a GET endpoint for motivational quotes:

  • Route: /api/home/getMotivated
  • Response Structure:
{
  "content": "Life is tough",
  "author": "mertblc"
}

The response is fetched from ZenQuotes API and passed through MotivationService before returning to the frontend.

Member

Serdar Bahar, Group 5, Mobile (React Native/Expo).

Responsibilities

Mobile Developer

Main Contributions

Throughout this milestone, I focused on developing key features for the mobile application, integrating backend services, ensuring application stability, and contributing to project documentation and planning.

Feature Implementation

I was heavily involved in the mobile application's development from its early stages. My work began with implementing foundational features like user login and registration (Issue #115) and quickly moved to integrating critical backend APIs for authentication, profile management, and post interactions (Issues #127, #133).

A significant part of my efforts was dedicated to building out core engagement features. This included:

  • Developing the "Challenge" and "Leaderboard" systems: I implemented the backend endpoint for retrieving challenges (Issue #186, PR #187) and then built the corresponding frontend "Challenge" tab and "Leaderboard" display on mobile, enabling users to view, join, and track progress (Issues #172, #181, PR #191).

  • Implementing interactive forum functionalities: I added the ability for users to like/unlike posts and manage their comments (add, view, edit, delete) within the mobile forum (Issue #230, PR #229).

  • Integrating an external Air Quality API: I researched and integrated an external API to display air quality information on the mobile homepage, which involved backend setup and frontend display (Issue #268, PR #269).

  • Enhancing application quality: I addressed UI bugs, such as the "My Posts" page scrolling issue (Issue #244, PR #251), and implemented comprehensive unit tests for key screens like Login, Profile, and Challenges to ensure stability and prevent regressions (Issue #250, PR #269).

Project Management & Documentation

My contributions also extended to project planning and documentation:

  • I conducted initial research into mobile development tools and emulators (Issues #114, #205), which helped guide our technical choices and setup. This included configuring the API base URL for seamless cross-platform emulator testing (Issue #205, PR #229).

  • I actively participated in code reviews, providing feedback and merging pull requests from teammates to maintain code quality and facilitate progress

  • I contributed to the preparation of the initial draft of the milestone report (Issue #253), ensuring my work and the team's progress were accurately documented.


Code-Related Significant Issues

  • #114 learn about mobile development: I researched mobile development tools, React Native, and Expo to inform our framework selection.

  • #115 mobile/ implement basic login and register functionality: I built the initial mock "Login," "Register," and "Feed" screens.

  • #127 API integration of login, register and profile: I integrated backend APIs for user authentication and profile management.

  • #133 mobile/ view post API implementations: I implemented API calls for viewing posts and other related functionalities.

  • #172 implement leaderboard feature: I developed the mobile leaderboard component, fetching and displaying live data.

  • #181 implement challenge tab: I implemented the "Challenge" tab, allowing users to interact with challenges.

  • #186 implement backend endpoint for retrieving challenges: I designed and implemented a backend endpoint for challenge data.

  • #230 mobile/ liking and commenting posts in forum: I implemented like/unlike and a full comment system for forum posts.

  • #244 mobile/ "my posts" page scroll down bug: I diagnosed and fixed a UI scrolling bug on the "My Posts" page.

  • #250 mobile/ unit tests for login, feed and challenges screens: I wrote comprehensive unit tests for Login, Profile, and Challenge screens.

  • #268 implementing an external API: I researched and integrated an external Air Quality API, including backend and frontend work.

Documentation-Related Significant Issues

  • #205 mobile/ research on mobile emulators for presentation: I researched mobile emulators and documented findings, including an API_BASE configuration update.

  • #253 preparation of 3rd milestone report: I contributed to preparing the final milestone report by detailing my individual contributions.

Pull Requests

Created by Me

  • PR #187: endpoint implementation for retrieving challenges: I implemented the backend GET /api/challenges endpoint (resolves #186).

  • PR #191: mobile/ milestone 2 improvements regarding challenges and leaderboards: I delivered frontend implementations for the Challenge tab and Leaderboard modal (resolves #172, #181).

  • PR #229: Like and comment post functionality in forum: I implemented like, comment, and edit/delete comment features for forum posts, and included an emulator API base fix (resolves #230, part of #205).

  • PR #251: scroll down bug in "manage posts" page: I fixed a scrolling bug on the "Manage Posts" page (resolves #244).

  • PR #269: external air quality api, unit tests: I integrated an external Air Quality API and implemented unit tests for several screens (resolves #250, #268).

Reviewed / Merged by Me

  • PR #190: mobile/ milestone 2 improvements regarding semantic search implementation and homepage graphics: I reviewed and merged enhancements for mobile home screen and semantic search.

  • PR #224: waste goal/log implementations and general improvements on emulator side: I reviewed and merged Waste Goal/Log features and Android emulator UI improvements.

  • PR #232: mobile/ add user_id: I reviewed and merged the integration of userId into the global AuthContext.

  • PR #234: Mobile dev refresh fix: I reviewed and merged a bug fix for userId persistence on page refresh.

  • PR #248: Mobile-kerim final implementations: I reviewed and merged a large set of UI/UX polishings and feature enhancements for the mobile app.

  • PR #258: external number trivia api, comment bugfix, unit tests: I reviewed frontend changes for an external Number Trivia API and a comment scrolling bugfix.

  • PR #289: external api for weather: I reviewed and merged the integration of an external weather API for the mobile homepage.

Unit Tests

  • I significantly contributed to test coverage by writing comprehensive unit tests for core mobile screens: Login, Profile, and Challenges (Issue #250).

  • These tests, using Jest and @testing-library/react-native, cover rendering, interactions, API mocking, and edge cases, delivered in PR #269.

External API

  • I successfully researched, implemented, and integrated an external Air Quality API (Issue #268).

  • This involved creating backend DTO, service, and controller classes for a new /api/home/air-quality endpoint and rendering the data in the mobile UI, delivered in PR #269.

Member

Yusuf Onur Öksüz, Group 5, Mobile Team (React Native/Expo, MySQL)

Responsibilities

Mobile Developer, Data Generator, Documenter.

Main Contributions

The outline of my work is: implementing needed features in our code, fixing minor bugs, adding new ui elements, rewising our mobile-dev code branch with the updates from the main branch to keep the current working branch new, finding bugs and reporting them to my team members, testing in different devices, preparing my team for the presentation, adding scenario tips, preparing the database for the presentation.

Project Design, Presentation, Management and Documentation

  • Generated realistic fake data for project presentation:
    • 50+ real users with real biographies and 20+ users with profile photos
    • 15+ forum realistic forum posts with relevant interactions
    • 150+ waste goals for the users I've created
  • Documented git commands in our wikipage
  • Documented use case diagram, sewuence diagram and reviewed my team members work on these diagrams.
  • Documented a meeting note for the weekly meeting.
  • Reviewed and updated our status in the requirements for milestone 3 report.
  • Added mobile team's work flow and summary in the milestone report.

Mobile Development

  • Set up mobile workspace and necessary development branches.
  • Implemented the following pages, their functionalities, and testings.
    • Saved Posts
    • Badges
    • Explore Page, Profile Page, Log in Page.
      • These are team efforts not a personal products.
      • Implemented save, unsave, enhanced like, dislike features in these pages, implemented a pre-version of comments, implemented a pre-release version of wastelog and wastegoal pages.
    • Reviewed @serdarbahar and @kerimkasar 's works and gave feedback on how to change things in their respective commits and pull requests. These can be found in their contribution pages.

Feature Implementation

  • Added unit tests for SaveLikeToggle.test.tsx using Jest & Testing-Library
  • Contributed to backend endpoints for external APIs (link can be found below). Gave feedback on use of endpoints under the headline : Saved Posts.

Significant issues through the semester

  • #16 Creation of Templates
  • #49 Use Case Diagrams
  • #76 Class UML Diagrams
  • #16 Sequence Diagrams
  • #231 Mobile/Backend Variable passing
  • #233 Save/ Unsave Post feature and relevant page updates.
  • #275 External API
  • #276 Unit Test

Pull Requests

Created by Me

  • PR #198 Adding comment feature for the explore page.
  • PR #232 Implementing user_id variable usage for mobile.
  • PR #234 Fixing a bug that happens when a page is refreshed.
  • PR #246 Adding save/unsave posts feature to the explore page. Adding saved posts page to the profile. Adding save unsave, and relevant data for the posts to the saved posts page.
  • PR #277 Adding unit test for the features like and save.
  • PR #284 Adding badges page for the profile.
  • PR #289 Implementing external API from open-weather.
  • PR #299 Fixed a bug happening with the server IP's

Reviewed / Merged by Me

  • PR #286 mobile team's multiple commits, several feature implementations that are tested .
  • PR #140 First milestone total work merge.
  • PR #285 UI/UX enhancements.

Unit Tests

Unit tests for SaveLikeToggle.test.tsx in mobile/__tests__/ and were merged. The relevant PR is here and the bug fix, feature change commits are done in the PR.

External API

  • Researched suitable external APIs and selected the open-weather API for its simplicity and the new developer friendly implementation.
  • Implemented a new backend route /api/getCurrentWeather by adding three Java files:
    • CurrentWeatherController.java to expose the endpoint
    • CurrentWeatherService.java to call the open weather API and handle fallbacks
    • CurrentWeatherResponse.java to model the returned JSON
  • Implemented a safe API key usage to prevent potential miisuse by external users.
  • On the mobile side, extended HomeScreen so that immediately after fetching mounting/refreshing it calls /api/getCurrentWeather and returns the necessary fields such as humidity and current weather.
  • Updated the UI in HomeScreen to show an emoji of the current weather, simple and attractive.
  • Relevant PR's are below, they include all the commits or these changes:

4 Tools Used

  • Postman : An API platform for building, testing, and documenting RESTful APIs. It allows developers to send HTTP requests, inspect responses, and automate API testing workflows.
  • Figma : A collaborative web-based design tool used for UI/UX design. It enables teams to create wireframes, prototypes, and interface mockups in real time.
  • Docker : A containerization platform that packages applications and their dependencies into lightweight containers, ensuring consistent behavior across different environments.
  • Google-Cloud-SQL : A fully managed relational database service by Google Cloud that supports MySQL, PostgreSQL, and SQL Server. It simplifies database management tasks like backups, patching, and scaling.
  • DigitalOcean : A cloud infrastructure provider offering scalable virtual machines (droplets), managed databases, and other tools for deploying and managing applications.
  • Expo is a framework and platform for universal React applications. It helps you develop, build, and deploy React Native apps quickly, often without needing to touch native code.
  • Android-Studio is the official IDE for Android development, and it includes tools to test Android apps on virtual devices called emulators.
Task Effort Actual Time Related Issue
Created my personal page using the template. Low 30 minutes #12
Created the Research and Resources sections of the wiki page. Medium 50 minutes #13
Learning git and github, focusing on terminal commands that are going to be used frequently Medium 1 hour #22
Created a section for git-hub commands. High 2 hour #22
Research on our project topic, this was required for all of us to do so that we could come up with ideas. Medium 2 hours No issue related to individual research
Add a draft for functional requirements Medium 1 hour #31
Update the functional requirements and update the glossary accordingly, after the group discussion. Medium 1 hour #40
Create Draft Use Case Diagram Medium 2 hours #50
Review all the requirements and update them according to the customer meeting. Medium 1 hour #47
Add a User Scenario Medium 1 hour #57
Update Historical Records & Templates High 1 hour #68
Add new Requirements about post interactions High 30 minutes #69
Improve Class Diagram Draft Medium 1 hour #71
Add Sequence Diagram High 2 hours #85
Sequence Diagram Drafts Uploaded by the team members and give feedback. High 3 hours Example reviews: #84 #88 #83
Learning about backend development and the tools we are going to use - had no prior experience with backend. Very High 3 hours No related issue for individual research
Setting up tools like Postman, Intellij, MySQL Workbench, SpringBoot Very High 3 hours #92
Set a local database, ensure connection, check functionality. Medium 2 hours #105
Implement the database tables and queries for challanges, leaderboards and reports Very High 5 hours #PR #105
Implement view profile endpoint(controllers, requests, responses, service, exceptions) Very High 4 hours #PR #109
Implement edit profile endpoint(controllers, requests, responses, service, exceptions) Very High 3 hours #PR #109
Code review: Review the codes for login and register endpoints. Merge the pull request. Medium 1 hour #PR
Implement database tables and queries for saved posts Very High 2 hours #169 #PR
Implement endpoints for saving, getting, unsaving posts endpoint(controllers, requests, responses, service, exceptions) Very High 4 hours #169 #PR
Update and push the unit tests Medium 1.5 Hours #280
Add an external API High 2 hours #PR #279
Create mock users, challanges, leaderboards, wastes, waste goals for the application demo and presentation. Medium 3 hours #288

5 Acknowledgments

We extend our sincere gratitude to:

  • Our course instructors for their invaluable guidance and support throughout this project.
  • The Zero Waste community on Reddit for providing inspiration and practical insights that have informed our platform's design and features.
  • The open-source community for the robust tools and libraries that have been instrumental in the development of WasteLess.
  • Our dedicated development team members for their hard work and commitment to this milestone.
⚠️ **GitHub.com Fallback** ⚠️