-
Notifications
You must be signed in to change notification settings - Fork 0
MVP Report D6‐D7
Summary and decisions:
The MVP milestone covers the core mentorship platform features across three platforms: backend (Spring Boot), web frontend (React), and mobile application (React Native / Expo). The system is fully deployed on a production server with Docker, and the mobile app is distributed as an APK via GitHub Releases with automatic CI builds through GitHub Actions.
Key architectural decisions made during this milestone:
- Role-based access control implemented for mentor and mentee roles across all platforms
- JWT-based authentication shared between web and mobile clients
- Real-time cross-platform notification system (mentor receives notification when mentee sends a request)
- Client-side pagination on mobile mentor listing; server-side pagination on backend endpoints
- Mentor capacity management (maxMenteeCapacity) enforced at backend level
Summary of customer feedback and reflections:
Customer feedback was received during the MVP demo presentation. The instructor observed the full web and mobile demo without interruption, asking targeted questions at transition points.
Positive feedback:
- The Explore and matching features on the web were well-received; the instructor took notes during this section
- The mobile application received strong overall praise ("Good design on app"), particularly the Mentor Profile & Availability and Mentorships & Messages sections
Constructive feedback and questions:
- "How does the recommendation work, based on what?" — The current matching algorithm (field/interest-based filtering) was explained. The instructor acknowledged it is sufficient for MVP but noted improvement is expected for the final milestone
- "Mentor track mentee improvement? Key events, milestones" — The instructor emphasized the importance of the mentor being able to track the mentee's progress through milestones and objectives, not just duration
- "Duration of mentorship — addition to duration + meaningful milestones/objectives" — Mentorship should be defined by both time and goal-based milestones
- "Mode switch on web: Integration of everything between web and app completed?" — Integration status was discussed; some mobile screens (messages, file upload) are currently static/not API-connected
- The cover letter text in mentorship request submission could be improved from a UX perspective
Reflections:
- The recommendation/matching algorithm is the highest priority improvement area for the final milestone
- Mentor-mentee progress tracking (milestones, key events) needs to be designed and implemented
- Mentor-mentor interaction is worth considering as a feature for the final milestone
- Full API integration of messaging and file upload on mobile is pending
| Deliverable | Status | Notes |
|---|---|---|
| User registration & login (web + mobile) | Completed | JWT auth, role selection |
| Mentor profile setup & editing | Completed | Field, bio, expertise, capacity, availability |
| Mentee profile setup & editing | Completed | Goals, skills, career interest, visibility |
| Mentor explore page (web) | Completed | Filter by field, matching score |
| Mentee explore / find mentor (mobile) | Completed | Paginated list, availability badge |
| Send mentorship request | Completed | Cover letter, mentor receives notification |
| Accept / reject mentorship request | Completed | Cross-platform, real-time |
| Notifications system | Completed | Unread badge, mark-as-read, mark all read |
| Active mentorships view | Completed | Mentor and mentee dashboards |
| Availability scheduling (mobile) | Completed | Slot-based calendar |
| Recommendation / matching algorithm | In Progress | Basic for MVP; improvement planned for final milestone |
| Messaging & file upload (mobile) | In Progress | UI complete, API integration pending |
| Mentor-mentee milestone tracking | Not Started | Planned for final milestone |
| Mentor-mentor interaction | Not Started | Under consideration for final milestone |
Reflection: The core mentorship lifecycle (register → find mentor → request → accept → active mentorship) is fully implemented and functional across web and mobile. Features highlighted as priorities by the instructor (matching algorithm, progress tracking) are identified for the next milestone.
UX Design notes: The mobile application received positive feedback for its design. Role-based UI (mentor vs mentee see different tabs, dashboards, and profile fields) was well-executed. The web platform's explore and matching UI was noted as a strong feature.
API Documentation:
Backend API is documented via Swagger UI, accessible at http://167.71.44.71:8080/swagger-ui/index.html.
Requirements addressed in this milestone: 1.1.1 User Types
- 1.1.1.1.1 Mentees can create and edit their profile (major, background, goals, career interest, skills, interests, meeting frequency preference, profile visibility)
- 1.1.1.1.2 Mentees can specify their goals, interests, and background information
- 1.1.1.1.3 Mentees can view matched mentor profiles on the Explore page
- 1.1.1.1.4 Mentees can send mentorship requests to mentors with a cover letter message
- 1.1.1.1.9 Mentees are limited to one active mentor at a time (enforced at backend level)
- 1.1.1.1.10 Mentees can search for mentors using the explore page with field/interest-based filtering
- 1.1.1.2.1 Mentors can create and edit their profile (field, bio, expertise, affiliation, mentoring goals, preferred mentee criteria, mentorship duration, max mentee capacity)
- 1.1.1.2.2 Mentors can define mentoring goals and preferred mentee criteria
- 1.1.1.2.3 Mentors can define their availability schedule (slot-based weekly calendar on mobile)
- 1.1.1.2.4 Mentors are notified when a mentee sends a mentorship request
- 1.1.1.2.5 Mentors can view candidate mentee profiles (background, goals, interests) before accepting
- 1.1.1.2.6 Mentors can accept or reject mentorship requests
- 1.1.1.2.11 Mentors can manage multiple mentees simultaneously (up to their defined max capacity)
- 1.1.1.2.12 Mentors can set a mentorship duration
1.1.2 Matching System
- 1.1.2.1 The system matches mentors and mentees based on interests, goals, availability overlap, and background
- 1.1.2.2 Mentors are notified when a mentee sends a request
- 1.1.2.3 Mentees are notified when a mentor accepts their request
- 1.1.2.4 Mentors are not matched beyond their maximum mentee capacity
- 1.1.2.5 The system notifies the user that the request was successfully submitted
- 1.1.2.6 During the matching stage, the mentee's surname and profile photo are hidden from the mentor; only the first name is visible
- 1.1.2.7 Mentees cannot search for or find other mentees
1.1.4 Scheduling
- 1.1.4.1 Mentors can define weekly availability (slot-based calendar on mobile)
1.2.1 Notifications
- 1.2.1.4 Notifications are only sent to relevant users
1.2.2 Profiles
- 1.2.2.1 User profiles include background, goals, skills, and interests
- 1.2.2.2 Profiles display mentoring preferences
- 1.2.2.3 Users can control profile visibility (public/private toggle for mentees)
1.2.3 Sign-Up & Authentication
- 1.2.3.1 Users register with real name, email, and password
- 1.2.3.2 Email addresses are unique (enforced at backend)
- 1.2.3.3 Passwords meet defined security criteria (validated by PasswordValidator)
- 1.2.3.5 Users can log in using their registered email address and password
- 1.2.3.6 The system verifies user credentials (email and password) during login
- 1.2.3.7 The system displays an error message when invalid credentials are provided
- 1.2.3.8 Users can log out of the system
2.1 Availability
- 2.1.2 The system supports both web and mobile access
2.2 Security
- 2.2.1 User passwords are stored as hashed in the database (BCrypt)
2.3 Performance
- 2.3.1 Notifications are delivered within seconds of triggering events (event-driven architecture via NotificationEventPublisher)
Requirements not yet addressed (planned for final milestone):
- 1.1.1.1.5–1.1.1.1.8, 1.1.1.1.11–1.1.1.1.13 — Messaging, task submission, feedback, meetings, rating, cancel, report
- 1.1.1.2.7–1.1.1.2.10, 1.1.1.2.13–1.1.1.2.14 — Messaging, meetings, tasks, feedback, extend/end mentorship
- 1.1.1.3 — Admin features
- 1.1.3 — Messaging & Communication (UI exists on mobile, API not connected)
- 1.1.4.2–1.1.4.6 — Recurring meetings, meeting notifications, rescheduling, auto-termination
- 1.1.5 — Task & Progress Management
- 1.2.1.1–1.2.1.3 — Push notifications (native)
- 2.2.2–2.2.4 — Encryption, GDPR, temporary bans
The general test plan and coverage can be read through this link
Here are the individual implementations for each development group.
Backend tests are organized with a three-layered strategy:
Technologies Used:
- JUnit 5 (Jupiter), Mockito 5.17, Spring Boot Test, AssertJ, MockMvc
Test Layers:
| Layer | Purpose | Annotation | Test Count |
|---|---|---|---|
| Unit Tests (Service) | Isolated business logic testing with mocked dependencies | @ExtendWith(MockitoExtension.class) |
122 tests / 9 classes |
| Controller Tests | HTTP endpoint testing via MockMvc, including security filters | @WebMvcTest |
111 tests / 8 classes |
| Integration Tests | End-to-end testing with a real database (PostgreSQL 16) |
@SpringBootTest + @ActiveProfiles("test")
|
120 tests / 9 classes |
| Validation Tests | Input validation rule testing | @ExtendWith(MockitoExtension.class) |
8 tests / 1 class |
Total: 27 test classes, 341 test methods
CI/CD Integration:
- GitHub Actions workflow (
backend-ci.yml) runsmvn --batch-mode verifyon every push/PR - A PostgreSQL 16 service container (port 5433) is automatically spun up for integration tests
- If tests fail, Docker build and deploy steps are blocked
Test Files:
Service (Unit) Tests:
- AuthServiceTest.java — 24 tests
- MatchingServiceTest.java — 42 tests
- MentorshipServiceTest.java — 18 tests
- MentorshipRequestServiceTest.java — 13 tests
- AvailabilityServiceTest.java — 13 tests
- MenteeAvailabilityServiceTest.java — 5 tests
- FileStorageServiceTest.java — 20 tests
- JwtServiceTest.java — 7 tests
- NotificationServiceTest.java — 4 tests
Controller Tests:
- AuthControllerTest.java — 18 tests
- ProfileControllerTest.java — 33 tests
- MatchingControllerTest.java — 15 tests
- AvailabilityControllerTest.java — 13 tests
- MentorshipControllerTest.java — 11 tests
- MentorshipRequestControllerTest.java — 10 tests
- PhotoUploadControllerTest.java — 6 tests
- MenteeAvailabilityControllerTest.java — 5 tests
Integration Tests:
- ProfileIntegrationTest.java — 51 tests
- AuthIntegrationTest.java — 20 tests
- MatchingIntegrationTest.java — 15 tests
- AvailabilityIntegrationTest.java — 8 tests
- MentorshipIntegrationTest.java — 8 tests
- MentorshipRequestIntegrationTest.java — 8 tests
- PhotoUploadIntegrationTest.java — 5 tests
- NotificationIntegrationTest.java — 3 tests
- MenteeAvailabilityIntegrationTest.java — 2 tests
Validation Tests:
- PasswordValidatorTest.java — 8 tests
Technologies Used:
- Vitest, React Testing Library (
@testing-library/react),@testing-library/user-event, jsdom
Test Strategy:
Web frontend tests focus on two layers:
| Layer | Purpose | Tools | Test Count |
|---|---|---|---|
| Service / API Unit Tests | Verify each api.js function calls the correct endpoint URL, HTTP method, headers, and request body; verify error handling and fallback behaviour |
Vitest + vi.fn() fetch mocks |
24 tests / 2 files |
| Component Tests | Render components with mocked API and auth context; assert correct UI states, user interactions, and conditional rendering | Vitest + React Testing Library | 26 tests / 3 files |
Total: 5 test files, 50 test methods
CI/CD Integration:
- GitHub Actions workflow (
.github/workflows/web_ci.yml) runsnpm ci,vitest run, andvite buildon every push/PR tomainanddev - Test failures block the build step
Test Files:
Service / API Unit Tests:
-
auth.test.js — 19 tests:
registerUser,loginUser,forgotPassword,resetPassword,verifyEmail(including special-character token encoding),resendVerification,validateResetToken, andhandleResponseerror fallbacks (errorfield, non-JSON body) -
api.test.js — 5 tests:
getMatchingMentors(with and without keyword),getAllMentors,getSentMentorshipRequests,createMentorshipRequest— verifying correct endpoints (/api/matching/mentors/all,/api/users/mentors/all) and Authorization header
Component Tests:
- RequestMentorshipModal.test.jsx — 10 tests: visibility toggle, mentor name display, submit/loading/character-limit disabled states, trimmed message submission, Escape key and overlay click to close, error prop display, character counter
- HomePage.test.jsx — 8 tests: role-based rendering (MENTOR dashboard vs MENTEE find-mentor prompt), mentor stats row, pending request display, active mentee display, active mentor hero card, section exclusion per role
- ExplorePage.test.jsx — 8 tests: MENTOR view (Find Mentees, no Send Request), loading state, at-capacity button, already-sent button, active-mentor banner with disabled buttons, full send-request flow (modal open → submit → toast + UI update), keyword search filter, chip filter.
Mobile testing was performed manually on Android emulator and physical devices via Expo Go.
Technologies Used:
- GitHub Actions (CI pipeline)
- TypeScript Compiler (
tsc) - ESLint
- Expo Doctor
- Android Emulator, physical device via Expo Go
CI Pipeline (mobile-ci.yml):
Runs automatically on every push and pull request to dev or main that includes changes under mobile-app/**. Steps:
| Step | Tool | Purpose |
|---|---|---|
| Expo doctor | npx expo-doctor |
Validates Expo project config and dependency compatibility |
| Type check | npx tsc --noEmit |
Catches TypeScript type errors across all screens and components |
| Lint | npm run lint |
Enforces code style and catches common mistakes |
| Unit tests | npm run test:unit |
Runs unit test suite |
| Integration tests | npm run test:integration |
Runs integration test suite |
Any failure in these steps blocks the build. This pipeline ensures type safety and code quality on every commit.
APK Build Pipeline (mobile-build-apk.yml):
A separate workflow runs expo prebuild --platform android followed by ./gradlew assembleDebug to compile a release APK on every push to dev or main. The APK is uploaded as a build artifact and the latest stable version is published to GitHub Releases.
Manual End-to-End Testing:
Core user flows were also manually verified on Android emulator and physical device:
| Flow | Result |
|---|---|
| Register as mentor / mentee | ✅ |
| Login and role-based navigation | ✅ |
| Mentor profile update (all fields) | ✅ |
| Mentee profile update (all fields) | ✅ |
| Mentor discovery with pagination | ✅ |
| Send mentorship request with message | ✅ |
| Accept / reject request (mentor side) | ✅ |
| Notifications: unread badge, mark as read, mark all read | ✅ |
| Availability scheduling | ✅ |
| Profile photo upload | ✅ |
| Logout and session clearing | ✅ |
Backend API:
- Test Results Summary: Total 391, Pass 391, Fail 0, Skip 0.
- Test Environment and Tools: Executed locally with Maven Surefire (
mvn verify) using JUnit 5,
Mockito, Spring Boot Test, and MockMvc against a PostgreSQL 16 service container for integration tests; additionally validated in GitHub Actions via the backend-ci workflow. Full report: combined Surefire XML report. - Execution Time: 41.41s.
Web App:
- Test Results Summary: Total 51, Pass 51, Fail 0, Skip 0.
- Test Environment and Tools: Executed locally with Vitest (
npm test) using jsdom, React Testing Library, and@testing-library/user-event; additionally validated in GitHub Actions via the web-ci workflow. - Full report: JUnit XML Report
- Execution Time: 8.07s
Mobile App:
- Mobile App: No automated test report — CI pipeline validates TypeScript compilation, Expo config, and lint on every push. Manual E2E results documented in D6.4.1.
Coverage:
Backend:
- 9 backend modules fully covered by tests: Auth, Profile, Matching, Mentorship, MentorshipRequest, Availability, MenteeAvailability, Notification, PhotoUpload
- Each module has a unit + controller + integration test trio
- Most extensively tested modules: Profile (84 tests), Matching (72 tests), Auth (62 tests)
Web Frontend:
- 5 test files, 50 test methods covering auth API layer, mentorship API functions, and 3 key components (RequestMentorshipModal, HomePage, ExplorePage)
- Auth layer fully covered: all 7 auth functions tested for correct endpoint, method, body, and error handling
- Role-based rendering covered: MENTOR and MENTEE dashboard variants tested in isolation
- Critical UI states covered: capacity enforcement, duplicate request prevention, active-mentor banner, send-request flow end-to-end
Mobile:
- Manual coverage of all core user flows for both mentor and mentee roles
Bug Detection:
-
Security vulnerability (PR #174): Backend tests revealed that
POST /api/users/mentorsandPOST /api/users/menteesendpoints allowed user creation without email verification or password hashing — endpoints were removed - JWT token bug (PR #157): Integration tests detected that the JWT secret was not being read correctly from environment variables in the Docker environment — fixed
-
Profile save 403 error: Manual mobile testing detected that
PATCH /users/mewas returning 403; fixed by switching to role-specific endpointsPATCH /users/me/mentorandPATCH /users/me/mentee -
Mentor notification missing: Manual integration testing detected that mentors were not receiving notifications when a mentee sent a request; fixed by adding
notificationEventPublishercall inMentorshipRequestService.createRequest()
Readiness: The backend test infrastructure is production-ready for the MVP. All 341 backend tests pass successfully and run automatically on every push/PR via CI/CD, with deployment blocked on test failure. Mobile core flows are manually verified. Automated mobile testing is planned for the final milestone.
Our team is organized into three functional sub-teams — Backend (Spring Boot), Frontend/Web (React), and Mobile (React Native / Expo) — with one member additionally owning DevOps and infrastructure. Members took on primary roles within their sub-team while staying aware of cross-team dependencies to avoid bottlenecks.
Work was broken down into GitHub Issues mapped to milestones (Pre-Release, MVP, Final). Issues were labeled by area (backend, web, mobile, DevOps, documentation) and assigned to team members. We held regular weekly online meetings to sync progress across sub-teams, resolve blockers, and assign upcoming tasks. Each meeting was documented on the project wiki with notes and action items.
Before coding phases, we used Use Case, Sequence, and Class diagrams to align sub-teams on data structures and API contracts before implementation began. This was especially important for agreeing on request/response DTOs between backend and frontend/mobile teams.
2.1 Team Meetings Weekly online meetings were held to synchronize sub-teams. Meetings covered progress review, architectural decisions (e.g. role-specific profile endpoints, pagination strategy, notification event model), and task distribution. All meetings were documented on the project wiki.
2.2 Issue Tracking and Pull Requests
All work was tracked via GitHub Issues with labels and milestone assignments. Every PR was tied to an issue. PRs required review before merging to main. The dev branch was used for integration; feature branches were cut from dev.
Process change: Early in the milestone, some backend API contract changes (pagination, role-split endpoints, enum formats) were not communicated in time, causing breakage on web and mobile. We tightened cross-team communication on API changes so frontend/mobile could adapt immediately.
2.3 DevOps and Environment Standardization
Production deployment was set up on a DigitalOcean droplet with Docker Compose. An .env.example file was maintained to keep environment variables synchronized across developers. GitHub Actions CI/CD pipelines were added for backend, web, and mobile to run tests and block merges on failure. Auto-deploy to production on push to main was added mid-milestone.
GitHub (Issues, Projects, PRs): Central source of truth for all tasks. We used two project boards — a Roadmap for milestone-level planning and a Kanban Board for sprint-level task tracking. Labels and milestone tags on every issue maintained traceability.
Docker & Docker Compose: Used for both local development and production deployment. A shared docker-compose.yml ensured all developers ran identical service configurations. docker-compose.prod.yml handled the production environment with externalized secrets.
Swagger / OpenAPI: Backend API was documented with Swagger from the start, accessible at the production server. This allowed frontend and mobile developers to explore and test endpoints without reading backend source code, eliminating the need for manual Postman collections.
GitHub Actions (CI/CD): Separate workflows for backend (backend-ci.yml), web (web_ci.yml), and mobile (mobile-ci.yml) run tests and builds on every push/PR. The backend CI also provisions a PostgreSQL service container for integration tests. A deployment workflow (deploy.yml) auto-deploys to production on push to main.
PlantUML: Used for designing and iterating on UML diagrams (Use Case, Sequence, Class). Diagrams were committed to the repo and embedded in the wiki, serving as a shared reference during implementation.
WhatsApp: Used for instant communication and urgent coordination — flagging breaking changes, unblocking teammates, and coordinating task handoffs when GitHub notifications were insufficient.
- Roadmap: GitHub Projects — Roadmap
- Kanban Board: GitHub Projects — Board
- Meeting Notes Archive: Wiki — Weekly Meetings
- API Documentation: Swagger UI
Project board screenshots below.
Responsibilities: Backend development, authentication & security infrastructure, mentor matching algorithm, email services, production deployment configuration, DevOps (assisted LifelongWay with deployment setup), and PR reviews across backend/web PRs.
Main Contributions:
- Designed and implemented the JWT-based authentication and role management system (Mentor/Mentee)
- Built the mentor matching algorithm with weighted scoring (interests, skills, major, goals, availability overlap)
- Implemented email verification and password reset flows using Resend API
- Prepared the backend for production deployment (Spring profiles, Docker Compose prod config, CORS, environment variables)
- Fixed critical security vulnerabilities and Docker/JWT bugs
Significant Issues:
Code-Related:
- Issue #86: Implemented backend authentication & roles — JWT token generation/verification, user registration/login endpoints, Mentor/Mentee role assignment
- Issue #102: Built the mentor matching API — weighted scoring algorithm considering interests (+3), skills (+3), major match (+5/+3), goals (+2), availability overlap (max +12); includes keyword filtering and capacity checks
- Issue #197: Prepared backend configuration for production deployment — production Spring profile, Docker Compose prod setup, CORS restrictions, externalized credentials, disabled Swagger in prod
Non-Code-Related:
- Issue #34: Created initial Use Case Diagram (Scenario 1) — analyzed the new mentee user scenario and produced a UML Use Case diagram for the wiki
- Issue #52: Created UML Sequence Diagram for the Login Use-Case — illustrated interactions between user, login interface, authentication service, and database
-
Issue #119: Environment variable management & deployment environments — set up Spring profiles (dev/staging/prod),
.env.exampletemplate, externalized secrets
Pull Requests:
- PR #173: Mentor matching algorithm implementation — scoring system, keyword filtering, capacity management, privacy controls. Conflict resolved by mehmetborasarioglu (rebased onto latest dev, removed duplicate matching code)
- PR #158: Email verification system for new registered users — token-based verification flow with Resend API integration
- PR #160: Password reset feature — email-based token generation and secure credential recovery
-
PR #174: Security fix — removed unsafe user creation endpoints (
POST /api/users/mentors,POST /api/users/mentees) that bypassed email verification and password hashing. Conflict resolved by mehmetborasarioglu (rebased, removed duplicate V4 Flyway migration) -
PR #199: Production deployment configurations —
application-prod.properties,docker-compose.prod.yml,.env.production.example, CORS fix - PR #157: Docker JWT token bug fix
- PR #214: Production ready release — merged dev into main (210 commits)
- PR #65: Lab 5 stub app — Random Joke Generator button with Dockerfile
Unit Tests:
- MatchingServiceTest.java — Unit tests for scoring algorithm, filtering logic, and edge cases
- MatchingControllerTest.java — Controller tests for role validation and mentor-block logic
- MatchingIntegrationTest.java — End-to-end integration tests for matching workflows
Additional Information:
- Collaborated with mehmetborasarioglu on the initial auth system through live coding sessions
- Collaborated with LifelongWay (Amin) on environment variable management and deployment setup, assisted with DevOps configurations
- Actively reviewed and approved numerous PRs across backend and web subgroups (e.g., PR #221, #223, #225, and others), ensuring code quality and consistency before merges
- Addressed code review feedback on PR #173: fixed foreign key reference, resolved N+1 query issue with JOIN FETCH, improved stopword filtering, and corrected exception semantics
Backend feature development, notification infrastructure, matching algorithm improvements, API documentation, DevOps/container setup, and contribution to project documentation and milestone reporting.
- Implemented the backend notification infrastructure with persistence, event-driven triggering, and user-facing notification APIs.
- Extended the mentor matching algorithm with mentee-mentor availability overlap scoring to improve recommendation quality.
- Added mentor in-app notification triggering on mentorship request creation.
- Integrated Swagger/OpenAPI documentation with JWT authorization support in Swagger UI.
- Improved development and deployment readiness through Docker Compose dev stack enhancements, health checks, MailHog integration, and environment-based configuration.
- Implemented structured logging with request tracing (SLF4J + Logback) for better observability across environments.
- Issue #207: Enhanced the mentor matching algorithm by adding mentee-mentor availability overlap scoring to improve practical recommendation quality.
- Issue #108: Implemented the core notification triggering infrastructure, including notification domain and persistence setup and backend APIs for retrieval and read-state updates.
- Issue #106: Improved the Docker Compose-based development stack with service health checks, MailHog integration, persistent Postgres volume, and environment-driven configuration.
- Issue #230: Contributed to finalization and consolidation of the MVP milestone report on the project wiki.
- Issue #163: Contributed to MVP demo planning and structuring of presentation flow and deliverables.
- Issue #83: Improved the Mentorship Management sequence diagram by refining interaction flow and UML consistency.
- PR #221: Notify mentor when mentee creates mentorship request; added REQUEST_RECEIVED notification flow and related service-level test updates.
- PR #208: Added availability overlap scoring to the matching algorithm; included availability management and related matching and authorization updates.
- PR #195: Added structured logging configuration with request tracing and profile-based logging strategy.
- PR #191: Implemented notification triggering infrastructure, notification persistence model, and notification APIs.
- PR #154: Improved Docker Compose dev stack with Postgres persistence, MailHog, health checks, and environment management.
- PR #152: Integrated Swagger/OpenAPI docs with JWT bearer auth support in Swagger UI.
- PR #68: Implemented assigned lab feature and Dockerization work for the stub app phase.
- Expanded backend test coverage for notification flows (creation, retrieval, read-state transitions) while implementing the notification infrastructure in PR #191.
- Added and updated matching and availability test scenarios in PR #208, including overlap-based ranking behavior and authorization-related edge cases.
- Updated service-level tests in PR #221 to verify mentor notification publication on mentorship request creation and protect against regression in existing request flows.
- Verified backend test-suite stability during PR integration and merge operations for PR #176 and PR #177, including conflict resolution validation.
- Reviewed and merged multiple teammate PRs, including PR #176, PR #177, PR #185, PR #186, and PR #212, helping maintain MVP delivery pace and codebase consistency.
- Resolved integration conflicts during merge workflows (notably while merging PR #177 after PR #176), including clean GlobalExceptionHandler conflict resolution and correction of Spring Data repository method naming for mentee and mentor ID traversal.
- Performed technical review checks before merge (requirements coverage, role and authorization behavior, regression risk, and test-suite status) to ensure production-safe backend integration.
Responsibilities:
- Mobile application development (React Native / Expo)
- Backend integration and API connectivity for all mobile screens
- CI/CD pipeline for automated mobile APK build
Main Contributions:
- Initialized the React Native Expo project from scratch and implemented core MVP features including authentication, splash screen, role-based dashboard, mentor/mentee constraints, and request management
- Integrated all screens with the production backend using Axios with JWT interceptor
- Implemented notifications screen with unread badge, mark-as-read, pull-to-refresh, and real-time notification count on home screen
- Replaced mentor Explore tab with Mentee Requests tab showing incoming pending requests with accept/reject flow
- Extended mentor and mentee profile screens with role-specific fields and correct PATCH endpoints
- Added client-side pagination (5 per page) to mentee mentor listing, then handled backend paginated response format
- Set up GitHub Actions CI workflow for automatic APK build on push to dev/main
- Fixed TypeScript CI errors by removing deprecated tsconfig options and converting all path aliases to relative imports across 7 files
Significant Issues (Top 3 per category):
Code-Related:
- Issue #155: Implemented core mobile MVP features — role-based navigation (mentor/mentee see different tabs and dashboards), secure authentication with JWT + SecureStore, mentor discovery with pagination, notifications screen with unread badge, and Mentee Requests tab for mentor side
-
Issue #155: Connected all mobile screens to production backend (
http://167.71.44.71:8080/api); fixed 403 errors on profile save by switching to role-specific endpoints (PATCH /users/me/mentor,PATCH /users/me/mentee); extended mentor and mentee profile forms with new fields -
Issue #155: Set up GitHub Actions CI pipeline for automatic APK build (
mobile-build-apk.yml); fixed TypeScript CI errors by removing deprecated tsconfig options and converting all@/path aliases to relative imports across 7 files
Non-Code-Related:
-
Issue #155: Identified that backend was not sending notifications to mentors when a mentee sends a request — diagnosed the missing
notificationEventPublishercall inMentorshipRequestServiceand relayed to backend team for fix (resolved in PR #221) -
Issue #155: Identified that backend pagination change broke the mobile mentor listing — immediately diagnosed and fixed (
res.data.content ?? res.data) and coordinated merge with team to keep dev branch stable
Pull Requests:
- PR #153: Initialize mobile app — React Native Expo project setup with MVP features (auth, splash screen, role-based dashboard, mentor constraints, request management)
- PR #165: Fix mobile login screen and CI issues — login/register backend integration, explore tab fix, API client setup
- PR #232: feat(mobile): notifications screen, production server connection, unread badge on home, Mentee Requests tab, extended profile fields, GitHub Actions APK CI, layout and SecureStore fixes
- PR #234: fix(mobile): handle paginated response from /users/mentors
Tests:
- Manual end-to-end testing of all mobile flows (login, profile update, explore, send request, accept/reject, notifications, availability)
Additional Information:
- Coordinated with backend team to fix mentor notification on request creation
- All mobile screens registered in
_layout.tsxwithheaderShown: falseto prevent double header rendering issue - APK successfully built via GitHub Actions and published as GitHub Release (
mvp-milestone) for MVP submission - Identified and relayed to backend team: Expo Push API not integrated despite
deviceTokenfield existing — native push notifications pending for final milestone
Responsibilities: Backend feature development (profile, matching, mentorship request, mentorship lifecycle, availability, file upload), security hardening, CI/CD setup, backend test suite, UML diagrams (initial + MVP), lab session organization, and lab feedback planning.
Main Contributions:
- Built the Profile CRUD layer:
GET/PATCH /api/users/me, role-specificPATCH /api/users/me/mentorand/api/users/me/mentee, sealedProfileResponsehierarchy, andGlobalExceptionHandlerfor structured errors - Implemented the mentee candidate viewing endpoint (
GET /api/matching/mentees) with preference filtering, capacity checks, and privacy controls (first-name-only, no photo) - Implemented mentorship request creation and listing with duplicate prevention (partial unique index), capacity enforcement, and paginated sent/received lists
- Implemented mentorship accept/reject and active relationship management (
/api/mentorship-requests/{id}/accept|reject,/api/mentorships, shared goal endpoint) with atomic side effects - Implemented mentor availability storage and retrieval with overlap detection, bulk replace, and
@ValidTimeRangebean validator - Implemented profile photo upload (
POST/DELETE /api/users/me/photo) with magic-byte verification, 5MB limit, UUID filenames, and transactionalafterCommitfile deletion - Added pagination to user list and matching endpoints (
Page<T>responses, size clamping) and unpaginated/allvariants for backward compatibility - Security hardening: IDOR fix on
DELETE /api/users/{id}, input validation on auth DTOs, CORS config, custom auth exceptions returning correct HTTP status codes - Set up the backend CI/CD pipeline (GitHub Actions → ghcr.io) with Postgres service container for integration tests
- Produced the MVP UML diagrams (class, use case, sequence) aligned with the implemented backend
Significant Issues:
Code-Related (by impact):
- Issue #105 — Mentorship lifecycle: accept/reject, active relationship creation, shared goal (MVP scope; extend/end/cancel/ban/rating deferred to final milestone)
- Issue #104 — Mentorship request creation and listing with capacity and duplicate checks
- Issue #101 — Profile CRUD endpoints (foundation for matching, requests, and lifecycle) with role-based access and structured error handling
Non-Code-Related:
- Issue #228 — MVP UML diagrams (class, use case, sequence)
- Issue #164 — Lab 7 report
- Issue #76 — Fix class diagram: complete method signatures and missing classes
Pull Requests:
- PR #147 — Backend CI/CD pipeline (GitHub Actions → ghcr.io) with Postgres service container and initial auth test suite
-
PR #159 — Profile CRUD endpoints, sealed
ProfileResponse,GlobalExceptionHandler, mentee-to-mentee access restriction - PR #176 — Mentee candidate viewing endpoint for mentors with privacy-safe DTO and keyword filtering
- PR #177 — Mentorship request creation and listing with duplicate and capacity enforcement
- PR #183 — Mentor availability storage and retrieval with overlap detection
- PR #184 — Correct HTTP status codes from auth endpoints via custom exceptions
- PR #185 — Mentorship accept/reject and active relationship management
- PR #186 — Security hardening (IDOR fix, input validation, CORS, Swagger cleanup)
- PR #206 — DTO inheritance refactor and role-specific profile endpoints
-
PR #209 — Profile photo upload with
FileStorageServiceand security validations - PR #223 — Pagination on user list and matching endpoints
-
PR #231 — Unpaginated
/allendpoints for backward compatibility
Unit Tests:
- ProfileControllerTest.java, ProfileIntegrationTest.java — profile CRUD, role-specific endpoints, validation
- MatchingServiceTest.java, MatchingControllerTest.java, MatchingIntegrationTest.java — mentee candidate viewing, preference filtering, privacy
- MentorshipRequestServiceTest.java, MentorshipRequestControllerTest.java, MentorshipRequestIntegrationTest.java — request creation, duplicate/capacity enforcement
- MentorshipServiceTest.java, MentorshipControllerTest.java, MentorshipIntegrationTest.java — accept/reject side effects, shared goal
- AvailabilityServiceTest.java, AvailabilityControllerTest.java, AvailabilityIntegrationTest.java — overlap detection, bulk replace
- FileStorageServiceTest.java, PhotoUploadControllerTest.java, PhotoUploadIntegrationTest.java — image validation, magic bytes, path traversal
- AuthServiceTest.java, AuthControllerTest.java, AuthIntegrationTest.java — initial auth coverage and custom exception HTTP status codes
Additional Information:
- Set up the backend CI/CD pipeline on GitHub Actions with a Postgres 16 service container; test failures block Docker build and deploy
- Resolved merge conflicts on teammates' PRs during integration
- Reviewed PR #173 (mentor matching algorithm) and PR #214 (production ready release), and merged teammates' PRs throughout the milestone to maintain integration pace
- Created the initial project class diagram (Issue #57, #47) and produced the MVP class, use case, and sequence diagrams (Issue #228); added source
.pumlfiles underdiagrams/ - Addressed Lab 4 feedback on the class and sequence diagrams — completed method signatures, added missing classes, and fixed the cancel-relationship/auto-tempban sequence diagram (Issues #75, #76, #78)
- Integrated all sequence diagrams into the wiki page (Issue #60) and enhanced the final use case diagram (Issues #38, #46)
- Organized and led weekly lab sessions and team meetings, planned follow-ups on lab feedback, and drafted the Lab 1, Lab 5, and Lab 7 reports (Issues #12, #63, #164) along with the MVP demo plan wiki page (Issue #163)
- Contributed to requirements elicitation, scenario authoring, and requirements updates (Issues #9, #10, #14, #20, #24, #40, #48)
Responsibilities: Mobile application development with React Native / Expo, mobile UI implementation, role-based mobile flows for mentors and mentees, profile and discovery screens, mentorship request screens, mobile authentication UI, mobile CI fixes, and mobile MVP polishing.
Main Contributions:
- Initialized the mobile application structure with Expo Router, tab navigation, mobile asset structure, theme setup, and role-aware screen organization
- Implemented the initial splash and onboarding flows for the mobile app
- Built the mobile login and registration screens with form validation and backend API integration
- Integrated secure token storage using Expo SecureStore for authenticated mobile sessions
- Implemented role-aware mobile profile screens for mentees and mentors, including profile editing fields, interests/expertise chips, and avatar/profile image handling
- Implemented mentor discovery screens for mentees and mentee suggestion screens for mentors
- Implemented mobile mentorship request screens, including sent/pending requests, incoming mentor requests, active mentorship display, and navigation to candidate/profile views
- Implemented mobile screens for availability scheduling, meetings/sessions, task tracking, notifications, messages, and active connection profiles
- Added and refined mobile role-based UI behavior, including mentor/mentee labels, profile headers, request states, notification badge behavior, and splash/onboarding branding
- Fixed mobile login screen style issues and CI-related lint/build problems
- Helped stabilize mobile-backend integration by adapting screens to backend response formats and role-specific endpoints
Significant Issues:
Code-Related (by impact):
- Issue #96 — Implement profile screen with editing capabilities and avatar upload
- Issue #97 — Implement mentor discovery screen and mentee suggestion screen
- Issue #99 — Implement mentorship request screens and active mentorship list
- Issue #95 — Implement mobile registration and login screens with form validation
- Issue #178 — Mobile App Testing and CI Setup
- Issue #155 — Mobile MVP core feature implementation and UI/UX refinements
Non-Code-Related:
- Issue #57 — Class Diagram
- Issue #55 — UML Sequence Diagram about Reporting User
- Issue #51 — Explaining members' contribution
- Issue #24 — Creating requirements covering scenarios
- Issue #14 — Fixing elicitation questions
- Issue #5 — Create an individual Wiki page for Ovgu Su Afsar
Pull Requests:
- PR #153 — Mobile app initialized; added the initial Expo mobile app structure, navigation, core mobile screens, profile screen, discovery screens, request-related screens, and mobile CI workflow
- PR #165 — Fixed mobile login screen and CI issues; corrected login screen styles, onboarding lint issue, and mobile CI checks
- PR #69 — Feature/stub app Ovgu button; contributed to the early stub app implementation
Unit Tests / CI:
- Contributed to mobile CI setup through the mobile workflow introduced with the mobile app initialization and later fixes
- Helped ensure mobile project health by addressing lint/style issues that blocked CI checks
- Worked on mobile-side integration stability by testing core flows manually against backend endpoints during MVP development
- Mobile CI-related contribution is tracked under Issue #178 and PR #165
Additional Information:
- Established the first complete mobile MVP skeleton under
mobile-app/, including navigation layout, assets, Expo configuration, and major app screens - Implemented mobile screens that support the core end-to-end MVP journey: onboarding, authentication, profile management, mentor discovery, request handling, active mentorship tracking, availability scheduling, notifications, and task/session views
- Worked on role-specific UX so that mentor and mentee users see different profile, discovery, request, and active mentorship states
- Improved mobile visual consistency by refining profile headers, role labels, splash/onboarding logo usage, and notification badge behavior
- Helped align the mobile client with backend API changes such as role-specific profile update endpoints, paginated mentor responses, mentorship request endpoints, and notification/read-all behavior
- Contributed to early project documentation and analysis work, including requirements, elicitation questions, wiki contribution explanations, class diagram work, and a sequence diagram for the report-user/admin investigation flow
- Participated in mobile MVP refinement under Issue #155, especially by iterating on UI/UX gaps found during manual testing and demo preparation
Muhammet Sami Çakmak (Frontend)
- As a member of the Frontend Web team, my primary responsibility was developing the React-based user interfaces.
- My scope included implementing the profile management, mentor discovery interfaces, mentorship request workflows, and the centralized dashboard layouts.
- Built mentor discovery cards, mentee candidate lists, and the entire UI for sending, receiving, and managing mentorship requests.
- Implemented robust authentication state management, resolving critical session loss issues upon page refresh and integrating secure manual logout functionality.
- Refactored the data layer across the Explore and Mentorship Requests pages to seamlessly utilize and render actual backend profile data (background and interests).
- Streamlined the user experience by consolidating Mentor Preferences directly into the main Profile page and resolved various UI/UX layout and routing inconsistencies across the application.
- Delivered comprehensive unit test coverage for the frontend Mentorship Request flow to ensure UI reliability before the MVP release.
Code-Related:
- Issue #194: Implemented unit tests using Vitest for the mentorship request feature, covering API utility functions and UI components involved in the mentorship request flow.
- Issue #116: Created reusable UI components that allow an authenticated mentee to send a mentorship request to a mentor via the backend API.
- Issue #89: Built the detailed view (a dedicated page or a modal) that opens when a mentor clicks "View Details" on a specific request from their pending list. This interface will allow mentors to evaluate the candidate and respond.
Non-Code-Related:
- Issue #230: Contributed to prepare MVP Report page and create the MVP pre-release page.
- Issue #54: Created Sequence Diagram for the User Registration Use-Case that has the Sign Up flow allowing Unaccounted Users to create accounts and select a role (Mentor or Mentee).
- Issue #29: Contributed to complete the visual mock-ups for Scenario 3 to cover the entire user journey.
- PR #210: This PR addresses several UI/UX inconsistencies, fixes layout routing issues, and refactors the data layer to utilize actual profile data (background and interests) across the Explore and Mentorship Requests pages.
- PR #204: This PR introduces a manual logout feature, allowing users to securely terminate their session via a new profile dropdown menu in the navigation bar.
- PR #203: This PR resolves the issue where the user's session was lost upon refreshing the page (F5).
- PR #201: This pull request introduces comprehensive unit test coverage for the Mentorship Request feature flow within the frontend module.
- PR #189: Integrated the Mentor Preferences settings directly into the existing Profile page instead of creating a separate dashboard, providing a much smoother user experience. Additionally, resolved a minor UI inconsistency in the main layout.
- PR #188: This PR implements the frontend UI for the mentorship request interface.
Tests
- Testing the UI interactions and validations of the Mentorship Request Modal component (e.g., character limit restrictions, submit button states, modal visibility, and payload formatting) - Link to test file
- Testing the API utility functions responsible for mentorship requests (verifying endpoint targets, HTTP methods, authorization header inclusion, and payload stringification for methods like
createMentorshipRequest) - Link to test file
Beyond my core development and demo execution duties, I actively participated in our team's code review process by reviewing and merging my teammate's pull requests to ensure code quality and smooth integration. Furthermore, our team maintained high collaborative efficiency; for example, some of the PRs I opened to fix specific frontend bugs were ultimately closed without merging because my teammate proactively resolved those overlapping issues within their own parallel tasks. This close communication streamlined our workflow and prevented unnecessary merge conflicts.
Responsibilities: Lead contributor of the React web frontend: architecture, all pages, routing, state management, and frontend-backend wiring. DevOps: production server provisioning (DigitalOcean droplet), Docker Compose deployment, domain configuration, and CD pipeline. Email delivery infrastructure (Resend API replacing MailHog for production). Keeping the frontend in sync with evolving backend API contracts (endpoint changes, DTO shape fixes).
Main Contributions:
- Built the full web application: Auth flow (login, register, email verification, forgot/reset password), Home dashboard (mentor & mentee views), Profile page (view + edit), Explore/Discover page, Availability page, User Profile viewer, Messaging UI, and Notifications bell
- Connected every page to real REST endpoints — auth, profile (
PATCH /users/me/mentor|mentee), mentorship requests, notifications, matching, availability (GET|PUT /availability,/mentee-availability), user lookup (GET /users/:id) - CI/CD pipeline: GitHub Actions workflow that auto-deploys to production droplet on every push to
mainvia SSH + Docker Compose (docker compose up --build -d) - Frontend CI: Vitest test suite + GitHub Actions pipeline running on every push/PR to
mainanddev - Profile photo upload: replaced URL input with device file upload using
POST /api/users/me/photo(multipart) - Notifications system: real-time NotificationBell in navbar polling the backend, with unread badge and dropdown
- Mentor home dashboard: wired pending mentorship requests, active mentees, stats, and accept/reject flow to real endpoints
- Production email: swapped MailHog with Resend API so verification and password-reset emails work in production
Significant Issues:
Code-Related:
-
Issue #213: Production Deployment Setup — configured DigitalOcean droplet, set up Docker Compose for all services, registered domain
mymentornet.org, wrote the GitHub Actions auto-deploy workflow with SSH secrets. - Issue #216: Web Notification System — implemented NotificationBell component with real API polling, unread count badge, per-notification read marking, and wired mentor/mentee notifications end-to-end.
- Issue #215: Mentorship Request & View Backend Wiring — connected mentorship request sending, listing, accept/reject flow, and candidate mentee viewing to real backend endpoints.
-
Issue #205: Connect Profile Page to Backend — added
getOwnProfile,updateOwnProfile,getUserByIdto api.js; extended AuthContext; fully rewired ProfilePage and fixed DTO field mismatches. -
Issue #226: Setting profile image with new endpoint — replaced URL text input with device file upload using
POST /api/users/me/photomultipart endpoint. - Issue #202: User Logout Functionality — implemented logout via profile dropdown menu with token clearing and session cleanup.
- Issue #198: Set up production email service — replaced MailHog with Resend API so verification and password-reset emails work in production.
- Issue #194: Unit Tests for Mentorship Request Feature — wrote Vitest unit tests covering the mentorship request flow.
- Issue #180: Auth Services Unit Testing — wrote unit tests for all auth API functions including error handling and token encoding.
-
Issue #179: Auth Endpoints Wiring — wired all auth endpoints (
verifyEmail,validateResetToken,forgotPassword,resendVerification,resetPassword) to the web frontend. - Issue #161: Change frontend Docker ports — updated Docker Compose frontend port configuration for production vs local dev.
- Issue #148: Frontend Testing and CI Setup — initialized Vitest test suite and set up GitHub Actions CI pipeline for the frontend.
-
Issue #119: Environment Variable Management & Deployment Environments — set up
.envmanagement and deployment environment configuration. - Issue #118: Mentor Discovery Interface — built the Explore page with mentor cards, search, interest chip filters, and request flow.
- Issue #116: Mentorship Request Interface — added Send Request button and modal form on mentor cards for mentees to send requests.
- Issue #115: Incoming Mentorship Requests List Page — built the mentor-side incoming requests list with accept/reject flow.
-
Issue #114: Discover / View Other Profiles — implemented the UserProfilePage with
/profile/:idroute for viewing other users' profiles. - Issue #109: CI/CD Pipeline with GitHub Actions — set up the initial GitHub Actions workflows for web CI and CD.
- Issue #100: Edit Own Profile — implemented the profile edit form with role-specific fields, validation, and backend save.
- Issue #98: Own Profile View Interface — implemented the profile view panel with privacy indicators.
- Issue #93: Build availability calendar UI — implemented the interactive weekly schedule UI for availability slot selection.
- Issue #91: Mentor dashboard — implemented the mentor home dashboard with mentoring preferences and request management.
- Issue #87: Infrastructure & Scaffolding — set up the initial React project structure, routing, and base component architecture.
- Issue #85: Frontend Auth & Session Management — implemented JWT-based auth context, protected routes, and session persistence.
Non-Code-Related:
- Issue #163: MVP Demo Plan (Wiki Page) — authored the team wiki page documenting the full demo scenario, feature checklist, and presenter assignments.
- Issue #162: Lab 7 MVP Demo Planning — organized and contributed to the planning session for the MVP demo, coordinating across mobile, backend, and web subgroups.
- Issue #164: Lab 7 Report — contributed to the team lab report covering demo outcomes and individual contributions.
Pull Requests:
-
PR #224:
ci: auto-deploy to production droplet on push to main— adds GitHub Actions SSH deploy workflow; requiresDEPLOY_HOSTandDEPLOY_SSH_KEYsecrets. Closes #213. -
PR #219:
Web/notifications and mentorship requests— NotificationBell, mentor home dashboard (pending requests, active mentees, stats, duration picker), mentee home improvements (AI best-match button, active mentor hero card), Explore page mentor/mentee candidate views. -
PR #211:
Profile system — backend connection— three new api.js functions, AuthContext extended with profile data, ProfilePage fully wired, UserProfilePage added with/profile/:idroute. -
PR #181:
Web/auth— wired 5 missing auth endpoints (verifyEmail,validateResetToken,forgotPassword,resendVerification,resetPassword), added email verification and password reset pages. -
PR #150:
ci: add frontend CI pipeline with GitHub Actions—.github/workflows/web_ci.ymlrunningnpm ci,vitest, andvite buildon push/PR tomainanddev. Closes #148. -
PR #172:
Web/availability page— interactive weekly schedule UI with time slot selection; later fully connected to/availabilityand/mentee-availabilityendpoints in PR #235. -
PR #235:
fix(web): update endpoint integrations and UI fixes— wired availability pages to real endpoints, splitupdateOwnProfileby role, addedgetUserByIdcalls for profile photos, fixed day-of-week enum format (MONDAYetc.), handled Java LocalTime object format from API. -
PR #227:
feat(web): replace profile photo URL input with device file upload—POST/DELETE /api/users/me/photointegration, hidden file input, immediate preview. Closes #226.
Unit Tests:
- auth.test.js — 19 tests covering all auth API functions including error handling and token encoding
- api.test.js — 5 tests for mentorship API functions, endpoint correctness, and auth headers
- RequestMentorshipModal.test.jsx — 10 component tests
- HomePage.test.jsx — 8 tests for role-based dashboard rendering
- ExplorePage.test.jsx — 8 tests for mentor discovery, filtering, and request flow
Additional Information:
- Major part of the web application — 8+ pages, routing, auth state, API layer, and styling — was built and maintained, keeping pace with a rapidly changing backend
- Set up and maintained the live demo environment (
mymentornet.org) including SSL, Docker networking, port configuration, and the automated deploy pipeline — critical for the team to demo a live product rather than a localhost setup - Acted as the point of contact between backend and web, catching and fixing breaking API contract changes (paginated responses, role-split endpoints, enum format mismatches, Java LocalTime serialization) that would have blocked the demo
- The backend used MailHog (a local mail trap) which doesn't deliver real emails; replaced it with the Resend API so that email verification and password reset work in production — unblocking user registration for the live demo
Team Members
- Lab 1 Report (12/02/2026)
- Lab 2 Report (19/02/2026)
- Lab 3 Report (26/02/2026)
- Lab 4 Report (05/03/2026)
- Lab 5 Report (12/03/2026)
- Lab 6 Report (26/03/2026)
- Lab 7 Report (02/04/2026)
- Lab 8 Report (18/04/2026)
- Lab 9 Report (30/04/2026)
- Lab 10 Report (07/05/2026)
- Weekly Meeting Notes Template
- Lab Meeting 1 (12.02.2026)
- Weekly Meeting 1 (16.02.2026)
- Weekly Meeting 2 (24.02.2026)
- Weekly Meeting 3 (04.03.2026)
- Weekly Meeting 4 (11.03.2026)
- Weekly Meeting 5 (23.03.2026)
- Weekly Meeting 6 (29.03.2026)
- Weekly Meeting 7 (11.04.2026)
- Weekly Meeting 8 (28.04.2026)
- Weekly Meeting 9 (10.05.2026)
- Use Case Diagram 1 (New Mentor User for Mobile Scenario)
- Use Case Diagram 2 (Mentor-Mentee Matching Scenario)
- Use Case Diagram 3 (New Mentee User Scenario)
- Final Use Case Diagram
- MVP Use Case Diagram
- All Sequence Diagrams
- Sequence Diagram: Mentee Matching
- Sequence Diagram: Mentor Matching
- Sequence Diagram: Mentorship Management
- Sequence Diagram: Registration
- Sequence Diagram: Cancelling Mentorship Relationship and Auto Ban
- Sequence Diagram: Login-Logout
- Sequence Diagram: Reporting-User
- Sequence Diagram: Mentor Profile Management
- MVP Sequence Diagrams
- Test Plan & Coverage (MVP)
- Acceptance Testing Strategy
- Acceptance Tests
- Test Data Strategy
- Web Frontend Test Report
- Amin Abu-Hilga
- Övgü Su Afşar
- Muhammet Sami Çakmak
- Beratcan Doğan
- İbrahim Kayan
- Burak Ögüt
- Mehmet Bora Sarıoğlu
- Future Work (reference, not a deliverable)