MVP Milestone Individual Contribution: Utku Yiğit Demir - bounswe/bounswe2026group11 GitHub Wiki
Utku Yiğit Demir (Backend)
Responsibilities
- Implemented core backend features including event discovery, event detail, favorites, event
lifecycle transitions, and response enrichment. - Designed and maintained OpenAPI documentation for event and profile endpoints.
- Contributed to requirements refinement, use case scenarios, sequence diagrams, and mockup
designs. - Contributed to lab reports and project documentation artifacts.
- Performed code reviews on backend, frontend, and DevOps pull requests throughout the MVP process.
Main Contributions
- Implemented the event discovery endpoint with search, filtering (category, location/radius, time range, privacy level), cursor-based pagination, and distance sorting.
- Implemented the event detail endpoint returning full event information including location, tags, constraints, category, and host context.
- Implemented the list-categories endpoint for populating category selection on clients.
- Implemented the cancel-event endpoint allowing hosts to cancel their owned events with proper state validation.
- Implemented favorite event toggle (
POST/DELETE /events/:id/favorite) and favorite listing (GET /me/favorites) endpoints. - Fixed missing
favorite_countin the discovery response so mobile event cards display correct save counts. - Added
IN_PROGRESSevent status with two-phase lifecycle transitions (ACTIVE → IN_PROGRESSat start time,IN_PROGRESS → COMPLETEDat end time). - Reduced the background event expiry job interval from 5 minutes to 1 minute for faster lifecycle transitions.
- Added
participants_countandlocation_addressto event summary responses so mobile clients can render event cards without extra detail requests. - Created scenario 3 mockup designs for the walking event organization flow.
- Contributed to requirements refinement, use case scenario creation, sequence diagrams (Participant Cancelling Attendance), and lab reports.
Significant Issues (Top 3 per category)
Code-Related
Issue #201: Implemented the primary event discovery endpoint enabling users to browse events with keyword search, category/location/radius/time filtering, privacy level filtering, distance sorting, and cursor-based pagination. This is the core browsing mechanism of the MVP.
Issue #199: Implemented the cancel-event endpoint, allowing hosts to cancel events with proper authorization and state validation.
Issue #198: Implemented the event detail endpoint returning comprehensive event information including location data, tags, constraints, category, metrics, and host context summary.
Non-Code-Related
Issue #86: Created the sequence diagram documenting the participant attendance cancellation flow.
Issue #46: Co-authored use case scenario 3 (Athletics Community Organizes a Walking Event) with mockup designs.
Issue #285: Created and organized the Lab 7 report page for the team.
Pull Requests
- PR #54: docs(design): add scenario 3 mockup designs — created 9 web mockups for the walking event scenario covering discover, create, route editor, schedule, and publish flows.
- PR #100: feat: add button 8 with random dog image API page — stub app contribution during the initial project setup phase.
- PR #283: fix(backend): reduce event expiry job interval to 1 minute — decreased the background job interval so events transition within 1 minute of their end time.
- PR #284: feat(backend): add IN_PROGRESS event status with two-phase transitions — introduced the IN_PROGRESS lifecycle state with ACTIVE → IN_PROGRESS → COMPLETED transitions.
- PR #297: feat(backend): add favorite event toggle and listing endpoints — implemented add/remove favorite and list favorites endpoints with integration tests.
- PR #301: fix(backend): include favorite_count in discovery response — fixed mobile event cards showing 0 saves by adding favorite_count to discovery items.
- PR #331: feat(backend): add participants_count and location_address to event summaries — enriched event summary responses for mobile card rendering.
Note: PR #296 was opened but subsequently closed in favor of a revised approach in PR #297.
Tests
- Favorite event unit tests: toggle favorite service tests (add, remove, idempotent add/remove) — [service_test.go](https://github.com/bounswe/bounswe2026group11/blob/main/backend/internal/applica tion/event/service_test.go)
- Favorite event handler tests: success, not found, unauthorized cases — [event_handler_test.go](https://github.com/bounswe/bounswe2026group11/blob/main/backend/internal/ adapter/out/httpapi/event_handler/event_handler_test.go)
- Favorite event integration test: full add/list/duplicate-add/remove/list-empty cycle
(
TestAddAndRemoveFavorite) — [event_test.go](https://github.com/bounswe/bounswe2026group11/blob/ main/backend/tests_integration/event_test.go) - Event lifecycle transition integration test: verifies ACTIVE → COMPLETED after end time
(
TestTransitionEventStatuses_ExpiredToCompleted) — [event_test.go](https://github.com/bounswe/bo unswe2026group11/blob/main/backend/tests_integration/event_test.go) - Event lifecycle transition integration test: verifies ACTIVE → IN_PROGRESS after start time
(
TestTransitionEventStatuses_StartedToInProgress) — [event_test.go](https://github.com/bounswe/b ounswe2026group11/blob/main/backend/tests_integration/event_test.go)
Additional Information
- Contributed to early project setup including requirements refinement, elicitation questions, and use case scenarios.
- Created the [Participant Cancelling Attendance Sequence Diagram](https://github.com/bounswe/bouns we2026group11/wiki/Participant-Cancelling-Attendance-Sequence-Diagram).
- Designed 9 web mockups for [Scenario 3 — Athletics Community Organizes a Walking Event](https://github.com/bounswe/bounswe2026group11/wiki/Scenario-3-%E2%80%90-Athletics-Community- Organizes-a-Walking-Event).
- Contributed to lab reports (Lab 1, Lab 6, Lab 7).
- Reviewed 11 pull requests across backend, frontend, and DevOps during the MVP period, including PR #124, PR #125, PR #126, PR #234, PR #235, PR #236, PR #304, PR #316, PR #318, PR #330, PR #364.