Repository: Women-Coding-Community/wcc-backend
Pull request #310: feat: List Partners page - GET API
Author: login: nverbic
Created: 2025-03-05T17:15:04Z | Merged: 2025-03-06T10:42:40Z

## Description

Describe your changes in detail.

  Implement API for Partners page.

  - Add PartnersPage.java
    class contains details displayed on the AboutUs\Partners page, according to the Figma design phase 1
  - Add Partner.java
    class contains partner's details according to the Figma design phase 1
  - Add partnersPage.json
    add 5 current partners' details. Partners descriptions are copied from the current WCC website
   - Update AboutController.java
     add GET api getPartnersPage()
   - Update CmsService.java
     add getPartners() service function
   - Add tests and json file for testing
   - Other
     update Slack link in collaboratorPage.json

Why is this change required?
  Partners page required in cms requirements documentation.

Add Notes if anything is left unclear or not completed
   - Check with the team about the length of the partners descriptions
   - Check with the team for WomenTech Network and Devoxx UK description (current  are taken from the websites) 
   - Created new issue: https://github.com/Women-Coding-Community/wcc-backend/issues/312 that resloves the two notes bove

## Related Issue

Please link to the issue here
  Closes https://github.com/Women-Coding-Community/wcc-backend/issues/93
  Closes https://github.com/Women-Coding-Community/wcc-backend/issues/92

## Change Type

- [ ] Bug Fix
- [X] New Feature
- [ ] Code Refactor
- [ ] Documentation
- [ ] Test
- [ ] Other

## Screenshots
API GET Partners Page

![Screenshot (172)](https://github.com/user-attachments/assets/769d6d0d-2443-4346-bb04-761c8fab0f0e)

Partners page schema

![Screenshot (173)](https://github.com/user-attachments/assets/3634034a-5505-45cb-8fef-2b715680e5c7)

Partners schema

![Screenshot (174)](https://github.com/user-attachments/assets/ccbc3c24-a43e-4521-9eb1-3b682071fb17)

## Pull request checklist

Please check if your PR fulfills the following requirements:

- [X] I checked and followed the [contributor guide](../CONTRIBUTING.md)
- [X] I have tested my changes locally.

<!--  Thanks for sending a pull request! -->


Diff:
diff --git a/src/main/java/com/wcc/platform/controller/AboutController.java b/src/main/java/com/wcc/platform/controller/AboutController.java
index 121a8d599..78d98675a 100644
--- a/src/main/java/com/wcc/platform/controller/AboutController.java
+++ b/src/main/java/com/wcc/platform/controller/AboutController.java
@@ -5,6 +5,7 @@
 import com.wcc.platform.domain.cms.pages.aboutus.AboutUsPage;
 import com.wcc.platform.domain.cms.pages.aboutus.CelebrateHerPage;
 import com.wcc.platform.domain.cms.pages.aboutus.CodeOfConductPage;
+import com.wcc.platform.domain.cms.pages.aboutus.PartnersPage;
 import com.wcc.platform.service.CmsService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.security.SecurityRequirement;
@@ -96,4 +97,16 @@ public ResponseEntity<AboutUsPage> getAboutUsPage() {
   public ResponseEntity<CelebrateHerPage> getCelebrateHerPage() {
     return ResponseEntity.ok(cmsService.getCelebrateHer());
   }
+
+  /**
+   * API to retrieve information about partners.
+   *
+   * @return Partners page content.
+   */
+  @GetMapping("/partners")
+  @Operation(summary = "API to retrieve information about partners")
+  @ResponseStatus(HttpStatus.OK)
+  public ResponseEntity<PartnersPage> getPartnersPage() {
+    return ResponseEntity.ok(cmsService.getPartners());
+  }
 }
diff --git a/src/main/java/com/wcc/platform/domain/cms/PageType.java b/src/main/java/com/wcc/platform/domain/cms/PageType.java
index c192bd427..9e1be16cc 100644
--- a/src/main/java/com/wcc/platform/domain/cms/PageType.java
+++ b/src/main/java/com/wcc/platform/domain/cms/PageType.java
@@ -20,7 +20,8 @@ public enum PageType {
   TEAM("teamPage.json", "page:TEAM"),
   COLLABORATOR("collaboratorPage.json", "page:COLLABORATORS"),
   CODE_OF_CONDUCT("codeOfConductPage.json", "page:CODE_OF_CONDUCT"),
-  CELEBRATE_HER("celebrateHerPage.json", "page:CELEBRATE_HER");
+  CELEBRATE_HER("celebrateHerPage.json", "page:CELEBRATE_HER"),
+  PARTNERS("partnersPage.json", "page:PARTNERS");
 
   public static final String ID_PREFIX = "page:";
 
diff --git a/src/main/java/com/wcc/platform/domain/cms/pages/aboutus/PartnersPage.java b/src/main/java/com/wcc/platform/domain/cms/pages/aboutus/PartnersPage.java
new file mode 100644
index 000000000..62dfdd61c
--- /dev/null
+++ b/src/main/java/com/wcc/platform/domain/cms/pages/aboutus/PartnersPage.java
@@ -0,0 +1,16 @@
+package com.wcc.platform.domain.cms.pages.aboutus;
+
+import com.wcc.platform.domain.cms.attributes.Contact;
+import com.wcc.platform.domain.cms.attributes.HeroSection;
+import com.wcc.platform.domain.cms.attributes.ListSection;
+import com.wcc.platform.domain.platform.Partner;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+
+/** CMS Partners page. */
+public record PartnersPage(
+    @NotBlank String id,
+    @NotNull HeroSection heroSection,
+    @NotNull ListSection<String> introSection,
+    @NotNull Contact contact,
+    ListSection<Partner> partners) {}
diff --git a/src/main/java/com/wcc/platform/domain/platform/Partner.java b/src/main/java/com/wcc/platform/domain/platform/Partner.java
new file mode 100644
index 000000000..40b3a25b1
--- /dev/null
+++ b/src/main/java/com/wcc/platform/domain/platform/Partner.java
@@ -0,0 +1,27 @@
+package com.wcc.platform.domain.platform;
+
+import com.wcc.platform.domain.cms.attributes.Image;
+import com.wcc.platform.domain.cms.attributes.LabelLink;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotEmpty;
+import java.util.List;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+
+/** Partner class with common attributes for all partners. */
+@Getter
+@EqualsAndHashCode
+@ToString
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class Partner {
+  @NotEmpty private List<Image> images;
+  @NotBlank private String name;
+  @NotBlank private String description;
+  @NotEmpty private LabelLink link;
+}
diff --git a/src/main/java/com/wcc/platform/service/CmsService.java b/src/main/java/com/wcc/platform/service/CmsService.java
index b6e772ba7..9653ebaf4 100644
--- a/src/main/java/com/wcc/platform/service/CmsService.java
+++ b/src/main/java/com/wcc/platform/service/CmsService.java
@@ -12,6 +12,7 @@
 import com.wcc.platform.domain.cms.pages.aboutus.AboutUsPage;
 import com.wcc.platform.domain.cms.pages.aboutus.CelebrateHerPage;
 import com.wcc.platform.domain.cms.pages.aboutus.CodeOfConductPage;
+import com.wcc.platform.domain.cms.pages.aboutus.PartnersPage;
 import com.wcc.platform.domain.cms.pages.events.EventsPage;
 import com.wcc.platform.domain.exceptions.ContentNotFoundException;
 import com.wcc.platform.domain.exceptions.PlatformInternalException;
@@ -201,4 +202,23 @@ public CelebrateHerPage getCelebrateHer() {
 
     throw new ContentNotFoundException(PageType.CELEBRATE_HER);
   }
+
+  /**
+   * Find Partners page in DB and convert to Pojo PartnersPage.
+   *
+   * @return Pojo PartnersPage.
+   */
+  public PartnersPage getPartners() {
+    final var page = pageRepository.findById(PageType.PARTNERS.getId());
+
+    if (page.isPresent()) {
+      try {
+        return objectMapper.convertValue(page.get(), PartnersPage.class);
+      } catch (IllegalArgumentException e) {
+        throw new PlatformInternalException(e.getMessage(), e);
+      }
+    }
+
+    throw new ContentNotFoundException(PageType.PARTNERS);
+  }
 }
diff --git a/src/main/resources/collaboratorPage.json b/src/main/resources/collaboratorPage.json
index dd9465ef4..2a85b74d2 100644
--- a/src/main/resources/collaboratorPage.json
+++ b/src/main/resources/collaboratorPage.json
@@ -23,7 +23,7 @@
       },
       {
         "type": "slack",
-        "link": "http://shortlink_to_slack.com"
+        "link": "https://join.slack.com/t/womencodingcommunity/shared_invite/zt-2hpjwpx7l-rgceYBIWp6pCiwc0hVsX8A"
       }
     ]
   },
diff --git a/src/main/resources/partnersPage.json b/src/main/resources/partnersPage.json
new file mode 100644
index 000000000..267f683b4
--- /dev/null
+++ b/src/main/resources/partnersPage.json
@@ -0,0 +1,143 @@
+{
+  "id": "page:PARTNERS",
+  "heroSection": {
+    "title": "WCC Partners",
+    "customStyle": {
+      "backgroundColour": {
+        "color": "primary",
+        "shade": {
+          "name": "light",
+          "value": 90
+        }
+      }
+    }
+  },
+  "introSection": {
+    "title": "Why partner with us?",
+    "items": [
+      "Align with our mission to break barriers and advocate for gender equality in tech.",
+      "Engage in sponsorships, event collaborations, mentorship programs, and other programs.",
+      "Connect with and mentor talented women in tech.",
+      "Support initiatives that advocate for women’s rights, education, and professional development in technology."
+    ]
+  },
+  "contact": {
+    "title": "Become a WCC Partner",
+    "links": [
+      {
+        "type": "email",
+        "link": "london@womencodingcommunity.com"
+      },
+      {
+        "type": "slack",
+        "link": "https://join.slack.com/t/womencodingcommunity/shared_invite/zt-2hpjwpx7l-rgceYBIWp6pCiwc0hVsX8A"
+      }
+    ]
+  },
+  "partners": {
+    "title": "Meet Our Partners",
+    "description": "Our partners are committed to supporting our mission and empowering",
+    "items": [
+      {
+        "images": [
+          {
+            "path": "https://drive.google.com/uc?id=1sxYKgOSzql2sFX9FLnEHAQhmskOHwBzI&export=download",
+            "alt": "SurrealDB logo",
+            "type": "desktop"
+          },
+          {
+            "path": "https://drive.google.com/uc?id=1sxYKgOSzql2sFX9FLnEHAQhmskOHwBzI&export=download",
+            "alt": "SurrealDB logo",
+            "type": "mobile"
+          }
+        ],
+        "name": "SurrealDB",
+        "description": "SurrealDB is an innovative, multi-model, cloud-ready database, suitable for modern and traditional applications. Its versatility, and focus on developer experience, along with the ability for deployment on cloud, on-premise, embedded, and in edge computing environments, allows developers and organizations to meet the needs of their applications, without needing to worry about scalability or keeping data consistent across multiple different database platforms.\n\nSurrealDB have also established the Women in Rust community, a meetup group where women can connect, collaborate, and grow their skills in Rust.",
+        "link": {
+          "label": "Visit SurrealDB",
+          "uri": "https://surrealdb.com/"
+        }
+      },
+      {
+        "images": [
+          {
+            "path": "https://drive.google.com/uc?id=1aR_a7gAA31YdlEST9gGgT9J8t1DHZr_y&export=download",
+            "alt": "Amazon logo",
+            "type": "desktop"
+          },
+          {
+            "path": "https://drive.google.com/uc?id=1aR_a7gAA31YdlEST9gGgT9J8t1DHZr_y&export=download",
+            "alt": "Amazon logo",
+            "type": "mobile"
+          }
+        ],
+        "name": "Amazon",
+        "description": "Amazon is a global leader in e-commerce, redefining online shopping with its vast product selection, seamless customer experience, and advanced logistics network. With innovations like Amazon Prime, one-click purchasing, and a commitment to fast and reliable delivery, Amazon has transformed the way people shop worldwide.\n\nBeyond e-commerce, Amazon supports education and career growth through initiatives like Amazon Future Engineer, which provides opportunities for underrepresented groups in technology.",
+        "link": {
+          "label": "Visit Amazon",
+          "uri": "https://www.amazon.com/"
+        }
+      },
+      {
+        "images": [
+          {
+            "path": "https://drive.google.com/uc?id=1t6N6QEB3KQVZLLlrk3G6MOalAfxIwk-8&export=download",
+            "alt": "JetBrains logo",
+            "type": "desktop"
+          },
+          {
+            "path": "https://drive.google.com/uc?id=1t6N6QEB3KQVZLLlrk3G6MOalAfxIwk-8&export=download",
+            "alt": "JetBrains logo",
+            "type": "mobile"
+          }
+        ],
+        "name": "JetBrains",
+        "description": "JetBrains creates intelligent software development tools used by over 11.4 million professionals and 88 Fortune Global Top 100 companies. Its lineup of more than 30 products includes IDEs for most programming languages and technologies, such as IntelliJ IDEA, PyCharm, and others, as well as products for team collaboration, like YouTrack and TeamCity.\n\nJetBrains is also known for creating the Kotlin programming language, a cross-platform language used by more than 5 million developers worldwide yearly and recommended by Google as the preferred language for Android development.",
+        "link": {
+          "label": "Visit JetBrains",
+          "uri": "https://www.jetbrains.com/"
+        }
+      },
+      {
+        "images": [
+          {
+            "path": "https://drive.google.com/uc?id=1YO0SUlMEvYsP0AdgVWT6X3HR1Lq5x6bZ&export=download",
+            "alt": "Devoxx UK logo",
+            "type": "desktop"
+          },
+          {
+            "path": "https://drive.google.com/uc?id=1YO0SUlMEvYsP0AdgVWT6X3HR1Lq5x6bZ&export=download",
+            "alt": "Devoxx UK logo",
+            "type": "mobile"
+          }
+        ],
+        "name": "Devoxx UK",
+        "description": "Provide a first class tech conference where passionate developers can network, hack, get inspired and learn throughout. \n\nDevoxx is a conference by developers, for developers. It is offered at an affordable price so that every developer can enjoy the experience. \n\nDevoxx UK is a community effort. The team is made up of senior developers, user group leaders and passionate experts",
+        "link": {
+          "label": "Visit Devoxx UK",
+          "uri": "https://www.devoxx.co.uk/"
+        }
+      },
+      {
+        "images": [
+          {
+            "path": "https://drive.google.com/uc?id=1tNYfg0f5Hv78q89Q8tD15tmWyFNQ7fUZ&export=download",
+            "alt": "WomenTech Network logo",
+            "type": "desktop"
+          },
+          {
+            "path": "https://drive.google.com/uc?id=1tNYfg0f5Hv78q89Q8tD15tmWyFNQ7fUZ&export=download",
+            "alt": "WomenTech Network logo",
+            "type": "mobile"
+          }
+        ],
+        "name": "WomenTech Network",
+        "description": "WomenTech Network is one of the world's leading communities for women in tech with more than 9,000 Global Ambassadors representing 179 countries. \n\n70,000 tech leaders have collaborated with the network to date in order to cultivate a diverse global network that reaches 4.5 million people. WomenTech Network strives to empower women in tech through leadership development, professional growth, and mentorship programs. WomenTech Network hosts regular career networking events and a global tech conference for members to connect with like-minded professionals and learn about job opportunities at leading companies that value diversity.\n\nWomenTech Network’s mission is to empower women in tech through leadership development, professional growth, mentorship, and networking events. WomenTech Network is inspiring women to make a difference by building impactful and inclusive technology while introducing them to like-minded people, inspiring speakers, and opportunities at leading companies that aim to create diverse teams and a culture of belonging.",
+        "link": {
+          "label": "Visit WomenTech Network",
+          "uri": "https://www.womentech.net/"
+        }
+      }
+    ]
+  }
+}
diff --git a/src/test/java/com/wcc/platform/controller/AboutControllerTest.java b/src/test/java/com/wcc/platform/controller/AboutControllerTest.java
index 859bfb487..6eae54f7c 100644
--- a/src/test/java/com/wcc/platform/controller/AboutControllerTest.java
+++ b/src/test/java/com/wcc/platform/controller/AboutControllerTest.java
@@ -4,12 +4,14 @@
 import static com.wcc.platform.domain.cms.PageType.CELEBRATE_HER;
 import static com.wcc.platform.domain.cms.PageType.CODE_OF_CONDUCT;
 import static com.wcc.platform.domain.cms.PageType.COLLABORATOR;
+import static com.wcc.platform.domain.cms.PageType.PARTNERS;
 import static com.wcc.platform.factories.SetupFactories.DEFAULT_CURRENT_PAGE;
 import static com.wcc.platform.factories.SetupFactories.DEFAULT_PAGE_SIZE;
 import static com.wcc.platform.factories.SetupFactories.createAboutUsPageTest;
 import static com.wcc.platform.factories.SetupFactories.createCelebrateHerPageTest;
 import static com.wcc.platform.factories.SetupFactories.createCodeOfConductPageTest;
 import static com.wcc.platform.factories.SetupFactories.createCollaboratorPageTest;
+import static com.wcc.platform.factories.SetupFactories.createPartnersPageTest;
 import static org.hamcrest.Matchers.is;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.Mockito.when;
@@ -42,6 +44,7 @@ class AboutControllerTest {
   private static final String API_ABOUT_US = "/api/cms/v1/about";
   private static final String API_COLLABORATORS = "/api/cms/v1/collaborators";
   private static final String API_CELEBRATEHER = "/api/cms/v1/celebrateHer";
+  private static final String API_PARTNERS = "/api/cms/v1/partners";
   private static final String PAGINATION_COLLABORATORS =
       "?currentPage=" + DEFAULT_CURRENT_PAGE + "&pageSize=" + DEFAULT_PAGE_SIZE;
 
@@ -212,4 +215,42 @@ void testCelebrateHerOkResponse() throws Exception {
         .andExpect(status().isOk())
         .andExpect(content().json(expectedJson));
   }
+
+  @Test
+  void testPartnersInternalError() throws Exception {
+    var internalError = new PlatformInternalException("internal Json", new RuntimeException());
+    when(service.getPartners()).thenThrow(internalError);
+
+    mockMvc
+        .perform(MockMvcRequestFactory.getRequest(API_PARTNERS).contentType(APPLICATION_JSON))
+        .andExpect(status().isInternalServerError())
+        .andExpect(jsonPath("$.status", is(500)))
+        .andExpect(jsonPath("$.message", is("internal Json")))
+        .andExpect(jsonPath("$.details", is("uri=/api/cms/v1/partners")));
+  }
+
+  @Test
+  void testPartnersNotFound() throws Exception {
+    when(service.getPartners()).thenThrow(new ContentNotFoundException("Not Found Exception"));
+
+    mockMvc
+        .perform(MockMvcRequestFactory.getRequest(API_PARTNERS).contentType(APPLICATION_JSON))
+        .andExpect(status().isNotFound())
+        .andExpect(jsonPath("$.status", is(404)))
+        .andExpect(jsonPath("$.message", is("Not Found Exception")))
+        .andExpect(jsonPath("$.details", is("uri=/api/cms/v1/partners")));
+  }
+
+  @Test
+  void testPartnersOkResponse() throws Exception {
+    var fileName = PARTNERS.getFileName();
+    var expectedJson = FileUtil.readFileAsString(fileName);
+
+    when(service.getPartners()).thenReturn(createPartnersPageTest(fileName));
+
+    mockMvc
+        .perform(MockMvcRequestFactory.getRequest(API_PARTNERS).contentType(APPLICATION_JSON))
+        .andExpect(status().isOk())
+        .andExpect(content().json(expectedJson));
+  }
 }
diff --git a/src/test/java/com/wcc/platform/factories/SetupFactories.java b/src/test/java/com/wcc/platform/factories/SetupFactories.java
index e980e948e..04b30987f 100644
--- a/src/test/java/com/wcc/platform/factories/SetupFactories.java
+++ b/src/test/java/com/wcc/platform/factories/SetupFactories.java
@@ -30,12 +30,14 @@
 import com.wcc.platform.domain.cms.pages.aboutus.CelebrateHerPage;
 import com.wcc.platform.domain.cms.pages.aboutus.CodeOfConductPage;
 import com.wcc.platform.domain.platform.AboutHer;
+import com.wcc.platform.domain.cms.pages.aboutus.PartnersPage;
 import com.wcc.platform.domain.cms.pages.programme.ProgrammeItem;
 import com.wcc.platform.domain.platform.Event;
 import com.wcc.platform.domain.platform.LeadershipMember;
 import com.wcc.platform.domain.platform.Member;
 import com.wcc.platform.domain.platform.MemberDto;
 import com.wcc.platform.domain.platform.MemberType;
+import com.wcc.platform.domain.platform.Partner;
 import com.wcc.platform.domain.platform.ProgramType;
 import com.wcc.platform.domain.platform.SocialNetwork;
 import com.wcc.platform.domain.platform.SocialNetworkType;
@@ -61,6 +63,11 @@ public static Contact createContactTest() {
         List.of(new SocialNetwork(SocialNetworkType.EMAIL, "test@test.com")));
   }
 
+  /**
+   * Factory test for TeamPage.
+   *
+   * @return TeamPage object.
+   */
   public static TeamPage createTeamPageTest() {
     final String pageId = PageType.TEAM.getId();
     return new TeamPage(
@@ -103,6 +110,37 @@ public static CollaboratorPage createCollaboratorPageTest(final String fileName)
     }
   }
 
+  /**
+   * Factory test for PartnersPage.
+   *
+   * @return PartnersPage object.
+   */
+  public static PartnersPage createPartnersPageTest() {
+    final String pageId = PageType.PARTNERS.getId();
+
+    return new PartnersPage(
+        pageId,
+        createNoImageHeroSectionTest(),
+        createListSectionTest(),
+        createContactTest(),
+        createListSectionPartnerTest());
+  }
+
+  /**
+   * Factory test for PartnersPage.
+   *
+   * @param fileName json resource file.
+   * @return PartnersPage object.
+   */
+  public static PartnersPage createPartnersPageTest(final String fileName) {
+    try {
+      String content = FileUtil.readFileAsString(fileName);
+      return OBJECT_MAPPER.readValue(content, PartnersPage.class);
+    } catch (JsonProcessingException e) {
+      return createPartnersPageTest();
+    }
+  }
+
   /** Code of conduct factory for testing. */
   public static CodeOfConductPage createCodeOfConductPageTest() {
     final String pageId = PageType.CODE_OF_CONDUCT.getId();
@@ -197,6 +235,16 @@ public static ListSection<ProgrammeItem> createListSectionProgrammeItemTest() {
                 ProgramType.WRITING_CLUB, CmsIcon.CALENDAR)));
   }
 
+  /** Factory test for ListSection for Partner type. */
+  public static ListSection<Partner> createListSectionPartnerTest() {
+    return new ListSection<>(
+        "Meet our partners",
+        "Description of partners",
+        null,
+        List.of(
+            createPartnerTest(), createPartnerTest(), createPartnerTest(), createPartnerTest()));
+  }
+
   /** Factory test. */
   public static Member createMemberTest(final MemberType type) {
     return Member.builder()
@@ -284,6 +332,19 @@ public static Member createCollaboratorMemberTest(final MemberType type) {
         .build();
   }
 
+  /**
+   * Factory test for Partner object.
+   *
+   * @return Partner object.
+   */
+  public static Partner createPartnerTest() {
+    return new Partner(
+        List.of(createImageTest(ImageType.DESKTOP)),
+        "Partner",
+        "Partner description",
+        createLinkTest());
+  }
+
   public static Image createImageTest(final ImageType type) {
     return new Image(type + ".png", "alt image" + type, type);
   }
diff --git a/src/test/java/com/wcc/platform/integrationtests/CmsServiceIntegrationTest.java b/src/test/java/com/wcc/platform/integrationtests/CmsServiceIntegrationTest.java
index 4ead76f4f..eb775d084 100644
--- a/src/test/java/com/wcc/platform/integrationtests/CmsServiceIntegrationTest.java
+++ b/src/test/java/com/wcc/platform/integrationtests/CmsServiceIntegrationTest.java
@@ -6,6 +6,7 @@
 import static com.wcc.platform.domain.cms.PageType.COLLABORATOR;
 import static com.wcc.platform.domain.cms.PageType.FOOTER;
 import static com.wcc.platform.domain.cms.PageType.LANDING_PAGE;
+import static com.wcc.platform.domain.cms.PageType.PARTNERS;
 import static com.wcc.platform.domain.cms.PageType.TEAM;
 import static com.wcc.platform.factories.SetupFactories.DEFAULT_CURRENT_PAGE;
 import static com.wcc.platform.factories.SetupFactories.DEFAULT_PAGE_SIZE;
@@ -15,6 +16,7 @@
 import static com.wcc.platform.factories.SetupFactories.createCollaboratorPageTest;
 import static com.wcc.platform.factories.SetupFactories.createFooterTest;
 import static com.wcc.platform.factories.SetupFactories.createLandingPageTest;
+import static com.wcc.platform.factories.SetupFactories.createPartnersPageTest;
 import static com.wcc.platform.factories.SetupFactories.createTeamPageTest;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -48,6 +50,8 @@ void deletePages() {
     pageRepository.deleteById(ABOUT_US.getId());
     pageRepository.deleteById(COLLABORATOR.getId());
     pageRepository.deleteById(LANDING_PAGE.getId());
+    pageRepository.deleteById(CODE_OF_CONDUCT.getId());
+    pageRepository.deleteById(PARTNERS.getId());
   }
 
   @Test
@@ -127,17 +131,19 @@ void testGetAboutUsPage() {
   }
 
   @Test
+  @SuppressWarnings("unchecked")
   void testGetCelebrateHerPage() {
     var celebrateHerPage = createCelebrateHerPageTest(CELEBRATE_HER.getFileName());
     pageRepository.create(objectMapper.convertValue(celebrateHerPage, Map.class));
     var result = service.getCelebrateHer();
-    // TODO to investigate why heroSection test doesn't pass for CelebrateHerPage meanwhile pass for the other pages
-    //assertEquals(celebrateHerPage.heroSection(), result.heroSection());
+
+    assertEquals(celebrateHerPage.heroSection(), result.heroSection());
     assertEquals(celebrateHerPage.section(), result.section());
     assertEquals(celebrateHerPage.items(), result.items());
   }
-  
+
   @SuppressWarnings("unchecked")
+  @Test
   void testGetLandingPage() {
     var landingPage = createLandingPageTest(LANDING_PAGE.getFileName());
     pageRepository.create(objectMapper.convertValue(landingPage, Map.class));
@@ -152,4 +158,41 @@ void testGetLandingPage() {
         landingPage.getFeedbackSection().feedbacks().size(),
         result.getFeedbackSection().feedbacks().size());
   }
+
+  @Test
+  @SuppressWarnings("unchecked")
+  void testGetPartnersPage() {
+    var partnersPage = createPartnersPageTest(PARTNERS.getFileName());
+    pageRepository.create(objectMapper.convertValue(partnersPage, Map.class));
+
+    var result = service.getPartners();
+
+    assertEquals(partnersPage, result);
+
+    // Assert hero section
+    assertEquals("WCC Partners", result.heroSection().title());
+
+    // Assert intro section
+    assertEquals(4, result.introSection().items().size());
+    assertEquals(
+        "Align with our mission to break barriers and advocate for gender equality in tech.",
+        result.introSection().items().getFirst());
+
+    // Assert contact
+    assertEquals("Become a WCC Partner", result.contact().title());
+    assertEquals("london@womencodingcommunity.com", result.contact().links().getFirst().link());
+    assertEquals("email", result.contact().links().getFirst().type().name().toLowerCase());
+
+    // Assert partner
+    assertEquals(4, result.partners().items().size());
+    assertEquals(
+        "https://drive.google.com/surrealdb-desktop-logo.png",
+        result.partners().items().getFirst().getImages().getFirst().path());
+    assertEquals("SurrealDB", result.partners().items().getFirst().getName());
+    assertEquals(
+        "SurrealDB is an innovative, multi-model, cloud-ready database, suitable"
+            + " for modern and traditional applications.",
+        result.partners().items().getFirst().getDescription());
+    assertEquals("https://surrealdb.com/", result.partners().items().getFirst().getLink().uri());
+  }
 }
diff --git a/src/test/java/com/wcc/platform/service/CmsServiceTest.java b/src/test/java/com/wcc/platform/service/CmsServiceTest.java
index e59e3eb6e..0356b9229 100644
--- a/src/test/java/com/wcc/platform/service/CmsServiceTest.java
+++ b/src/test/java/com/wcc/platform/service/CmsServiceTest.java
@@ -17,6 +17,7 @@
 import com.wcc.platform.domain.cms.pages.aboutus.AboutUsPage;
 import com.wcc.platform.domain.cms.pages.aboutus.CelebrateHerPage;
 import com.wcc.platform.domain.cms.pages.aboutus.CodeOfConductPage;
+import com.wcc.platform.domain.cms.pages.aboutus.PartnersPage;
 import com.wcc.platform.domain.exceptions.ContentNotFoundException;
 import com.wcc.platform.domain.exceptions.PlatformInternalException;
 import com.wcc.platform.factories.SetupFactories;
@@ -95,6 +96,26 @@ void whenGetCollaboratorInDatabase() {
     assertEquals(collaboratorPage, response);
   }
 
+  @Test
+  void whenGetPartnersNotInDatabase() {
+    var exception = assertThrows(ContentNotFoundException.class, service::getPartners);
+
+    assertEquals("Content of Page PARTNERS not found", exception.getMessage());
+  }
+
+  @Test
+  void whenGetPartnersInDatabase() {
+    var partnersPage = SetupFactories.createPartnersPageTest();
+    var mapPage = new ObjectMapper().convertValue(partnersPage, Map.class);
+
+    when(pageRepository.findById(PageType.PARTNERS.getId())).thenReturn(Optional.of(mapPage));
+    when(objectMapper.convertValue(anyMap(), eq(PartnersPage.class))).thenReturn(partnersPage);
+
+    var response = service.getPartners();
+
+    assertEquals(partnersPage, response);
+  }
+
   @Test
   void whenGetCodeOfConductNotInDatabase() {
     var exception = assertThrows(ContentNotFoundException.class, service::getCodeOfConduct);
diff --git a/src/test/resources/celebrateHerPage.json b/src/test/resources/celebrateHerPage.json
new file mode 100644
index 000000000..fce1685b8
--- /dev/null
+++ b/src/test/resources/celebrateHerPage.json
@@ -0,0 +1,45 @@
+{
+  "id": "page:CELEBRATE_HER",
+  "heroSection": {
+    "title": "Celebrate Her",
+    "subtitle": "",
+    "images": [
+      {
+        "path": "https://drive.google.com/uc?id=1efbBcw8yaASbSx3pgqcj06tIN-P2Wf55&export=download",
+        "alt": "There is a group of women showing WCC logo",
+        "type": "desktop"
+      }
+    ]
+  },
+  "section": {
+    "title": "title defaultPage",
+    "subtitle": "subtitle defaultPage",
+    "description": "desc defaultPage",
+    "link": {
+      "title": "link_title",
+      "label": "link_label",
+      "uri": "link_uri"
+    },
+    "images": [
+      {
+        "path": "MOBILE.png",
+        "alt": "alt imageMOBILE",
+        "type": "mobile"
+      }
+    ]
+  },
+  "items": [
+    {
+      "listOfName": [
+        "Liliia",
+        "Anna"
+      ],
+      "description": "Celebrate her for first commit to wcc backend.",
+      "link": {
+        "title": "linkedIn",
+        "label": "linkedIn",
+        "uri": "https://linkedIn.com/lilrafil"
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/src/test/resources/partnersPage.json b/src/test/resources/partnersPage.json
new file mode 100644
index 000000000..e1244d7e8
--- /dev/null
+++ b/src/test/resources/partnersPage.json
@@ -0,0 +1,114 @@
+{
+  "id": "page:PARTNERS",
+  "heroSection": {
+    "title": "WCC Partners"
+  },
+  "introSection": {
+    "title": "Why partner with us?",
+    "items": [
+      "Align with our mission to break barriers and advocate for gender equality in tech.",
+      "Engage in sponsorships, event collaborations, mentorship programs, and other programs.",
+      "Connect with and mentor talented women in tech.",
+      "Support initiatives that advocate for women’s rights, education, and professional development in technology."
+    ]
+  },
+  "contact": {
+    "title": "Become a WCC Partner",
+    "links": [
+      {
+        "type": "email",
+        "link": "london@womencodingcommunity.com"
+      },
+      {
+        "type": "slack",
+        "link": "https://shortlink_to_slack.com/"
+      }
+    ]
+  },
+  "partners": {
+    "title": "Meet Our Partners",
+    "description": "Our partners are committed to supporting our mission and empowering",
+    "items": [
+      {
+        "images": [
+          {
+            "path": "https://drive.google.com/surrealdb-desktop-logo.png",
+            "alt": "SurrealDB logo",
+            "type": "desktop"
+          },
+          {
+            "path": "https://drive.google.com/surrealdb-mobile-logo.png",
+            "alt": "SurrealDB logo",
+            "type": "mobile"
+          }
+        ],
+        "name": "SurrealDB",
+        "description": "SurrealDB is an innovative, multi-model, cloud-ready database, suitable for modern and traditional applications.",
+        "link": {
+          "label": "Visit SurrealDB",
+          "uri": "https://surrealdb.com/"
+        }
+      },
+      {
+        "images": [
+          {
+            "path": "https://drive.google.com/amazon-desktop-logo.png",
+            "alt": "Amazon logo",
+            "type": "desktop"
+          },
+          {
+            "path": "https://drive.google.com/amazon-mobile-logo.png",
+            "alt": "Amazon logo",
+            "type": "mobile"
+          }
+        ],
+        "name": "Amazon",
+        "description": "Amazon is a global leader in e-commerce, redefining online shopping with its vast product selection, seamless customer experience, and advanced logistics network.",
+        "link": {
+          "label": "Visit Amazon",
+          "uri": "https://www.amazon.com/"
+        }
+      },
+      {
+        "images": [
+          {
+            "path": "jetbrains-desktop-logo.png",
+            "alt": "JetBrains logo",
+            "type": "desktop"
+          },
+          {
+            "path": "jetbrains-mobile-logo.png",
+            "alt": "JetBrains logo",
+            "type": "mobile"
+          }
+        ],
+        "name": "JetBrains",
+        "description": "JetBrains creates intelligent software development tools used by over 11.4 million professionals and 88 Fortune Global Top 100 companies.",
+        "link": {
+          "label": "Visit JetBrains",
+          "uri": "https://www.jetbrains.com/"
+        }
+      },
+      {
+        "images": [
+          {
+            "path": "https://drive.google.com/devoxx-uk-desktop-logo.png",
+            "alt": "Devoxx UK logo",
+            "type": "desktop"
+          },
+          {
+            "path": "https://drive.google.com/devoxx-uk-mobile-logo.png",
+            "alt": "Devoxx UK logo",
+            "type": "mobile"
+          }
+        ],
+        "name": "Devoxx UK",
+        "description": "Provide a first class tech conference where passionate developers can network, hack, get inspired and learn throughout.",
+        "link": {
+          "label": "Visit Devoxx UK",
+          "uri": "https://www.devoxx.co.uk/"
+        }
+      }
+    ]
+  }
+}


Reviews:
user: login: nverbic
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-05T17:26:20Z
user: login: nverbic
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-05T17:27:45Z
user: login: dricazenck
state: APPROVED
author_association: COLLABORATOR
submitted_at: 2025-03-05T20:03:40Z
user: login: nverbic
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-06T10:40:31Z

Review comments:
diff_hunk: @@ -152,4 +156,18 @@ void testGetLandingPage() {
         landingPage.getFeedbackSection().feedbacks().size(),
         result.getFeedbackSection().feedbacks().size());
   }
+
+  @Test
+  @SuppressWarnings("unchecked")
+  void testGetPartnersPage() {
+    var partnersPage = createPartnersPageTest(PARTNERS.getFileName());
+    pageRepository.create(objectMapper.convertValue(partnersPage, Map.class));
+
+    var result = service.getPartners();
+
+    assertEquals(partnersPage, result);
+
+    assertEquals(4, result.introSection().items().size());
path: src/test/java/com/wcc/platform/integrationtests/CmsServiceIntegrationTest.java
user: login: nverbic
body: Is this a good practice, adding the number 4 as the expected length of the items in the test json file? If the number of items is changed in the test file, the test will fail. 
created_at: 2025-03-05T17:26:20Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,143 @@
+{
+  "id": "page:PARTNERS",
+  "heroSection": {
+    "title": "WCC Partners",
+    "customStyle": {
+      "backgroundColour": {
+        "color": "primary",
+        "shade": {
+          "name": "light",
+          "value": 90
+        }
+      }
+    }
+  },
+  "introSection": {
+    "title": "Why partner with us?",
+    "items": [
+      "Align with our mission to break barriers and advocate for gender equality in tech.",
+      "Engage in sponsorships, event collaborations, mentorship programs, and other programs.",
+      "Connect with and mentor talented women in tech.",
+      "Support initiatives that advocate for women’s rights, education, and professional development in technology."
+    ]
+  },
+  "contact": {
+    "title": "Become a WCC Partner",
+    "links": [
+      {
+        "type": "email",
+        "link": "london@womencodingcommunity.com"
+      },
+      {
+        "type": "slack",
+        "link": "https://join.slack.com/t/womencodingcommunity/shared_invite/zt-2hpjwpx7l-rgceYBIWp6pCiwc0hVsX8A"
+      }
+    ]
+  },
+  "partners": {
+    "title": "Meet Our Partners",
+    "description": "Our partners are committed to supporting our mission and empowering",
+    "items": [
+      {
+        "images": [
+          {
+            "path": "https://drive.google.com/surrealdb-desktop-logo.png",
+            "alt": "SurrealDB logo",
+            "type": "desktop"
+          },
+          {
+            "path": "https://drive.google.com/surrealdb-mobile-logo.png",
+            "alt": "SurrealDB logo",
+            "type": "mobile"
+          }
+        ],
+        "name": "SurrealDB",
+        "description": "SurrealDB is an innovative, multi-model, cloud-ready database, suitable for modern and traditional applications. Its versatility, and focus on developer experience, along with the ability for deployment on cloud, on-premise, embedded, and in edge computing environments, allows developers and organizations to meet the needs of their applications, without needing to worry about scalability or keeping data consistent across multiple different database platforms.\n\nSurrealDB have also established the Women in Rust community, a meetup group where women can connect, collaborate, and grow their skills in Rust.",
+        "link": {
+          "label": "Visit SurrealDB",
+          "uri": "https://surrealdb.com/"
+        }
+      },
+      {
+        "images": [
+          {
+            "path": "https://drive.google.com/amazon-desktop-logo.png",
+            "alt": "Amazon logo",
+            "type": "desktop"
+          },
+          {
+            "path": "https://drive.google.com/amazon-mobile-logo.png",
+            "alt": "Amazon logo",
+            "type": "mobile"
+          }
+        ],
+        "name": "Amazon",
+        "description": "Amazon is a global leader in e-commerce, redefining online shopping with its vast product selection, seamless customer experience, and advanced logistics network. With innovations like Amazon Prime, one-click purchasing, and a commitment to fast and reliable delivery, Amazon has transformed the way people shop worldwide.\n\nBeyond e-commerce, Amazon supports education and career growth through initiatives like Amazon Future Engineer, which provides opportunities for underrepresented groups in technology.",
+        "link": {
+          "label": "Visit Amazon",
+          "uri": "https://www.amazon.com/"
+        }
+      },
+      {
+        "images": [
+          {
+            "path": "jetbrains-desktop-logo.png",
+            "alt": "JetBrains logo",
+            "type": "desktop"
+          },
+          {
+            "path": "jetbrains-mobile-logo.png",
+            "alt": "JetBrains logo",
+            "type": "mobile"
+          }
+        ],
+        "name": "JetBrains",
+        "description": "JetBrains creates intelligent software development tools used by over 11.4 million professionals and 88 Fortune Global Top 100 companies. Its lineup of more than 30 products includes IDEs for most programming languages and technologies, such as IntelliJ IDEA, PyCharm, and others, as well as products for team collaboration, like YouTrack and TeamCity.\n\nJetBrains is also known for creating the Kotlin programming language, a cross-platform language used by more than 5 million developers worldwide yearly and recommended by Google as the preferred language for Android development.",
+        "link": {
+          "label": "Visit JetBrains",
+          "uri": "https://www.jetbrains.com/"
+        }
+      },
+      {
+        "images": [
+          {
+            "path": "https://drive.google.com/devoxx-uk-desktop-logo.png",
+            "alt": "Devoxx UK logo",
+            "type": "desktop"
+          },
+          {
+            "path": "https://drive.google.com/devoxx-uk-mobile-logo.png",
+            "alt": "Devoxx UK logo",
+            "type": "mobile"
+          }
+        ],
+        "name": "Devoxx UK",
+        "description": "Provide a first class tech conference where passionate developers can network, hack, get inspired and learn throughout. \n\nDevoxx is a conference by developers, for developers. It is offered at an affordable price so that every developer can enjoy the experience. \n\nDevoxx UK is a community effort. The team is made up of senior developers, user group leaders and passionate experts",
+        "link": {
+          "label": "Visit Devoxx UK",
+          "uri": "https://www.devoxx.co.uk/"
+        }
+      },
+      {
+        "images": [
+          {
+            "path": "https://drive.google.com/womentech-network-desktop-logo.png",
+            "alt": "WomenTech Network logo",
+            "type": "desktop"
+          },
+          {
+            "path": "https://drive.google.com/womentech-network-mobile-logo.png",
+            "alt": "WomenTech Network logo",
+            "type": "mobile"
+          }
+        ],
+        "name": "WomenTech Network",
path: src/main/resources/partnersPage.json
user: login: nverbic
body: WomenTech and Devoxx -> Descriptions taken from the website (need the official text for the Partners page).
created_at: 2025-03-05T17:27:45Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,143 @@
+{
+  "id": "page:PARTNERS",
+  "heroSection": {
+    "title": "WCC Partners",
+    "customStyle": {
+      "backgroundColour": {
+        "color": "primary",
+        "shade": {
+          "name": "light",
+          "value": 90
+        }
+      }
+    }
+  },
+  "introSection": {
+    "title": "Why partner with us?",
+    "items": [
+      "Align with our mission to break barriers and advocate for gender equality in tech.",
+      "Engage in sponsorships, event collaborations, mentorship programs, and other programs.",
+      "Connect with and mentor talented women in tech.",
+      "Support initiatives that advocate for women’s rights, education, and professional development in technology."
+    ]
+  },
+  "contact": {
+    "title": "Become a WCC Partner",
+    "links": [
+      {
+        "type": "email",
+        "link": "london@womencodingcommunity.com"
+      },
+      {
+        "type": "slack",
+        "link": "https://join.slack.com/t/womencodingcommunity/shared_invite/zt-2hpjwpx7l-rgceYBIWp6pCiwc0hVsX8A"
+      }
+    ]
+  },
+  "partners": {
+    "title": "Meet Our Partners",
+    "description": "Our partners are committed to supporting our mission and empowering",
+    "items": [
+      {
+        "images": [
+          {
+            "path": "https://drive.google.com/surrealdb-desktop-logo.png",
path: src/main/resources/partnersPage.json
user: login: dricazenck
body: This image need to be uploaded to our Google drive account and with a valid link at least for now has to be done manually. But it is important for the frontend to have a valid image. 
created_at: 2025-03-05T19:57:48Z
author_association: COLLABORATOR
diff_hunk: @@ -0,0 +1,143 @@
+{
+  "id": "page:PARTNERS",
+  "heroSection": {
+    "title": "WCC Partners",
+    "customStyle": {
+      "backgroundColour": {
+        "color": "primary",
+        "shade": {
+          "name": "light",
+          "value": 90
+        }
+      }
+    }
+  },
+  "introSection": {
+    "title": "Why partner with us?",
+    "items": [
+      "Align with our mission to break barriers and advocate for gender equality in tech.",
+      "Engage in sponsorships, event collaborations, mentorship programs, and other programs.",
+      "Connect with and mentor talented women in tech.",
+      "Support initiatives that advocate for women’s rights, education, and professional development in technology."
+    ]
+  },
+  "contact": {
+    "title": "Become a WCC Partner",
+    "links": [
+      {
+        "type": "email",
+        "link": "london@womencodingcommunity.com"
+      },
+      {
+        "type": "slack",
+        "link": "https://join.slack.com/t/womencodingcommunity/shared_invite/zt-2hpjwpx7l-rgceYBIWp6pCiwc0hVsX8A"
+      }
+    ]
+  },
+  "partners": {
+    "title": "Meet Our Partners",
+    "description": "Our partners are committed to supporting our mission and empowering",
+    "items": [
+      {
+        "images": [
+          {
+            "path": "https://drive.google.com/surrealdb-desktop-logo.png",
+            "alt": "SurrealDB logo",
+            "type": "desktop"
+          },
+          {
+            "path": "https://drive.google.com/surrealdb-mobile-logo.png",
+            "alt": "SurrealDB logo",
+            "type": "mobile"
+          }
+        ],
+        "name": "SurrealDB",
+        "description": "SurrealDB is an innovative, multi-model, cloud-ready database, suitable for modern and traditional applications. Its versatility, and focus on developer experience, along with the ability for deployment on cloud, on-premise, embedded, and in edge computing environments, allows developers and organizations to meet the needs of their applications, without needing to worry about scalability or keeping data consistent across multiple different database platforms.\n\nSurrealDB have also established the Women in Rust community, a meetup group where women can connect, collaborate, and grow their skills in Rust.",
+        "link": {
+          "label": "Visit SurrealDB",
+          "uri": "https://surrealdb.com/"
+        }
+      },
+      {
+        "images": [
+          {
+            "path": "https://drive.google.com/amazon-desktop-logo.png",
path: src/main/resources/partnersPage.json
user: login: dricazenck
body: Same goes to all other images
created_at: 2025-03-05T19:58:23Z
author_association: COLLABORATOR
diff_hunk: @@ -152,4 +156,18 @@ void testGetLandingPage() {
         landingPage.getFeedbackSection().feedbacks().size(),
         result.getFeedbackSection().feedbacks().size());
   }
+
+  @Test
+  @SuppressWarnings("unchecked")
+  void testGetPartnersPage() {
+    var partnersPage = createPartnersPageTest(PARTNERS.getFileName());
+    pageRepository.create(objectMapper.convertValue(partnersPage, Map.class));
+
+    var result = service.getPartners();
+
+    assertEquals(partnersPage, result);
+
+    assertEquals(4, result.introSection().items().size());
path: src/test/java/com/wcc/platform/integrationtests/CmsServiceIntegrationTest.java
user: login: dricazenck
body: This is stub test and we are injecting the amount of partners and it is expected to be the exactly number you are including in the mock data. So it is complete fine, also you could check the full data, instead only the size, because you would be covering more edge cases
created_at: 2025-03-05T20:01:49Z
author_association: COLLABORATOR
diff_hunk: @@ -0,0 +1,114 @@
+{
+  "id": "page:PARTNERS",
path: src/test/resources/partnersPage.json
user: login: dricazenck
body: Remember this file could be simples and don't need to be exactly the same as it is in the source folder. It is to cover the conversion and the database and the get for example 
created_at: 2025-03-05T20:03:20Z
author_association: COLLABORATOR
diff_hunk: @@ -0,0 +1,143 @@
+{
+  "id": "page:PARTNERS",
+  "heroSection": {
+    "title": "WCC Partners",
+    "customStyle": {
+      "backgroundColour": {
+        "color": "primary",
+        "shade": {
+          "name": "light",
+          "value": 90
+        }
+      }
+    }
+  },
+  "introSection": {
+    "title": "Why partner with us?",
+    "items": [
+      "Align with our mission to break barriers and advocate for gender equality in tech.",
+      "Engage in sponsorships, event collaborations, mentorship programs, and other programs.",
+      "Connect with and mentor talented women in tech.",
+      "Support initiatives that advocate for women’s rights, education, and professional development in technology."
+    ]
+  },
+  "contact": {
+    "title": "Become a WCC Partner",
+    "links": [
+      {
+        "type": "email",
+        "link": "london@womencodingcommunity.com"
+      },
+      {
+        "type": "slack",
+        "link": "https://join.slack.com/t/womencodingcommunity/shared_invite/zt-2hpjwpx7l-rgceYBIWp6pCiwc0hVsX8A"
+      }
+    ]
+  },
+  "partners": {
+    "title": "Meet Our Partners",
+    "description": "Our partners are committed to supporting our mission and empowering",
+    "items": [
+      {
+        "images": [
+          {
+            "path": "https://drive.google.com/surrealdb-desktop-logo.png",
+            "alt": "SurrealDB logo",
+            "type": "desktop"
+          },
+          {
+            "path": "https://drive.google.com/surrealdb-mobile-logo.png",
+            "alt": "SurrealDB logo",
+            "type": "mobile"
+          }
+        ],
+        "name": "SurrealDB",
+        "description": "SurrealDB is an innovative, multi-model, cloud-ready database, suitable for modern and traditional applications. Its versatility, and focus on developer experience, along with the ability for deployment on cloud, on-premise, embedded, and in edge computing environments, allows developers and organizations to meet the needs of their applications, without needing to worry about scalability or keeping data consistent across multiple different database platforms.\n\nSurrealDB have also established the Women in Rust community, a meetup group where women can connect, collaborate, and grow their skills in Rust.",
+        "link": {
+          "label": "Visit SurrealDB",
+          "uri": "https://surrealdb.com/"
+        }
+      },
+      {
+        "images": [
+          {
+            "path": "https://drive.google.com/amazon-desktop-logo.png",
+            "alt": "Amazon logo",
+            "type": "desktop"
+          },
+          {
+            "path": "https://drive.google.com/amazon-mobile-logo.png",
+            "alt": "Amazon logo",
+            "type": "mobile"
+          }
+        ],
+        "name": "Amazon",
+        "description": "Amazon is a global leader in e-commerce, redefining online shopping with its vast product selection, seamless customer experience, and advanced logistics network. With innovations like Amazon Prime, one-click purchasing, and a commitment to fast and reliable delivery, Amazon has transformed the way people shop worldwide.\n\nBeyond e-commerce, Amazon supports education and career growth through initiatives like Amazon Future Engineer, which provides opportunities for underrepresented groups in technology.",
+        "link": {
+          "label": "Visit Amazon",
+          "uri": "https://www.amazon.com/"
+        }
+      },
+      {
+        "images": [
+          {
+            "path": "jetbrains-desktop-logo.png",
+            "alt": "JetBrains logo",
+            "type": "desktop"
+          },
+          {
+            "path": "jetbrains-mobile-logo.png",
+            "alt": "JetBrains logo",
+            "type": "mobile"
+          }
+        ],
+        "name": "JetBrains",
+        "description": "JetBrains creates intelligent software development tools used by over 11.4 million professionals and 88 Fortune Global Top 100 companies. Its lineup of more than 30 products includes IDEs for most programming languages and technologies, such as IntelliJ IDEA, PyCharm, and others, as well as products for team collaboration, like YouTrack and TeamCity.\n\nJetBrains is also known for creating the Kotlin programming language, a cross-platform language used by more than 5 million developers worldwide yearly and recommended by Google as the preferred language for Android development.",
+        "link": {
+          "label": "Visit JetBrains",
+          "uri": "https://www.jetbrains.com/"
+        }
+      },
+      {
+        "images": [
+          {
+            "path": "https://drive.google.com/devoxx-uk-desktop-logo.png",
+            "alt": "Devoxx UK logo",
+            "type": "desktop"
+          },
+          {
+            "path": "https://drive.google.com/devoxx-uk-mobile-logo.png",
+            "alt": "Devoxx UK logo",
+            "type": "mobile"
+          }
+        ],
+        "name": "Devoxx UK",
+        "description": "Provide a first class tech conference where passionate developers can network, hack, get inspired and learn throughout. \n\nDevoxx is a conference by developers, for developers. It is offered at an affordable price so that every developer can enjoy the experience. \n\nDevoxx UK is a community effort. The team is made up of senior developers, user group leaders and passionate experts",
+        "link": {
+          "label": "Visit Devoxx UK",
+          "uri": "https://www.devoxx.co.uk/"
+        }
+      },
+      {
+        "images": [
+          {
+            "path": "https://drive.google.com/womentech-network-desktop-logo.png",
+            "alt": "WomenTech Network logo",
+            "type": "desktop"
+          },
+          {
+            "path": "https://drive.google.com/womentech-network-mobile-logo.png",
+            "alt": "WomenTech Network logo",
+            "type": "mobile"
+          }
+        ],
+        "name": "WomenTech Network",
path: src/main/resources/partnersPage.json
user: login: nverbic
body: @dricazenck  Opened new issue for update of the description. 
https://github.com/Women-Coding-Community/wcc-backend/issues/312

created_at: 2025-03-06T10:40:31Z
author_association: CONTRIBUTOR

PR comments:
user: login: sonarqubecloud[bot]
created_at: 2025-03-06T10:20:37Z
body: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=Women-Coding-Community_wcc-backend&pullRequest=310) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=Women-Coding-Community_wcc-backend&pullRequest=310&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/project/issues?id=Women-Coding-Community_wcc-backend&pullRequest=310&issueStatuses=ACCEPTED)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=Women-Coding-Community_wcc-backend&pullRequest=310&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=Women-Coding-Community_wcc-backend&pullRequest=310&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=Women-Coding-Community_wcc-backend&pullRequest=310&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=Women-Coding-Community_wcc-backend&pullRequest=310)


author_association: NONE