MVP Individual Contribution ‐ Aysu Keskin - bounswe/bounswe2026group4 GitHub Wiki
Aysu Keskin (Backend / DevOps Support)
1. Responsibilities:
I took an active role in several core parts of the project, mainly focusing on backend development while also contributing to DevOps-related work. Alongside implementation, I was involved in technical decision-making, coordination between development and planning activities, and various design and documentation efforts throughout the project.
2. Main Contributions:
- Set up the initial Django backend architecture and project structure.
- Implemented the project’s core authentication and authorization backend.
- Developed major story discovery endpoints, including the feed, search, and map APIs.
- Added essential user/account and interaction flows such as /users/me/ endpoints, comments, story deletion, and token refresh.
- Improved API responses for frontend integration by adding contributor, media, and interaction-related fields, and fixed related performance issues.
- Supported backend infrastructure and team workflow through Docker setup, .gitignore, and CORS configuration.
- Contributed significantly to the creation and refinement of the requirements document by helping shape its core structure and expanding it with many new and more detailed requirement items.
- Contributed to the identification and refinement of the elicitation questions, and took part in the preparation and execution of the customer and stakeholder meeting process.
- Played a major role in the project’s class diagram work, from early development to the preparation of the final consolidated version.
- Contributed to other system design tasks, including the preparation of the main use case diagram, scenario and mock-up development, and sequence diagram creation.
- Prepared and documented key planning artifacts throughout the project, including the MVP Milestone Plan, the Core Implementations Done milestone planning, and the Final Milestone Plan, helping define their scope, structure, and execution clearly.
- Defined and documented team conventions for branches, commits, and pull request workflows.
- Prepared API documentation to support development, integration, and project documentation needs.
3. Significant Issues (Top 3 per category):
Code-Related:
- Issue #117: Implement authentication endpoints for registration, login, and logout, forming the initial secure access flow of the backend.
- Issue #140: Implement the public story feed endpoint, which became one of the core discovery APIs of the platform.
- Issue #267: Implement comment endpoints for stories, adding one of the main interaction features of the platform.
Non-Code-Related:
- Issue #31: Finalize the initial project requirements, helping define the main structure of the requirements document and refine the system’s functional and non-functional requirements in a more detailed and testable way.
- Issue #100: Prepare the MVP Milestone Planning & Documentation, defining the MVP scope, core user flows, weekly execution plan, and overall milestone expectations for the team.
- Issue #187: Prepare and document the Final Milestone plan page, structuring the final implementation phase with its goals, sprint breakdown, risks, testing strategy, and completion criteria.
4. Pull Requests:
- PR #345: Added the JWT token refresh endpoint (POST /auth/token/refresh/) and completed the authentication flow with refresh-token support.
- Added tests for valid refresh tokens, invalid refresh tokens, blacklisted token reuse, and token rotation behavior. -
backend/apps/users/tests/test_views.py
- Added tests for valid refresh tokens, invalid refresh tokens, blacklisted token reuse, and token rotation behavior. -
- PR #321: Added backend delete support for stories by implementing DELETE /stories//.
- Added service- and API-level tests for successful deletion, permission handling, nonexistent stories, and correct 204 No Content behavior. -
backend/apps/stories/tests
- Added service- and API-level tests for successful deletion, permission handling, nonexistent stories, and correct 204 No Content behavior. -
- PR #271: Fixed story detail media serialization and added frontend-needed fields such as media_items, user_has_liked, and user_has_saved.
- Added tests for media serialization, empty/non-empty media cases, ordering, absolute URL generation, and authenticated interaction-state behavior. -
backend/apps/stories/tests
- Added tests for media serialization, empty/non-empty media cases, ordering, absolute URL generation, and authenticated interaction-state behavior. -
- PR #270: Added contributor_name to StorySerializer so the frontend could directly access contributor display information.
- Added serializer tests for visible contributor, hidden contributor, and anonymized user cases. -
backend/apps/stories/tests
- Added serializer tests for visible contributor, hidden contributor, and anonymized user cases. -
- PR #261: Implemented the story map endpoint (GET /stories/map/) with a lightweight serializer for map-based discovery.
- Added serializer and endpoint tests for pagination, filtering, published-story visibility, and invalid year-range handling. -
backend/apps/stories/tests
- Added serializer and endpoint tests for pagination, filtering, published-story visibility, and invalid year-range handling. -
- PR #259: Implemented authenticated self-profile endpoints (GET /users/me/, PATCH /users/me/).
- Added tests for successful profile retrieval/update, unauthenticated access, invalid payloads, and protected-field update attempts. -
backend/apps/users/tests
- Added tests for successful profile retrieval/update, unauthenticated access, invalid payloads, and protected-field update attempts. -
- PR #237: Implemented the public story search endpoint (GET /stories/search/) with validation and pagination.
- Added serializer, service, and view tests for required query validation, blank queries, case-insensitive matching, and published-story filtering. -
backend/apps/stories/tests
- Added serializer, service, and view tests for required query validation, blank queries, case-insensitive matching, and published-story filtering. -
- PR #236: Implemented the public story feed endpoint (GET /stories/feed/) with pagination, sorting, and filters. - Resolved merge conflicts in overlapping story-module files while preserving the intended feed functionality.
- Added serializer, service, and view tests for pagination, sorting, location/year filters, and visibility rules. -
backend/apps/stories/tests
- Added serializer, service, and view tests for pagination, sorting, location/year filters, and visibility rules. -
- PR #222: Implemented story comment endpoints (POST /stories/:id/comments/, DELETE /comments/:id/).
- Added tests for comment creation, deletion, validation, authorization, and invalid story/comment IDs. -
backend/apps/interactions/tests
- Added tests for comment creation, deletion, validation, authorization, and invalid story/comment IDs. -
- PR #148: Configured django-cors-headers for local development and fixed frontend-to-backend CORS issues.
- Verified that frontend requests from http://localhost:5173 could reach the backend successfully during local development. - No dedicated test file; manually verified in the development environment.
- PR #139: Implemented the initial Story model and activated the stories app as the foundation of story-related backend features.
- Added model tests for valid creation, default values, nullable user relation, and choice-field behavior. -
backend/apps/stories/tests/test_models.py
- Added model tests for valid creation, default values, nullable user relation, and choice-field behavior. -
- PR #132: Added the initial Dockerized backend setup, including Dockerfile, entrypoint, and supporting configuration.
- No feature-level automated tests were needed; verified that the backend could run in the intended containerized setup. - No dedicated test file.
- PR #127: Added reusable permission classes and profile access control for role-based and ownership-based authorization.
- Added tests for IsRegisteredUser, IsAdminUser, IsGuest, IsOwnerOrAdmin, and CanManageOwnProfile. -
backend/common/tests/test_permissions.py,backend/apps/users/tests/test_permissions.py
- Added tests for IsRegisteredUser, IsAdminUser, IsGuest, IsOwnerOrAdmin, and CanManageOwnProfile. -
- PR #126: Implemented the initial authentication flow with registration, login, and logout using JWT-based authentication.
- Added tests for model, serializer, service, and endpoint behavior covering valid/invalid registration and login flows, token handling, and logout behavior. -
backend/apps/users/tests/test_models.py,backend/apps/users/tests/test_serializers.py,backend/apps/users/tests/test_services.py,backend/apps/users/tests/test_views.py
- Added tests for model, serializer, service, and endpoint behavior covering valid/invalid registration and login flows, token handling, and logout behavior. -
- PR #125: Added the initial .gitignore file to improve repository hygiene and prevent unnecessary files from being tracked.
- Verified ignored file patterns and repository cleanliness. - No dedicated test file.
- PR #111: Set up the initial Django backend project structure with separated settings and domain-based apps.
- Verified that the intended backend structure, placeholder files, and settings organization were created correctly. - No dedicated test file.
Reviewed / Merged
- PR #334: Reviewed and merged the README rewrite that improved deployment and platform setup documentation.
- PR #304: Reviewed and merged the CD workflow for automated production deployment.
- PR #298: Reviewed and merged the backend media display API fix that was important for frontend integration.
- PR #288: Reviewed and merged the production Docker Compose setup and environment template.
- PR #287: Reviewed and merged the nginx reverse proxy configuration for production deployment.
- PR #286: Reviewed and merged the production backend Dockerfile and entrypoint setup for deployment readiness.
- PR #285: Reviewed and merged the production Django settings work, including environment-based host/origin configuration, WhiteNoise integration, SSL/proxy handling, and secure production settings.
- PR #276: Reviewed and merged the story comments listing endpoint (GET /stories/{id}/comments/).
- PR #243: Reviewed and merged the image upload endpoint for story media.
- PR #242: Reviewed and merged the story like/unlike endpoint implementation.
- PR #149: Reviewed and finalized the implementation by contributing the last commit that completed the Story CRUD work with visibility fixes, service-layer additions, and missing tests.
- PR #144: Reviewed and merged the initial MySQL database setup and the full backend schema/model work. - Resolved merge conflicts, especially around the Story model, while preserving the useful parts of overlapping implementations.
- PR #134: Reviewed and approved the CI pipeline work that added backend and frontend checks to improve repository reliability.
- PR #27: Reviewed and merged the YAML issue-template bug fix.
- PR #24: Reviewed and merged the issue template improvements, including the addition of the quick_issue template.
5. Additional Information
- I contributed significantly to the MVP demo planning process by thinking through and documenting the demo flow in detail in the corresponding wiki page, preparing the story used during the presentation, and adding mock stories to the application to make the demo smoother and more effective.
- I contributed to the project’s visual identity by helping choose the project name and designing logo assets for the wiki, mobile app, and web app.
- Although I was mainly part of the backend team, I also regularly reviewed the frontend and mobile interfaces, identified user-facing bugs and inconsistencies, and helped ensure that these issues were communicated to the relevant teams and resolved.
- I actively participated in all team-wide and subteam meetings throughout the project. In many of these meetings, I took a leading role in the discussions by helping shape decisions, clarify priorities, and move topics toward concrete outcomes.
- I also took meeting notes in some of the team and subteam meetings, helping ensure that discussions, action items, and follow-up decisions were documented clearly and remained accessible to the team.