diff --git a/src/components/MainMenu/MainMenuSideBar.tsx b/src/components/MainMenu/MainMenuSideBar.tsx
index 77a26eca4a0af398e68dac4f45c15442d66153c3..23f2928b325fbe52b9a6ee3550d203e0a178b30c 100644
--- a/src/components/MainMenu/MainMenuSideBar.tsx
+++ b/src/components/MainMenu/MainMenuSideBar.tsx
@@ -178,13 +178,17 @@ export default function MainMenuSideBar(props: MainMenuSideBarProps) {
   }; */
 
   //const [selectedIndex, setSelectedIndex] = React.useState(1);
-
+  function handler(ev:React.MouseEvent<HTMLDivElement, MouseEvent>) {
+    console.log('CTRL pressed during click:', ev.ctrlKey);
+  }
   const handleListItemClick = (
     event: React.MouseEvent<HTMLDivElement, MouseEvent>,
     index: number,
     onClick: Function | undefined,
     withSubMenu?: boolean
   ) => {
+    handler(event);
+    
     //setSelectedIndex(index);
     console.log("newIndex",index, withSubMenu);
     if (!withSubMenu) {
diff --git a/src/components/demo-components/demo-server-side/CodeDemoServerSideExpress.tsx b/src/components/demo-components/demo-server-side/CodeDemoServerSideExpress.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..440d97787e9845229b6f2244704efe52ec78fef3
--- /dev/null
+++ b/src/components/demo-components/demo-server-side/CodeDemoServerSideExpress.tsx
@@ -0,0 +1,58 @@
+import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
+const CodeDemoServerSideExpress = ({ splittedOnly = false }) => {
+  return (
+    <ShowDemoCode
+      splittedOnly={splittedOnly}
+      codeCompleteJS={completeCodeJS}
+      codeCompleteTS={completeCodeTS}
+      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
+      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
+      codeSplittedJS={splittedCodeJS}
+      codeSplittedTS={splittedCodeTS}
+    />
+  );
+};
+export default CodeDemoServerSideExpress;
+
+const splittedCodeJS = `const express = require("express");
+const fileUpload = require("express-fileupload");
+// ... some code
+app.post("/upload-my-file", async (req, res) => {
+  try {
+    if (!req.files) {
+      res.send({
+        success: false,
+        message: "There was no file found in request",
+        payload: {},
+      });
+    } else {
+      //Use the name of the input field (i.e. "file") to retrieve the uploaded file
+      let file = req.files.file;
+      //Use the mv() method to place the file in upload directory (i.e. "uploads")
+      file.mv("./uploads/" + file.name);
+      //send response
+      res.send({
+        success: true,
+        message: "File was uploaded successfuly",
+        payload: {
+          name: file.name,
+          mimetype: file.mimetype,
+          size: file.size,
+          path: "/files/uploads/",
+          url: "https://my-ftp-server.com/bjYJGFYgjfVGHVb",
+        },
+      });
+    }
+  } catch (err) {
+    res.status(500).send({
+      status: false,
+      message: "Unexpected problem",
+      payload: {},
+    });
+  }
+});`;
+
+const splittedCodeTS = splittedCodeJS;
+const completeCodeJS = ``;
+
+const completeCodeTS = ``;
diff --git a/src/components/demo-components/demo-server-side/CodeDemoServerSideJava.tsx b/src/components/demo-components/demo-server-side/CodeDemoServerSideJava.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..7503537907e5c657de367d458ce8bf8172f03aa5
--- /dev/null
+++ b/src/components/demo-components/demo-server-side/CodeDemoServerSideJava.tsx
@@ -0,0 +1,152 @@
+import ShowDemoCode from "../../show-demo-code/ShowDemoCode";
+const CodeDemoServerSideJava = ({ splittedOnly = false }) => {
+  return (
+    <ShowDemoCode
+      splittedOnly={splittedOnly}
+      codeCompleteJS={completeCodeJS}
+      codeCompleteTS={completeCodeTS}
+      codeSandboxJS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
+      codeSandboxTS="https://codesandbox.io/s/dropzone-ui-basic-3j01v"
+      codeSplittedJS={splittedCodeJS}
+      codeSplittedTS={splittedCodeTS}
+    />
+  );
+};
+export default CodeDemoServerSideJava;
+
+const splittedCodeJS = `// FilesUiResponse.java
+//...imports
+public class FilesUiResponse {
+    Boolean success;
+    String message;
+    Object payload;
+//..more code
+}
+
+// FileUploadController.java
+//...imports
+@CrossOrigin(origins = "*")
+@RestController
+public class FileUploadController {
+    //..more code
+    @PostMapping("/file")
+    public ResponseEntity<FilesUiResponse> uploadFile(
+            @RequestParam("file") MultipartFile multipartFile
+    ) {
+        try {
+            FileItem resultFileItem = FileUploadUtil.saveFileInDir(multipartFile);
+            FilesUiResponse response = new FilesUiResponse(
+                    true,
+                    "Files upladed successfully",
+                    resultFileItem);
+            return new ResponseEntity<>(response, HttpStatus.OK);
+        } catch (IOException ioe) {
+            FilesUiResponse response = new FilesUiResponse(
+                    false,
+                    "Error on upload",
+                    null);
+            System.out.println(ioe.getMessage());
+            return new ResponseEntity<>(response, HttpStatus.INTERNAL_SERVER_ERROR);
+        }
+    }
+    //... more code
+}
+
+// FileUploadUtil.java
+public class FileUploadUtil {
+    public static String UPLOAD_PATH = "Files-Upload";
+
+    public static FileItem saveFileInDir(MultipartFile multipartFile) throws IOException {
+        Path uploadDirectory = Paths.get(UPLOAD_PATH);
+
+        String fileId = createUUID();
+        String fileName = StringUtils.cleanPath(multipartFile.getOriginalFilename());
+
+        String extention = FileUploadUtil.getExtensionByStringHandling(fileName).get();
+
+        String finalFileName = createUUIDfileName(extention);
+        String mimeType = multipartFile.getContentType();
+
+        checkDircectoryIfExists(uploadDirectory);
+        long size = multipartFile.getSize();
+
+
+        System.out.println("fileName: " + fileName);
+        System.out.println("newFIleName: " + finalFileName);
+        System.out.println("extention: " + extention);
+        System.out.println("size: " + size);
+
+        try (InputStream inputStream = multipartFile.getInputStream()) {
+            Path filePath = uploadDirectory.resolve(fileName);
+
+            Files.copy(inputStream, filePath, StandardCopyOption.REPLACE_EXISTING);
+
+            FileItem finalFileItem = new FileItem(
+                    fileId,
+                    finalFileName,
+                    size,
+                    mimeType,
+                    "./UPLOAD_PATH"
+            );
+
+            // add to database here...
+
+            return finalFileItem;
+        } catch (IOException ioe) {
+            throw new IOException("Error on saving uploaded file: " + fileName, ioe);
+        }
+    }
+    public static String createUUID() {
+        UUID uuid = UUID.randomUUID();
+        String fileId = uuid.toString();
+        return fileId;
+    }
+
+    public static String createUUIDfileName(String extention) {
+        return createUUID() + "." + extention;
+    }
+
+    // more code...
+}
+
+// FileItem.java
+// ..imports
+public class FileItem {
+
+    public FileItem() { }
+
+    public FileItem(String idFileItem, String name, long size, String mimeType, String path) {
+        this.idFileItem = idFileItem;
+        this.name = name;
+        this.size=size;
+        this.mimeType = mimeType;
+        this.path = path;
+        this.creationTime = new Date();
+        this.status = true;
+    }
+    @JsonIgnore
+    private String idFileItem;
+
+    private long size;
+
+    @JsonProperty("type")
+    private String mimeType;
+
+    private String name;
+
+    @JsonIgnore
+    private String path;
+
+    private Date creationTime;
+
+    @JsonIgnore
+    private Boolean status;
+
+    //more code...
+}
+`;
+
+const splittedCodeTS = splittedCodeJS;
+const completeCodeJS = ``;
+
+const completeCodeTS = ``;
diff --git a/src/pages/server-side/ServerSidePage.tsx b/src/pages/server-side/ServerSidePage.tsx
index 4e4b410ff887f714db8e20e7611f5e6fd5009b35..4835b853c41953c2da22501bfd9650045a141489 100644
--- a/src/pages/server-side/ServerSidePage.tsx
+++ b/src/pages/server-side/ServerSidePage.tsx
@@ -1,4 +1,7 @@
+import { Paper } from "@mui/material";
 import * as React from "react";
+import CodeDemoServerSideJava from "../../components/demo-components/demo-server-side/CodeDemoServerSideJava";
+import CodeDemoServerSideExpress from "../../components/demo-components/demo-server-side/CodeDemoServerSideExpress";
 import DescParagraph from "../../components/demo-components/desc-paragraph/DescParagraph";
 import SubTitle from "../../components/demo-components/sub-title/SubTitle";
 import MainContentContainer from "../../components/layout-pages/MainContentContainer";
@@ -11,6 +14,7 @@ import AnchorToTab from "../../components/util-components/AnchorToTab";
 import { FileMosaic } from "../../files-ui";
 import expressjslogo from "../../static/serverside/expressjslogo.webp";
 import javalogo from "../../static/serverside/springbootjavalogo.png";
+import { redirect } from "../../utils/redirect";
 const ServerSidePage = () => {
   return (
     <React.Fragment>
@@ -18,66 +22,88 @@ const ServerSidePage = () => {
         <MainContentContainer>
           <MainTitle>Server Side implementations</MainTitle>
           <MainParagraph>
-            Some implementations for handling correctly the uploaded files using
-            Files UI.
+            Some implementations to correctly handle uploaded files using Files
+            UI.
           </MainParagraph>
           <DescParagraph>
-            If you think there should be added more of them or you want to add
-            your own in any other programming language, please contact us.
+            <ul>
+              <li>
+                If you think more server-side samples should be added or would
+                like to contribute by fixing or adding a new server-side sampler
+                in programming languages not yet covered, please contact us.
+              </li>
+            </ul>
           </DescParagraph>
           <section id="expressjs">
             <SubTitle content="Express JS" />
-            <div
+            <Paper
+              variant="outlined"
               style={{
                 display: "flex",
-                flexDirection: "revert",
+                flexDirection: "row",
                 flexWrap: "nowrap",
                 alignItems: "center",
-                justifyContent: "space-between",
+                padding: "25px",
+                justifyContent: "space-evenly",
               }}
             >
+              <FileMosaic
+                {...logoExpress}
+                onClick={() =>
+                  redirect(
+                    "https://github.com/files-ui/files-ui-web-test/tree/master/expressjs"
+                  )
+                }
+                {...logoExpress.extraData}
+                smartImgFit={"center"}
+              />{" "}
               <DescParagraph>
-                The following code is just the main part of a project. Check it
-                up in the following{" "}
+                The following code is just the main part of a project.
+                <br />
+                Check it up in the following{" "}
                 <AnchorToTab href="https://github.com/files-ui/files-ui-web-test/tree/master/expressjs">
                   link
                 </AnchorToTab>
                 .
+
+
+
               </DescParagraph>
-              <FileMosaic
-                {...logoExpress}
-                onClick={() => {
-                  alert("open");
-                }}
-              />
-            </div>
+            </Paper>
+            <CodeDemoServerSideExpress splittedOnly/>
           </section>
           <section id="springboot">
             <SubTitle content="Java - Spring boot" />{" "}
-            <div
+            <Paper
+              variant="outlined"
               style={{
                 display: "flex",
                 flexDirection: "revert",
                 flexWrap: "nowrap",
                 alignItems: "center",
-                justifyContent: "space-between",
+                justifyContent: "space-evenly",
+                padding: "25px",
               }}
             >
+              <FileMosaic
+                {...logoJava}
+                onClick={() =>
+                  redirect(
+                    "https://github.com/files-ui/files-ui-web-test/tree/master/springboot"
+                  )
+                }
+              />{" "}
               <DescParagraph>
-                The following code is just the main part of a project. Check it
-                up in the following{" "}
+                The following code is just the main part of a project.
+                <br />
+                Check it up in the following{" "}
                 <AnchorToTab href="https://github.com/files-ui/files-ui-web-test/tree/master/springboot">
                   link
                 </AnchorToTab>
                 .
               </DescParagraph>
-              <FileMosaic
-                {...logoJava}
-                onClick={() => {
-                  alert("open");
-                }}
-              />
-            </div>
+            </Paper>
+            <CodeDemoServerSideJava splittedOnly/>
           </section>
         </MainContentContainer>
         <RightMenuContainer>
@@ -107,6 +133,10 @@ const logoExpress = {
   //size: 28 * 1024 * 1024,
   type: "image/png",
   imageUrl: expressjslogo,
+  name: "Click me!",
+  extraData: {
+    backgroundBlurImage: false,
+  },
 };
 
 const logoJava = {
@@ -114,4 +144,5 @@ const logoJava = {
   //size: 28 * 1024 * 1024,
   type: "image/png",
   imageUrl: javalogo,
+  name: "Click me!",
 };
diff --git a/src/utils/redirect.js b/src/utils/redirect.js
new file mode 100644
index 0000000000000000000000000000000000000000..ef57dfaaee9c4ac77e6a3eff3392569a52a4035d
--- /dev/null
+++ b/src/utils/redirect.js
@@ -0,0 +1,12 @@
+export const redirect = (to = "") => {
+  console.log("redirectredirect", to);
+  if (to.length === 0) return;
+  const anchor = document.createElement("a");
+  anchor.href = to;
+  anchor.target = "_blank";
+  anchor.rel = "noopener noreferrer";
+  anchor.style.display = "none";
+  document.body.appendChild(anchor);
+  anchor.click();
+  document.body.removeChild(anchor);
+};