
Ziad El Sharkawi developed core backend features for the SOEN490-SportsApp/SportsApp repository, focusing on scalable microservices and event-driven architectures. Over six months, he delivered user profile management, object storage with MinIO, and a robust notification system, integrating technologies such as Java, Spring Boot, and Kafka. His approach emphasized maintainability through comprehensive unit testing, code refactoring, and detailed API documentation. Ziad implemented secure authentication with Keycloak and OAuth2, streamlined data flows with DTOs, and ensured reliable CI by enhancing test coverage and build processes. His work addressed data privacy, operational reliability, and developer experience, resulting in a well-architected, production-ready backend.

April 2025 delivered a comprehensive NotificationEvent-driven notification framework for SOEN490-SportsApp/SportsApp. Implemented NotificationEvent model, producer/consumer, and orchestration flow via Kafka, enabling reliable cross-service notification data handling. Introduced orchestration service producer with mocks and updated topic wiring; refactored EventService to use NotificationEvent creation, centralizing event handling and improving testability. Fixed key stability issues, updated dependencies, and refreshed docs to support ongoing feature work (friend requests, badges).
April 2025 delivered a comprehensive NotificationEvent-driven notification framework for SOEN490-SportsApp/SportsApp. Implemented NotificationEvent model, producer/consumer, and orchestration flow via Kafka, enabling reliable cross-service notification data handling. Introduced orchestration service producer with mocks and updated topic wiring; refactored EventService to use NotificationEvent creation, centralizing event handling and improving testability. Fixed key stability issues, updated dependencies, and refreshed docs to support ongoing feature work (friend requests, badges).
March 2025 (SOEN490-SportsApp/SportsApp) - Delivered a robust Notification Service foundation with secure, scalable, event-driven capabilities. Key features delivered include scaffolding with Gradle and OAuth2/Keycloak prep, Keycloak JWT support, global exception handling, core data models and MongoDB persistence, and a comprehensive messaging stack (Kafka, WebSocket) with orchestration support. API surface received OpenAPI, security, and CORS configurations. Logging and observability improvements were added via EndpointFilter/RequestIdFilter. Also updated Kafka bootstrap configuration to read from environment variables for reliable deployment. These efforts collectively enable reliable notification delivery for social interactions (friend requests, mentions, badges) and event lifecycle notifications, delivering business value through improved user engagement, security, and operational reliability.
March 2025 (SOEN490-SportsApp/SportsApp) - Delivered a robust Notification Service foundation with secure, scalable, event-driven capabilities. Key features delivered include scaffolding with Gradle and OAuth2/Keycloak prep, Keycloak JWT support, global exception handling, core data models and MongoDB persistence, and a comprehensive messaging stack (Kafka, WebSocket) with orchestration support. API surface received OpenAPI, security, and CORS configurations. Logging and observability improvements were added via EndpointFilter/RequestIdFilter. Also updated Kafka bootstrap configuration to read from environment variables for reliable deployment. These efforts collectively enable reliable notification delivery for social interactions (friend requests, mentions, badges) and event lifecycle notifications, delivering business value through improved user engagement, security, and operational reliability.
February 2025: Delivered a comprehensive Object Management Subsystem and storage infrastructure for SportsApp, enabling scalable, secure object storage via MinIO; completed event lifecycle enhancements including event state enums and cancellation flow; updated user profiles with profile picture support and exposed public MinIO URLs. Also performed substantial codebase cleanup and hardened the test suite, improving maintainability and CI stability. Demonstrated strong collaboration across storage, event, and profile modules, and accelerated deployment readiness through Dockerized services and clear DTOs.
February 2025: Delivered a comprehensive Object Management Subsystem and storage infrastructure for SportsApp, enabling scalable, secure object storage via MinIO; completed event lifecycle enhancements including event state enums and cancellation flow; updated user profiles with profile picture support and exposed public MinIO URLs. Also performed substantial codebase cleanup and hardened the test suite, improving maintainability and CI stability. Demonstrated strong collaboration across storage, event, and profile modules, and accelerated deployment readiness through Dockerized services and clear DTOs.
January 2025 (Month: 2025-01) – Monthly summary for SOEN490-SportsApp/SportsApp focusing on business value and technical achievements. Key features delivered: - User Deletion and Data Cleanup: Implemented DELETE /users/{id} in UserController with corresponding services to purge user data from Keycloak and the user repository, including robust error handling for non-existent users and Keycloak communication issues. (Commits: ed543bfb3a269109f3235efef1a96d3d3a0bd505; 019d288a5e164755558cab101720369c30f8d5a7) - Storage Service Foundations: Scaffolded a new storage-service microservice with Spring Boot setup, OAuth2 integration, and Swagger for API docs – establishing groundwork for storage feature delivery. (Commit: 291555f1a3975974f2508d00bd06ee603bb5b138) - Test Suite Enhancements for User Service and Auth: Expanded test coverage across controllers, utilities, and Keycloak error scenarios; improved branch coverage and Mockito setup for reliable CI, including tests for Mappers, Controllers, Utils, and various response scenarios. (Commits: acde2026d85f17049bdd1a9e025ebf893c3be3d9; 7cb0537fe04732314d1fe2f55127332284943dc0; a79df79e4777c9dbaf05e623f959550cfc882b42; 904ff65147a713877cb8314d2fc47672b9697378; 95f4009fe8ee428a74489ae776df709afab281ba; 7bb0ca42bad3ff15a1282cc950103139fe00f608; 76db816256f8c44643caa9399068f9cff9e771f4; bdb20c7a8d2051dc97aab7f77635cd7712d0ce86) Major bugs fixed: - Resolved issues in user deletion flow by ensuring graceful handling of non-existent users and resilient Keycloak communication, reducing failure modes in data cleanup. - Stabilized test execution by excluding problematic components from test compilations and enhancing Mockito setup, leading to more reliable CI and faster feedback. Overall impact and accomplishments: - Strengthened data privacy and lifecycle management by delivering a robust user deletion pathway that purges data from both Keycloak and the local repository. - Improved software quality, test reliability, and CI feedback loops through comprehensive test suite enhancements and test hygiene improvements. - Laid strategic groundwork for storage capabilities with a new microservice scaffold, enabling faster feature delivery in future sprints. Technologies/skills demonstrated: - Spring Boot, REST controllers, Keycloak OAuth2 integration - Microservices architecture and API documentation with Swagger - Unit/integration testing with JUnit/Mockito; test strategy and coverage improvements - Git-based workflow (GH issues, commits) and CI hygiene
January 2025 (Month: 2025-01) – Monthly summary for SOEN490-SportsApp/SportsApp focusing on business value and technical achievements. Key features delivered: - User Deletion and Data Cleanup: Implemented DELETE /users/{id} in UserController with corresponding services to purge user data from Keycloak and the user repository, including robust error handling for non-existent users and Keycloak communication issues. (Commits: ed543bfb3a269109f3235efef1a96d3d3a0bd505; 019d288a5e164755558cab101720369c30f8d5a7) - Storage Service Foundations: Scaffolded a new storage-service microservice with Spring Boot setup, OAuth2 integration, and Swagger for API docs – establishing groundwork for storage feature delivery. (Commit: 291555f1a3975974f2508d00bd06ee603bb5b138) - Test Suite Enhancements for User Service and Auth: Expanded test coverage across controllers, utilities, and Keycloak error scenarios; improved branch coverage and Mockito setup for reliable CI, including tests for Mappers, Controllers, Utils, and various response scenarios. (Commits: acde2026d85f17049bdd1a9e025ebf893c3be3d9; 7cb0537fe04732314d1fe2f55127332284943dc0; a79df79e4777c9dbaf05e623f959550cfc882b42; 904ff65147a713877cb8314d2fc47672b9697378; 95f4009fe8ee428a74489ae776df709afab281ba; 7bb0ca42bad3ff15a1282cc950103139fe00f608; 76db816256f8c44643caa9399068f9cff9e771f4; bdb20c7a8d2051dc97aab7f77635cd7712d0ce86) Major bugs fixed: - Resolved issues in user deletion flow by ensuring graceful handling of non-existent users and resilient Keycloak communication, reducing failure modes in data cleanup. - Stabilized test execution by excluding problematic components from test compilations and enhancing Mockito setup, leading to more reliable CI and faster feedback. Overall impact and accomplishments: - Strengthened data privacy and lifecycle management by delivering a robust user deletion pathway that purges data from both Keycloak and the local repository. - Improved software quality, test reliability, and CI feedback loops through comprehensive test suite enhancements and test hygiene improvements. - Laid strategic groundwork for storage capabilities with a new microservice scaffold, enabling faster feature delivery in future sprints. Technologies/skills demonstrated: - Spring Boot, REST controllers, Keycloak OAuth2 integration - Microservices architecture and API documentation with Swagger - Unit/integration testing with JUnit/Mockito; test strategy and coverage improvements - Git-based workflow (GH issues, commits) and CI hygiene
December 2024 monthly summary for SOEN490-SportsApp/SportsApp focusing on delivering robust event update capabilities, improving maintainability, and enhancing developer experience. The work delivered concrete REST update support, expanded test coverage, and thorough documentation, driving reliability and faster feature delivery for event management.
December 2024 monthly summary for SOEN490-SportsApp/SportsApp focusing on delivering robust event update capabilities, improving maintainability, and enhancing developer experience. The work delivered concrete REST update support, expanded test coverage, and thorough documentation, driving reliability and faster feature delivery for event management.
November 2024 (SOEN490-SportsApp/SportsApp) delivered core user-data capabilities and engagement features with robust test coverage and maintainability improvements. Implemented two main features: (1) User Profile Retrieval by ID with a dedicated endpoint, service method, repository query, and new UserDoesNotExistException; inclusive of comprehensive unit tests and test adjustments to align with profile model changes. (2) User Badges System enabling badge assignment, retrieval, DTOs/models, and badge counts, with corresponding unit tests and minor refactors. Key changes include targeted tests for failure scenarios, removal of a failing test file, and removal of unnecessary imports to improve build and test performance.
November 2024 (SOEN490-SportsApp/SportsApp) delivered core user-data capabilities and engagement features with robust test coverage and maintainability improvements. Implemented two main features: (1) User Profile Retrieval by ID with a dedicated endpoint, service method, repository query, and new UserDoesNotExistException; inclusive of comprehensive unit tests and test adjustments to align with profile model changes. (2) User Badges System enabling badge assignment, retrieval, DTOs/models, and badge counts, with corresponding unit tests and minor refactors. Key changes include targeted tests for failure scenarios, removal of a failing test file, and removal of unnecessary imports to improve build and test performance.
Overview of all repositories you've contributed to across your timeline