Milestone Report - bounswe/bounswe2025group2 GitHub Wiki

Executive Summary

Backend

The back-end of our application which can be found under the backend folder of our mono-repo and is written using Django and Django Rest Framework. The back-end team was responsible for implementing the API and the database. Our tech stack is: Django version 5.2, Django Rest Framework version 3.16.0, PostgreSQL version 15 and finally as the server, we have configured a Daphne ASGI server which is capable of handling WebSockets and HTTP2 requests. Also, we had to help the front-end team with the integration of the API and the database. We had to clear up some issues with the front-end code which was causing the front-end server to not being able to connect to the back-end server as intended. Finally, the back-end team was responsible for containerizing the application using Docker and deploying it on a server.

Fronted

The Web_Frontend part of the Genfit project is a modern web application built with React and TypeScript. It uses Vite for fast development and build processes, and Tailwind CSS for styling. The project structure includes separate directories for the client (frontend), server (backend/API), and shared code. It also supports containerized deployment via Docker.

Mobile

Entire project is built with React Native. Currently the app has almost all of the necessary funcitons of an MVP. But it lacks any function related to Challanges & Leaderboards. It has 2 non-domain-specific external APIs accessible; one returns random cat facts and other returns your location based on your IP. Contrary to the frontend, the mobile works with a local server. Since the docker-file is configured to work on the server we deployed our front and back end servers, in order to run the mobile app, before setting up the server, the settings.py inside backend folder needs to be altered and the back-end server must be configured to work on localhost by changing the hostname from postgres to localhost.

Current Status of Requirements

  • Fully Implemented → ✅ (Implemented)
  • Partially Implemented → 🟡 (Partially Implemented)
  • Not Yet Implemented → ❌ (Not Implemented)

1. Functional Requirements (System Features)

1.1. User Requirements

1.1.1. Account and Profile
  • 1.1.1.1. Users shall be able to create an account by providing a unique username, a valid email address, and a password. ✅ (Implemented)

  • 1.1.1.2. Users can either register as a normal user or a coach upon registration. ✅ (Implemented)

  • 1.1.1.3. Users shall be able to send a mentor-mentee relationship request to another user to be their mentor or mentee via their profile. 🟡 (Partially Implemented)

  • 1.1.1.4. Once approved, mentors shall gain additional permissions such as: 🟡 (Partially Implemented)

    • 1.1.1.4.1. Setting fitness goals for mentees.
    • 1.1.1.4.2. Tracking mentee progress.
    • 1.1.1.4.3. Providing structured feedback and training tips.
  • 1.1.1.5. Once approved, coaches shall gain additional permissions such as: ✅ (Implemented)

    • 1.1.1.5.1. Gaining a verified badge displayed on their profile.
    • 1.1.1.5.2. Creating customized challenges.
  • 1.1.1.6. Each user shall have a profile that includes their username, profile picture, location, birth date, short bio, and age. ✅ (Implemented)

  • 1.1.1.7. Users shall be able to edit their profile details, including their name, surname, bio, birth date, location, and profile picture. ✅ (Implemented)

  • 1.1.1.8. Users shall be able to set their preferred sports categories and fitness interests. ❌ (Not Implemented)

  • 1.1.1.9. The profile shall display earned badges, fitness goals, and progress updates. ❌ (Not Implemented)

  • 1.1.1.10. Users shall be able to adjust their profile visibility settings (public, private, or visible only to friends/mentors). ❌ (Not Implemented)

1.1.2. Login and Registration
  • 1.1.2.1. Users shall be able to sign up, log in and log out. ✅ (Implemented)
  • 1.1.2.2. Users shall provide an appropriate and unique username along with a unique email address among all users, and a password to sign up. Passwords shall not need to be unique. ✅ (Implemented)
  • 1.1.2.3. Usernames shall meet the security criteria. Usernames must start with a lowercase letter, they shall consist only of alphanumeric characters, and contain at least one digit and one letter. Additionally, they shall be able to include characters only from the English alphabet. ✅ (Implemented)
  • 1.1.2.4. Email address provided by the user during registration shall be confirmed via a confirmation email. 🟡 (Partially Implemented)
  • 1.1.2.5. User passwords shall be strong, meeting the security criteria. Passwords must be at least 8 characters long, they can only include alphanumeric characters, and contain at least one letter and one digit. 🟡 (Partially Implemented)
  • 1.1.2.6. Users shall be able to change their password via a confirmation email, sent to the email address provided during registration. This can also be used when users forget their password. ❌ (Not Implemented)
  • 1.1.2.7. The system shall provide a persistent login feature that allows users to remain logged in across sessions without re-entering their credentials, if they have previously opted in. ✅ (Implemented)
1.1.3. Forum Requirements
  • 1.1.3.1. Users shall be able to create new forum threads under specific forum categories. ✅ (Implemented)
  • 1.1.3.2. Users shall be able to view forum threads. ✅ (Implemented)
  • 1.1.3.3. Users shall be able to bookmark forum threads to access them later by using a bookmarks page. ❌ (Not Implemented)
  • 1.1.3.4. Users shall be able to reply to existing forum threads. ✅ (Implemented)
  • 1.1.3.5. Users shall be able to upvote or downvote threads and comments. ✅ (Implemented)
  • 1.1.3.6. Users shall be able to report inappropriate content. ❌ (Not Implemented)
  • 1.1.3.7. Users shall be able to follow specific threads to get notifications on replies. ✅ (Implemented)
  • 1.1.3.8. Users shall be able to use search and filtering options to find relevant threads. ❌ (Not Implemented)
  • 1.1.3.9. Users shall be able to edit or delete their own posts. ✅ (Implemented)
  • 1.1.3.10. Users shall be able to earn reputation badges based on the number of upvotes they receive (e.g., Beginner, Contributor, Expert). ❌ (Not Implemented)
  • 1.1.3.11. Users shall be able to view the reputation badges of other members. ❌ (Not Implemented)
  • 1.1.3.12. Users shall be able to identify verified coaches through a special badge displayed on their profiles, posts, replies, and next to usernames to establish trust. ✅ (Implemented)
  • 1.1.3.13. Coaches shall be able to upload a proof of their coach status in the sign-up process to gain their special badge. ✅ (Implemented)
  • 1.1.3.14. Users shall be able to visit profiles of people tagged in posts. ❌ (Not Implemented)
1.1.4. Goals & Rewards Requirements
  • 1.1.4.1. The users shall be able to set personal fitness goals. ✅ (Implemented)

  • 1.1.4.2. Fitness goals shall have pre-defined types like: ✅ (Implemented)

    • 1.1.4.2.1. Walking/Running
    • 1.1.4.2.2. Workout
    • 1.1.4.2.3. Cycling
    • 1.1.4.2.4. Swimming
    • 1.1.4.2.5. Sports
  • 1.1.4.3. Depending on the type of the goal, users shall be able to set measurable limits on the goals like durations, distance etc. ✅ (Implemented)

  • 1.1.4.4. The user shall be able to update or restart the set goals. ✅ (Implemented)

  • 1.1.4.5. The user shall be able to track and see goal progress on their profile. ✅ (Implemented)

  • 1.1.4.6. Mentors shall be able to set goals for their mentees and track their progress. 🟡 (Partially Implemented)

1.1.5. Notifications Requirements
  • 1.1.5.1. Users shall be able to enable or disable notifications through their settings. ❌ (Not Implemented)
  • 1.1.5.2. Users shall reach a notification tab in the web-based platform to track all notifications and mark them as read. ✅ (Implemented)

1.2. System Requirements

1.2.1. Account and Profile
  • 1.2.1.1. The system shall implement a verification process for coach applications. ✅ (Implemented)
1.2.2. Goals & Rewards Requirements
  • 1.2.2.1. The system shall offer rewards for Goal Milestones which are badges to display on profile cover photo. ❌ (Not Implemented)
  • 1.2.2.2. The system shall send notifications for the goals that have reached their deadlines. ✅ (Implemented)
  • 1.2.2.3. The system shall send notifications to encourage users to set a goal if they haven't done so in the last week. ❌ (Not Implemented)
1.2.3. Search and Interactive Directory
  • 1.2.3.1. The system shall allow users to search for mentors, challenges, and forum discussions. ❌ (Not Implemented)

  • 1.2.3.2. The search bar shall be accessible through the main page. ✅ (Implemented)

  • 1.2.3.3. The system shall allow users to filter search results based on: 🟡 (Partially Implemented)

    • 1.2.3.3.1. Age group
    • 1.2.3.3.2. Location
    • 1.2.3.3.3. Sport type
  • 1.2.3.4. The system shall allow users to bookmark challenges for later accession from bookmarks page. ❌ (Not Implemented)

1.2.4. Challenges and Leaderboards
  • 1.2.4.1. The system shall allow users to join virtual fitness challenges. ✅ (Implemented)
  • 1.2.4.2. The system shall allow coaches to create virtual fitness challenges. ✅ (Implemented)
  • 1.2.4.3. The system shall automatically track challenge progress based on manual user input. ✅ (Implemented)
  • 1.2.4.4. The system shall display and notify users on challenge deadlines. ✅ (Implemented)
  • 1.2.4.5. The system shall allow users to view challenge history. ✅ (Implemented)
  • 1.2.4.6. The system shall maintain a leaderboard ranking participants based on challenge performance. 🟡 (Partially Implemented)
  • 1.2.4.7. The system shall support different ranking criteria. 🟡 (Partially Implemented)
  • 1.2.4.8. The system shall update the leaderboard in real-time. ✅ (Implemented)
  • 1.2.4.9. The system shall display users their rankings along with their progress in leaderboard. 🟡 (Partially Implemented)
1.2.5. Notifications Requirements
  • 1.2.5.1. The system shall notify users when someone likes or comments on their posts. ✅ (Implemented)
  • 1.2.5.2. The system shall notify users when they are tagged in a forum thread or comment. ❌ (Not Implemented)
  • 1.2.5.3. The system shall notify users when someone replies to their posts or comments. ✅ (Implemented)
  • 1.2.5.4. The system shall send updates on users’ challenge and goal deadlines. ✅ (Implemented)
  • 1.2.5.5. The system shall notify users when they earn a badge or reward. ❌ (Not Implemented)
  • 1.2.5.6. The system shall notify mentees when a mentor sets a new goal for them. 🟡 (Partially Implemented)
  • 1.2.5.7. The system shall send pop-up notifications on mobile devices. ❌ (Not Implemented)
  • 1.2.5.8. The system shall send lead emails encouraging inactive users to return to the platform. ❌ (Not Implemented)

2. Non-Functional Requirements

2.1. Performance
  • 2.1.1. The system should support up to 1000 concurrent users. ✅ (Implemented)
  • 2.1.2. The main page should load within 1 second under normal network conditions. ✅ (Implemented)
  • 2.1.3. The main page of application & web page should load within 1 second under normal network conditions. ✅ (Implemented)
  • 2.1.4. Logging into an account should take at most 3 seconds under normal network conditions. ✅ (Implemented)
  • 2.1.5. Upon completion of a challenge, the leaderboard should take at most 1 minute to be updated. ✅ (Implemented)
2.2. Reliability
  • 2.2.1. The system should have at least 99.9% monthly uptime. ❌ (Not Implemented)
  • 2.2.2. The system shall backup its database every 24 hours. ❌ (Not Implemented)
  • 2.2.3. Data restoration should occur within an hour in case of a system failure. ❌ (Not Implemented)
2.3. Compatibility
  • 2.3.1. The webpage should be compatible with Google Chrome (version 115+), Mozilla Firefox (Version 115+) and Apple Safari (Version 16+). ✅ (Implemented)
  • 2.3.2. The Mobile App shall be compatible with Android 12 and above. ✅ (Implemented)
  • 2.3.3. The Mobile App should support portrait orientation. ✅ (Implemented)
  • 2.3.4. Both Web and Mobile apps should support resolutions 720p (1280x720) and above. ✅ (Implemented)
2.4. User Friendliness and Usability
  • 2.4.1. The platform should allow users to navigate to any primary feature within 3 clicks. ✅ (Implemented)
  • 2.4.2. The interactable UI elements should support scaling. ✅ (Implemented)
  • 2.4.3. Each page shall be loaded within 3 seconds under normal internet conditions. ✅ (Implemented)
2.5. Privacy and Data Related
  • 2.5.1. All sensitive data should be stored securely with encryption. ✅ (Implemented)
  • 2.5.2. All data transmissions should be secured with secure communication protocols. ❌ (Not Implemented)
  • 2.5.3. The system should delete accounts with users' requests within 14 days. ❌ (Not Implemented)
  • 2.5.4. The platform shall require guardian consent for users under 13 years old. ❌ (Not Implemented)
  • 2.5.5. The platform should allow users to switch onto a "private" setting. ❌ (Not Implemented)
  • 2.5.6. The platform should comply with KVKK by allowing users to access, correct, and delete their personal data upon request. ❌ (Not Implemented)

Individual Contribution

Alperen Akyol

Alperen Akyol – Contribution Summary

Note: You can check out my weekly efforts table from here to see extended descriptions for all of my contributions one by one.

Summary: Throughout the project, I mainly took on the responsibilities of a backend developer. However, I also undertook a wide range of team-oriented and cross-functional tasks, including front-end bug fixes, deployment infrastructure setup, and team coordination efforts. Below is a detailed and verifiable breakdown of my contributions:


Backend Development

  • Notification System API: Designed and implemented the backend notification system according to our requirements.

    • API Implementation Issue: #110
    • Merged PR: #112
  • Profile Management API: Implemented backend endpoints for profile operations.

    • API Implementation Issue: #147
    • Merged PR: #153
  • Forum Module: Collaboratively developed the forum module with Doran and Yusuf. I personally implemented the vote functionality and coordinated merging efforts.

    • Forum Feature Issue: #165
    • Vote PR: #170
    • Final Forum PR: #168
  • Unit Testing & Backend Fixes: Implemented unit tests for the profile module, improved test automation, and contributed bug fixes.

    • Unit Test Issue: #194
    • PR with Tests & Refactors: #216

Infrastructure & Deployment

  • Containerization and Deployment Research: Collaborated with Berkay to explore cloud deployment strategies and containerized the entire system using Docker Compose.

    • Deployment Issue: #195
    • Merged PR: #210
  • Docker Compose Improvement: Added documentation and fixed database population noise to improve developer experience.


Frontend & Cross-functional Work (Final Weeks)

Although my main role was backend; during the final week, I actively worked on front-end integration on of my api and fixing bugs that is caused by poor front-end planning and implementation to ensure smooth delivery:

  • External API Integration: Integrated the ZenQuotes API and implemented both backend and frontend functionalities.

  • Bug Fixes in Frontend:

    • Fixed missing forums issue using location hook: #262
    • Resolved stale comment rendering in threads: #270
    • Investigated and patched vote 404 issues: #250
    • Added vote delete functionality with Ahmet: #278

Team-based & Organizational Contributions

  • Project Coordination: Moderated two meetings, took notes, actively contributed in all of the meetings, and ensured wiki documentation is consistent and updated. Example: Meeting 16 Notes

  • Requirements & Documentation:

  • Demo Video for Front-end

    • With Berkay, we have set up a mock scenario and recorded a short video showcasing the application.

Code Reviews

Performed extensive PR and issue reviews throughout the semester to ensure quality and consistency. Sample PRs reviewed:

  • Login Unit Tests: #212
  • AI Tutor Integration: #215
  • Forum Delete Functionality: #276
  • Downvote Bug Fix: #266
  • Home Page Enhancements: #283

Challenges Faced

  • Coordinating backend and frontend integration, especially near deadlines, required quick adaptation and cross-functional debugging.
  • Managing time and responsibilities during the final weeks when multiple modules (e.g., forum, notifications, deployment) needed simultaneous attention.
  • Ensuring deployment readiness via containerization, including troubleshooting Docker and DigitalOcean configurations, was more complex than anticipated.
  • Maintaining consistency between evolving requirements and current implementation introduced additional overhead, especially during the final refactor stages.

Lessons Learned

  • Collaborating closely with both backend and frontend teams improved my understanding of the full-stack workflow and strengthened my debugging skills across layers.
  • Writing and reviewing unit tests helped me develop a more test-driven mindset, catching issues early and improving maintainability.
  • Real-world deployment and containerization efforts taught me the importance of clear documentation and automation in modern software development pipelines.
  • Peer reviews are not just quality checks—they’re great learning opportunities, especially when reviewing advanced implementations like AI-based features.

This summary encapsulates my efforts across all relevant project domains. Each listed item is linked directly to the GitHub artifacts for full transparency and verifiability, below is a table that contains all of the issues and pr's that includes me.

Category Links
Issues Opened #6, #18, #35, #42, #44, #46, #52, #55, #66, #67, #80, #99, #110, #147, #151, #165, #166, #193, #194, #195, #220, #228, #229, #239, #250, #262, #270, #271, #274, #275, #278
PRs Opened #57, #112, #152, #153, #168, #170, #210, #216, #223, #237, #241
PRs Reviewed #58, #149, #171, #212, #215, #240, #266, #276, #283
Issues Reviewed #1, #8, #16, #22, #30, #38, #41, #54, #68, #98, #111, #131, #167, #190, #218, #229, #230, #264
Doran Pamukçu

My wiki page

Overview

I mainly worked on back-end design & implementation, contributed to project planning and diagrams, and ensured robust search functionality through an external geocoding API backed by an extensive unit-test suite. I also reviewed teammates’ PRs and took minutes for several meetings.


Planning & Documentation

  • Wrote the Profile & Account section of the requirements #30.
  • Created the first version of the class diagram and later updated it to reflect new entities #56 #256.
  • Produced the initial ER diagram and PostgreSQL draft #111.

Back-end Development

Feature Description Issue / PR
Goals API Co-implemented full CRUD + business logic for user goals. #145PR #149
Forum & Thread models Designed and implemented core forum entities; integrated with the rest of the forum back-end. #167PR #171 ; #165PR #165
Interactive Search Directory Added powerful filtering endpoints (text, age, participation, and geo-radius). #200PR #227
Notification updates Extended the notification system to support chat, goal and challenge events. #255PR #279

External API Integration (mandatory)

Implemented location-aware challenge search using the free OpenStreetMap / Nominatim geocoding service:

  • Converts a user-supplied place name into lat/lon, then filters challenges by a bounding box and finally by exact Haversine distance (code snippet in wiki).
  • Added proper User-Agent header and graceful error handling to comply with Nominatim usage policy.
  • Full technical write-up is available in the wiki section “Using Nominatim Geocoding Service for Challenge Location Search.”

Unit Tests (mandatory)

Wrote a comprehensive SearchChallengesAPITest suite (file: backend/genfit_django/api/tests/test_challenge_search.py, merged with PR #227) that:

  • Covers authentication, active/finished filters, user-participation filters, age-range filters, geo-radius filters, and error handling.
  • Uses mocked geocoding for deterministic results and follows the AAA pattern.
  • Ensured >90 % coverage of the new search view before merge.

Reviews & Code Quality

  • First PR review & merge: Profile back-end implementation PR #153.
  • Additional reviews / merges: PR #172, PR #217, PR #237.
  • Regularly commented on issues #169, #192, #198 to unblock teammates.

Meetings & Coordination

Date Role
All Meetings except 2, 5, 10 Took notes for meeting 7, active participant for the rest
Backend Meetings 1 - 4 Took notes for meeting 1, active participants for the rest

Challenges & Lessons Learned

  • Balancing Django learning curve with tight feature deadlines.
  • Handling RAM-heavy local environment (Docker + DB + Django + Vite) on a mid-range laptop—solved via lighter container profiles and swap.
  • Realized early that keeping requirements & diagrams up-to-date avoids costly refactors.

Quick Links

Güney Yüksel
  • Took on moderator role in our meetings.
  • Took part in designing the Class Diagram.
  • Took part in writing the nonfunctional parts of the requirements.
  • Created the main page mockup, we used that design with some tweaks in the actual app.
  • Created the first version of our project.
  • Initially took part in both Frontend and Mobile team but then shifted to mobile when that part needed more help.
  • After Ayhan wrote the initial version of the frontend, I made a general design overhaul. Updated it with our color schemes and added a Dark Mode(which abandoned later on). I added some mock data too, which mostly got overriden once the actual backend conections were secured.
  • Wrote the inital version of the mobile. This version included a basic navigation logic, top bar, bottom bar, and home page with mock data.
  • Designed setting page in both mobile and frontend.
  • Wrote every API connection of our mobile part except for the notifications. (Login, Registration, Feed, Settings, Thread Interactions, etc.)
  • Fixed quite a lot of bugs about mobile-backend connections as they happened.
  • Recorded a basic demo for the mobile part.

The links to my work in this repo is accessible via my contribution table in my wiki page.

The biggest challange for me was the 403 error code we got on Login operations. Mobile started API connections in later stages so changing the backend to suit our needs was not a viable option. We needed a CSRF token to overcome any authorization problem. Which frontend cookies handle automatically. In mobile, I also added cookies. To get the token we needed any GET function from our backend. After login this wasn't a big issue but we got 403 even before Login in some occasions. Until fixing this bug the only solution was to rebuild the server all over again. After our external APIs added, I called one of their GET functions since most of them weren't depending on user being logged in. I didn't use the body I got as a response in anywhere but it helps the code to secure credentials.

Ali Ayhan Günder

Individual Contribution Report

Overview

This report details my contributions throughout the duration of the project. It highlights my involvement in meetings, documentation, coding, feature implementations, pull requests, API integration, issue handling, and extensive unit testing.

Contributions by Activity Type

Meetings

  • Regular attendance and active participation in weekly synchronization meetings and special sessions such as customer meetings and web-focused discussions.
  • Engaged actively in project planning, synchronization activities, and progress discussions.

Documentation

  • Created detailed documentation covering advanced Git topics, scenarios, and meeting notes.
  • Maintained and updated various Wiki pages including personal effort tracking and API documentation.
  • Produced comprehensive documentation for Cohere LLM integration including technical setup, API endpoints, and privacy considerations.

Research & Learning

  • Conducted extensive research on effective scenario creation methods and UML class diagram fundamentals.
  • Studied React for frontend development and learned web app implementation practices.
  • Researched and learned the methodologies for writing effective unit tests and milestone reports.

Implementation & Coding

  • Developed critical frontend web components, specifically focusing on the Goals and Challenges pages.
  • Integrated LLM API chatbot functionality into the Challenges page to enhance user interaction.
  • Implemented advanced features and contributed significantly to frontend system construction.
  • Managed mockup design tasks for user interaction scenarios, specifically mentor registration and mentor-user contact.

Pull Requests

  • #PR136: Developed the core functionality for the Goals page, enabling dynamic interactions and tracking.
  • #PR174: Enhanced the Goals page with additional user-friendly features, significantly improving usability.
  • #PR242: Addressed bugs and enhanced the functionality for the Goals and Challenges pages, improving reliability and user experience.
  • #PR267: Added robust unit tests for the Goals and Challenges pages to ensure software quality and reliability.
  • #PR277: Quickly resolved an edge case bug that occurred during goal creation, ensuring seamless operation.

Issues

  • #208: Fixed migration-related bugs in the frontend web part.
  • #213: Developed the Challenges page functionality.
  • #219: Learned and implemented unit tests effectively.
  • #221: Integrated the LLM chatbot for guiding users on the Challenges page.
  • #253: Conducted research about milestone reporting.

API Implementation

  • Successfully integrated the Cohere LLM API, adding intelligent chatbot support for fitness challenges. Documented technical details including SDK setup, API authentication, and generation parameters.
  • Ensured robust error handling and context management for the Cohere API integration, optimizing performance and user experience.

Unit Tests

  • Implemented comprehensive unit tests to validate functionality and ensure code quality.
  • Wrote detailed unit tests covering authorization rules, data validation, business logic validations, and edge cases.
  • Conducted rigorous reviews of unit tests written by teammates, focusing on API implementations such as Zenquotes and Nutritionix.
  • Added targeted unit tests to validate critical functionalities of Goals and Challenges pages, significantly improving code reliability.

Reviews & Bug Fixing

  • Regularly conducted thorough code and design reviews for frontend implementations, API integrations, and test coverage.
  • Actively debugged and resolved migration issues and frontend bugs, ensuring stable deployment and operation.
  • Contributed significantly to bug identification and resolution, improving the overall software quality and reliability.

Highlighted Contributions

  • Weeks 7 & 10: Led coding efforts for web application setup, initial implementations, and extensive feature development for the Goals page.
  • Weeks 12 & 13: Dedicated extensive efforts towards bug resolution, unit testing, and feature enhancements, ensuring high standards for the project.
  • Week 13: Conducted significant API implementation and comprehensive testing to guarantee robust and reliable software functionality.

Overall Effort

  • Maintained consistent and proactive weekly contributions across multiple project roles.
  • Demonstrated substantial growth in technical expertise, specifically in web frontend technologies, API integrations, and unit testing practices.

Conclusion

My consistent efforts and proactive approach significantly contributed to the project's progress. My focus on detailed documentation, thorough code reviews, robust API integrations, and comprehensive testing underscore my commitment to delivering high-quality software solutions.

Yusuf Akdoğan

Overview

This report outlines my individual contributions to the project, including participation in meetings, documentation efforts, software development, API design and integration, testing, and issue tracking. My responsibilities were primarily centered around backend development and used framework was django.

Planning Phase:

I wrote 2 user scenarios (scenario 5 and scenario 6) along with their mock-ups and a sequence diagram.

İmplementation Phase:

I focused primarily on backend development using Django and Django REST Framework, API design and integration, feature implementation, testing, and collaborative planning. I was also actively involved in designing and developing key system modules such as

Note: Some of those feature are not included in the final project since their front is abondoned.

Conclusion:

Most of the work can be found in the following pages:

Ahmet Salih Turkel

Overview

  • Actively participated in weekly meetings.
  • conducted initial research & reported for the team for some advanced functionality github offers (issue #18)
  • Designed the use case diagram no:3
  • Took part in writing the nonfunctional parts of the requirements, along with Guney (issue: #29).
  • Took part in frontend web programming group. most of the report is about this part on following section:

Contributions to Project

  • As i was a part of frontend group, i took part in website's design
  • I have Implemented the Forum & Threads on website and also took responsibility of it's maintenance,
  • I took part on implementation & maintenance of the web Profile Page, along with Ahmet Burak
  • I also co-implemented the notifications page along with Guney
  • I wrote some web page for chatting purposes, but as chat used some more different techniques in order to ensure real time communication, berkay designed his own version of the page to speed things up, and as it was ready to use & performed well, we have used that implementation
  • Most of the pull requests shown above impy some sort of code review by other team members.
  • in my team I gave Code reviews for some pull requests & issues in the project: (#277) & resolved some conflicts: (#191) when required
  • I also collaborated with bakcend team to solve issues arise on front(#266) and backend (#276) side of code when needed

Endpoints & Unit Testing

  • as i was a part of frontend team, endpoint i have implemented was a simpler one, i write /api/localtime to fetch local time of the user of the app.
  • i also used an external api to locate the end user from it's api on frontend, though i have not opened an issue about it
  • the pull request related to this api can be seen here #240
  • i also implemented some unit tests to ensure that this api was working properly & handling edge cases as expected, this helperd me refine the api and possibly made the backend app a little bit more robust,
    • pr related to this: #257
  • you can refer to my personal wiki page for a more detailed documentation of this endpoint

Conclusion

  • though most of the work i've done that affected the end version of the project can be seen above, there may be some stuff left or not coming in my ming for the moment, for a more detailed report, you can refer to
    • my personal wiki page here
    • my issues here
    • and my pull requests here
Volkan Bora Seki

Individual Contribution Report

Overview

This report outlines my contributions throughout the project, including documentation, research, mobile development, diagram creation, feature implementation, API integration, and code review efforts. It demonstrates my consistent involvement in both planning and execution stages, as well as my commitment to improving mobile app functionality and team documentation.

Contributions by Activity Type

Documentation

  • Created a personal wiki page and prepared introductory materials on GitHub tools and Markdown usage.
  • Maintained consistent meeting note-taking duties and documented team roles and mobile responsibilities.
  • Wrote and refined user scenarios, and structured interaction flows.
  • Created and updated personal weekly effort tracking documentation.

Research & Learning

  • Researched GitHub workflows, project board usage, and pull request strategies.
  • Explored React Native fundamentals, mobile UI/UX design, and emulator setup processes.
  • Investigated best practices for Android interfaces and project-specific interface logic.
  • Gained hands-on familiarity with API integration and mockup tools.

Wiki Contributions

  • Documented weekly meetings (Week 3, 5, 6, 7, 9).
  • Added requirements for the sports program scenario and recorded notes for mobile-focused meetings.

Diagrams & Scenario Development

  • Contributed use case diagrams based on evolving requirements.
  • Designed user scenarios and mockups for reward systems and program finding features.

Implementation & Coding

  • Installed and configured React Native and Android emulator for the mobile frontend.
  • Designed and implemented mobile login, registration, and goals pages.
  • Developed second goal types, counters, and deadline logic.
  • Designed and implemented chat functionality, profile page, and add-new page interfaces.
  • Integrated the Cat Fact external API and enhanced user experience with visual and functional updates.
  • Designed and implemented key components including goal statistics and interactive elements.

Pull Requests

  • #183: Initial mockups for goal and login features.
  • #252: Implemented logic for goal functionality.
  • #273: Finalized profile page design and integration.
  • #280: Integrated external Cat API and demonstrated usage on demo page.
  • #286: Contributed to chat feature interface and layout.
  • #287: Designed and implemented add-new page.
  • #302: Finalized chat feature implementation.
  • #310: Reviewed and provided feedback for merged content.

Issues

  • #11: Created personal wiki and onboarding documentation.
  • #20: Provided tool introduction material.
  • #37: Researched use case scenarios.
  • #49: Scenario creation and documentation.
  • #62: Drafted use case diagrams.
  • #81: Designed mockups for reward systems.
  • #82: UI mockup for program finder.
  • #83: Added functional requirements.
  • #84: Added requirement section for sports scenario.
  • #97: Documented mobile team structure.
  • #124: React Native setup.
  • #125: Android emulator installation.
  • #126: Login/registration page.
  • #142: Goals page implementation.
  • #184: Added second type of goals.
  • #185: Goal counter implementation.
  • #186: Deadline logic.
  • #187: Profile page mockup.
  • #188: Chat mock design.
  • #189: Chat text implementation.
  • #294: Add-new page mockup.
  • #295: Image picker library integration.
  • #281: Cat fact API.
  • #298: Resolved PR conflicts.
  • #300: Added goal statistics and rate bar.
  • #272: Redesigned profile page.
  • #309: Completed weekly report documentation.

Reviews & Bug Fixing

  • Reviewed multiple issues and PRs (e.g., #90, #108, #140, #301, #310).
  • Resolved merge conflicts and assisted in integration processes.
  • Provided final feedback and UI adjustments for multiple features prior to merging.

Highlighted Contributions

  • Weeks 6–7: Designed and implemented key interaction mockups and mobile interface diagrams.
  • Weeks 10–11: Installed tools, developed core mobile pages (Goals, Login), and logic functions.
  • Weeks 12–13: Completed Cat API integration, chat functionality, and multiple UI components; managed final PRs and reviews before the submission.

Overall Effort

I contributed consistently across all weeks, balancing research, planning, development, and review responsibilities. My mobile development contributions, combined with extensive documentation and testing efforts, significantly advanced the frontend portion of our project.

Conclusion

My work has spanned research, setup, interface design, functional logic, and cross-component testing. Through proactive learning and consistent task execution, I strengthened the mobile side of the project and improved collaborative development workflows.

Ahmet Burak Çiçek

I conducted extensive research on Markdown, Git and GitHub, Django, React, and unit testing. to support both my documentation and implementation tasks. Early in the project, I created templates for issues, meeting notes, and weekly effort tracking, which helped standardize and organize the team’s work.

I actively participated in team meetings, contributing to planning and alignment discussions. I also maintained detailed meeting notes and updated them regularly to ensure clear records of decisions and action items.

On the documentation side, I wrote and revised functional requirements, including those for login/signup and social interaction features. I also created use case diagrams for login and registration flows and contributed to the design discussions by drafting and revising various wiki pages, such as “Fun Facts About GitHub” and the Nutritionix API description.

In terms of development, I implemented features in the web frontend such as the "Remember Me" button in this PR, profile page functionality in this PR, and integration of the notification page with the sidebar in this PR. I also debugged multiple issues on the profile page in this PR, including routing problems and incorrect endpoint connections for profile sections like Active Goals in this PR and Edit Profile in this PR. I connected the endpoints for chat feature, even if it was cancelled as we decided to keep the first design, I completed its PR.

I integrated external APIs like Nutritionix in this PR and Zenquotes into the app, and authored unit tests for Nutritionix to ensure the endpoints worked as expected. While the Zenquotes integration was later canceled, I completed its initial PR. I have conducted unit tests on Nutritionix API, and integrated it into the code base in this PR. Detailed description about Nutritionix API and the functionalities introduced can be found here.

I reviewed numerous issues submitted by other contributors. I reviewed LocalTime Api by Ahmet Salih, LLM feature by Ayhan, PR template by Alperen, and frontend fixes by Ayhan and many others. A comprehensive list of the issues I reviewed can be found on my wiki page

I created, reviewed, and merged numerous pull requests. For example, in this PR, I reviewed the work of Ahmet Salih about chatting page and integrated it into the app. In this PR, I reviewed the work of Ahmet Salih about profile picture upload and delete feature. A list of all the tasks I have completed can be found in the weekly effort table in my wiki page, a list of all my issues can be found here, and a list of all my pull requests can be found here

One of the biggest challenges I faced was resolving a routing problem in the profile page, which was caused by an incorrect initial setup. It took me hours to identify the issue, and it was finally resolved by the help of other team members. Another challenge was that I had to work with tools and languages that I had never worked before, and it was challenging some times.

The biggest lesson I learned from this project was that we should always keep our work documented. I always had to go back to previous versions of my work, use or edit some parts of that. If it was not handled properly, it would cause problems and halt our progress.

Talha Başıbüyük
This is my report about my contributions.

Research/Planning Phase

  • Researched Markdown and added a personal page on the project wiki: Investigated best practices for Markdown syntax and created my personal wiki page. #13.
  • Researched Git & GitHub alternatives and authored an Exemplary Repos page: Gave an example for an exemplary repository for team reference. Issue: #19.
  • Defined Challenges & Leaderboard requirements: Drafted the feature specification for gamification challenges and leaderboard mechanics. Issue: #32.
  • Revised and refined project requirements: Updated requirement section I originally wrote to reflect customer feedback. Issue: #53.
  • Modeled “Claiming a Reward” sequence diagram: Created and documented the UML sequence diagram for the reward-claiming workflow via the leaderboard. Diagram available in the repo. Issue: #64.
  • Updated the Sequence Diagram after feedback: Incorporated review comments and enhanced the diagram for clarity. Issue: #132.

Reviewed issues: Verified and reviewed issues, ensuring that each reflected completed work before closure. Reviewed: #7, #33, #34, #45, #48, #59, #73, #76, #88, #95, #104, #105, #199.

Implementation Phase

I developed the mobile frontend’s notification system and created an API endpoint (with accompanying unit test) to integrate the Giphy API. Although the backend integration succeeded and I could fetch GIF url data on the frontend, I encountered compatibility issues with React Native’s image handling—specifically, I couldn’t use the Fast Image component due to version mismatches—so I was unable to render the GIFs in the app. I had also planned to contribute to the challenge feature, but technical constraints (running the Android Studio emulator, Metro and npx terminals, Gradle builds, Docker-hosted server, and my IDE concurrently) limited my efficiency.

  • Implemented mobile notifications feature: #140, #269.
  • Reviewed and QA’d PRs for mobile: Provided code review for feature and bugfix PRs. #231, #252, #268, #286, #287.
  • External API Integration – Giphy: Integrated the Giphy Random GIF endpoint (/v1/gifs/random?tag=fitness) to fetch motivational fitness-themed GIFs.
Berkay Buğra Gök
  • Actively participated in the meetings and discussions, and shared my ideas and suggestions with the team as well as taking notes and documenting the meetings.
  • Took part in writing the Requirements of the project's Goal functionality and reviewing the Requirements of the other functionalities.
  • Provided the infrastructure to effectively collaborate while writing the Requirements by providing a document parser.
  • Took part in writing the sequence diagrams of the Goal functionality and reviewing the Class Diagram and the Use Case Diagrams.
  • Since I had experience with Django, I was able to guide the back-end team on the overall architecture of the project and demonstrate the back-end implementation process. Thanks to their active collaboration, we were able to implement the back-end in a short time and with high quality. [Django Introduction]
  • Took roles on all aspects of the project, except for mobile development
  • Handled relatively complex tasks which required a little more expertise and attention such as
    • Setting up the Django app, and configuring settings and database [#106]
    • Writing custom User model and authentication [#115]
    • Writing the specific API endpoints along with the rest of the back-end team such as
      • User goals [#149]
      • Real-time messaging with other users and AI, front-end and back-end [#175, #215]
    • Dockerizing the application [#210]
    • Deploying the application [#303]
  • Worked on refining and fixing the front-end code since it was implemented prematurely, once the back-end team and tasks were in a good state
  • Identified and fixed bugs in the front-end code such as
    • Unnecessary use of Express middleware for authentication (which was used outside of our decision and caused the front-end server to not being able to use authentication correctly) [#138]
    • Complex implementation of queryClient which caused our front-end server to be unable to connect to the back-end server [#144]
    • Wrong and mis-configured API endpoints in the front-end code [#150]
    • Reworked almost all front-end pages since they were prematurely written and not well thought out, the reworked pages are:

Note: As you can see, The front-end of our project had major issues (I believe it still has) and although I focused on delivering high-quality work, I had to spent most of my time trying to fix the front-end code and making it work with the back-end server. I believe that if I had the chance of spending more time on the back-end, while we had a solid front-end, we could have delivered a much better product.

Here, I am linking the commit that caused us to bleed time and effort until the end of the project: Commit which supposed to make our life easier and pushed in day 0

The tasks I have done each week can be found in the weekly effort table with more details.

The biggest challenge I faced was when I was sure that the back-end server was working as intended and the front-end server was not able to connect to it. I spent a lot of time trying to figure out what was wrong with the front-end code and why it was not able to connect to the back-end server. I had to go through the front-end code line by line and try to understand what was going on. I also had to communicate with the front-end team and try to understand their thought process and why they implemented the code in that way. In the end, I was able to identify most of the issues and fix them, but it took a lot of time and effort.

  • Commits
  • Pull Requests
  • Unit Tests
  • External API Description
  • External API PR
  • I have also tried to keep project's state in a good shape by watching the other people's contributions and making sure that the main branch is always working and ready to be deployed. I have created issues for the problems I found and tried to help the other team members to solve them.

Evaluation of Tools & Processes

Backend

Django & Django REST Framework (DRF):

Django and DRF provided a solid and structured foundation for building our backend API. DRF's serialization and class-based views allowed us to develop modular and maintainable endpoints efficiently. Given our familiarity with Python, the learning curve was manageable, and Django’s built-in features (admin panel, authentication, ORM) accelerated development. The team maintained a clear roadmap and consistently delivered new API endpoints weekly, staying on track with the project timeline despite unexpected breaks in the academic calendar.

PostgreSQL & Local Development:

To meet the course requirement of using PostgreSQL or MySQL, we chose PostgreSQL and set up local databases using Docker. This setup enabled each team member to spin up an isolated, consistent development environment from the start. We also documented the setup and backend usage instructions clearly, which helped other teams integrate with our API smoothly.

WebSockets & ASGI Server:

When the application’s messaging feature necessitated real-time communication, we transitioned from Django’s default WSGI server to the Daphne ASGI server to support WebSockets. This adjustment introduced some complexity, but it allowed us to implement live messaging functionality effectively.

Documentation & Collaboration:

Throughout development, we prioritized clear and thorough documentation. This included not only usage instructions for our API but also guidance for resolving common issues related to CORS, CSRF, and Django settings like ALLOWED_HOSTS. As a result, we were able to assist in debugging when necessary.

Testing:

We implemented unit tests for our API endpoints, and also manually tested them using Postman. This approach allowed us to ensure the reliability of our endpoints and catch potential issues early in the development process. We have made sure that when our changes are pushed to the main branch, the back-end part is working as intended by double-checking the migrations etc. on a local database from scratch.

Docker & Deployment:

Dockerization made our backend deployment-ready by ensuring environment consistency. We finalized this process near the project deadline and successfully deployed the app on a Digital Ocean server. Although we considered a CI/CD pipeline, we opted out to keep things practical and focused for the scope of the course.

General Developer Experience:

The backend development process was streamlined thanks to a disciplined implementation plan and the capabilities of Django and Docker. The specifications of the project required learning and adaptation, but the team handled these transitions effectively. Providing a reliable, well-documented backend service helped facilitate smooth collaboration with the frontend team. However, we faced challenges with the frontend code that required significant time and effort to resolve because of the premature implementation of the initial front-end code.

Frontend

React & TypeScript:
Learning React with TypeScript was initially challenging, especially getting used to strong typing and component-based structure. However, once the fundamentals were grasped, developing became much more manageable and maintainable. The clear type definitions helped catch bugs early and made the codebase easier to navigate.

Vite & Build Tools:
Setting up Vite as the development server and build tool was smooth and provided fast feedback during development. The hot reloading and fast builds improved productivity. However, integrating some plugins required additional configuration, particularly when combining with Tailwind CSS and TypeScript.

Tailwind CSS & UI Libraries:
Integrating Tailwind CSS sped up the design process, though learning its utility-first approach took some adjustment. Using Ant Design and Radix UI provided ready-to-use components, but customizing them to fit the project’s theme sometimes added complexity. Overall, these tools made it easier to build a consistent and visually appealing UI.

State Management & Data Handling:
React Query and Drizzle ORM made managing server state and database interactions straightforward, but required a good understanding of async patterns and hooks. The learning curve for Drizzle ORM was steeper compared to more mainstream ORMs, but once set up, it was efficient.

Working with Backend:
The backend team provided clear documentation for API endpoints, which made integration easier. Still, running both the frontend and backend locally was resource-intensive, especially when Docker containers were involved. Often, multiple terminals and tools (Vite server, API server, Docker, IDE, browser, and database clients like DBeaver) had to be open, which could slow down less powerful machines.

Docker & Deployment:
Dockerizing the frontend made deployment on different environments consistent. However, initial setup and troubleshooting Docker-specific issues (e.g., networking, cross-platform compatibility) took some effort.

General Developer Experience:
Once the initial setup hurdles were overcome, the development process became efficient. Modern tools and clear structure contributed to a developer-friendly experience, but the number of moving parts (frontend, backend, Docker, DB, etc.) made onboarding new developers a bit daunting.

Mobile

React Native: Learning React Native was challanging because of its component-based structure. But after the learning curve, it was a relatively developer-friendly code due to how easy it is to read and write.

Metro & Emulator: Installing it was difficult due to the specific configurations needed. Even after installing there were some issues. Building the app took upto an hour on some occasions. But the devtools of Metro was really helpful for logging and debugging.

Working with server: Our backend team did an excellent job on writing documentations on building the server and connecting to endpoints. But working with it was really hard on the computer's RAMs. When we're working on the mobile code we needed to keep a lot of windows open. 2 terminals for emulator, metro terminal, app running terminal, Docker, server running terminal, DBeaver, IDE, browser if needed. These are not including any extra tabs on browsers, background apps unrelated to our app, file explorers, or any other software for personal use.

Demo Videos

We have uploaded the demo videos to our repository and they can be found in here

Also, we have the long version of our demo video on Youtube

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