MVP Milestone Individual Contribution: Cansu Er - bounswe/bounswe2026group11 GitHub Wiki

MVP Milestone Individual Contribution: Cansu Er

Cansu Er (Mobile)

Responsibilities:

  • Developed major parts of the mobile application for the MVP.
  • Contributed to mobile event creation and leaving, listing and auto event completion flows.
  • Added and maintained mobile tests for view models, services, and UI behavior.
  • Contributed to requirements, design discussions, scenario works.
  • Participated actively in technical discussions.
  • Took part in MVP demo preparation and presented as moderator during the demo.
  • Helped organize meetings, prepare agendas, and facilitate team discussions.

Main Contributions

  • Implemented the Create Event page from scratch with full form fields and backend integration, including native date/time pickers and input validation (#155, #292, #220)
  • Added the Leave Event feature to the event details page, supporting both pre-start and post-start leave behaviors with rejoin logic (#317)
  • Added an auto-completion warning banner in event details for in-progress events approaching the 60-day auto-completion deadline (#312)
  • Fixed the discovery listing to exclude already-started (IN_PROGRESS) events from the home screen (#327)
  • Wrote unit tests covering all implemented features across four test files
  • Created the Responsibility Assignment Matrix (RAM) (#380)
  • Contributed to design-phase artifacts: the initial UML class diagram (#72, #73), the Use Case Diagram for Scenario 1 (#66), Scenario 2 mockup designs, and the Filtering Events & Joining a Public Event sequence diagram (#78)
  • Moderated the MVP presentation, delivering the opening statement and managing transitions between segments.

Significant Issues

Code-Related

  • #155: feat(mobile): implement create event page β€” Implemented the full Create Event screen from scratch, including form fields (title, description, category chips, location search via Nominatim, date/time pickers, privacy type, capacity, tags, participation constraints), backend integration (POST /events), MVVM architecture with useCreateEventViewModel, and the eventService and apiPostAuth infrastructure. This was a foundational feature for the MVP.

  • #317: feat(mobile): add leave event button β€” Implemented the Leave Event action on the event details page. The feature covers confirmation dialogs, API integration (PATCH /events/:id/leave), pre-start vs post-start leave distinction (rejoin allowed vs permanent "You left" chip), and host/ineligible-user exclusion logic.

  • #312: feat(mobile): add warning message in event details for auto-completion β€” Added an amber warning banner on event detail pages for in-progress events without an end date, visible between days 53 and 60 since start, alerting users that the event will be automatically completed due to inactivity. Implemented as a testable utility (getAutoCompletionDaysLeft).

Non-Code-Related

  • #380: docs: create Responsibility Assignment Matrix (RAM) wiki page β€” Created and published the RAM wiki page for the MVP milestone D4 deliverable, mapping all modules and tasks to team members using RACI roles.

  • #78: Filtering Events & Joining a Public Event sequence diagram β€” Designed and published the UML sequence diagram covering the public event joining use case, including all actor–system interactions, and refined the class diagram for consistency. Published on the All Sequence Diagrams wiki page.

  • #73: Create UML Class Diagram and add it to the Wiki page β€” Identified elementary system classes and defined their attributes and methods (#72), then created the UML Class Diagram representing the initial domain model and published it on the Class Diagrams wiki page.


Pull Requests

  • #208: feat(mobile): add create event page β€” Added the full Create Event screen with form state, validation, constraint logic, location search via Nominatim, category chips, and POST /events backend integration. Also introduced eventService.ts, useCreateEventViewModel, and the apiPostAuth authenticated request helper. Closes #155.

  • #325: feat(mobile): add leave event action to event details page β€” Introduced the full leave event flow including model updates (LEAVED participation status), API service method, ViewModel logic (canLeave, handleLeaveEvent), and conditional UI rendering. Closes #317.

  • #341: feat(mobile): add warning message in event details for auto-completion β€” Added getAutoCompletionDaysLeft utility and rendered the warning banner in EventDetailView. Closes #312.

  • #366: fix(mobile): fix discovery listing to exclude IN_PROGRESS events β€” Added status field to EventSummary model and introduced excludeInProgressEvents filtering in useHomeViewModel. Closes #327.

  • #277: fix(mobile): validate date and time ranges to reject impossible values β€” Added validateDateFormat and validateTimeFormat helpers with explicit range checks to prevent silent normalization of invalid inputs like 35.21.2030 or 28:00. Closes #220.

  • #276 (closed): fix(mobile): Fix missing validation for invalid date input in event form β€” An earlier attempt at fixing date validation. Closed in favor of the revised and more comprehensive approach in #277, which also covers time validation and impossible calendar dates.

  • #295 (closed): feat(mobile): add native date and time pickers to Create Event form β€” An initial PR to introduce native platform pickers for date and time in the Create Event form. Closed in favor of a revised approach where picker integration was incorporated more holistically alongside the rest of the form improvements.

  • #410 (closed): feat(mobile): Add SEM logo and launch screen β€” Added the SEM branded splash screen with expo-splash-screen integration and the app icon. Closed in favor of a revised implementation that was incorporated into the main branch through a different approach.


Tests

  • Create event form validation β€” mobile/src/viewmodels/event/useCreateEventViewModel.test.tsx Tests for validateDateFormat and validateTimeFormat helpers, covering invalid ranges, impossible calendar dates (e.g. February 30), and out-of-range times. Initially introduced in PR #208 and extended in PR #277.

  • Leave event and canLeave logic β€” mobile/src/viewmodels/event/useEventDetailViewModel.test.tsx Tests verify: canLeave is true for joined participants on active/in-progress events and false for hosts, non-participants, and completed/canceled events; handleLeaveEvent calls the API, refreshes details, and correctly distinguishes pre-start (rejoin) from post-start (permanent leave) outcomes; error handling surfaces API messages and provides a generic fallback.

  • Auto-completion warning logic β€” mobile/src/utils/eventDate.test.ts 11 unit tests covering status filtering, end-time presence check, boundary conditions at days 52, 53, 59, and 60, and the optional now parameter for testability.

  • IN_PROGRESS event filtering in discovery β€” mobile/src/viewmodels/home/useHomeViewModel.test.tsx 3 tests verifying that IN_PROGRESS events are excluded on initial load, on load-more pagination, and when handling legacy events that lack a status field.


Additional Information

  • Moderated the MVP Presentation: Served as the moderator and opener for MVP demo β€” delivered the opening statement introducing the product story and key value propositions to the evaluators, and managed transitions between all demo segments.

  • Contributed to design and scoping beyond implementation: Actively participated in design choices, feature scoping, and review discussions throughout the project. Took part in non-code project artifacts during the design phase, including the Scenario 2 (Private Event Organization) mockup designs, the initial Use Case Diagram for Scenario 1, the UML Class Diagram, and the Filtering Events & Joining a Public Event sequence diagram.