From d4097dd5bdc319603254fd62c4b263e810a3ba72 Mon Sep 17 00:00:00 2001
From: khalidnr <121994573+khalidnr@users.noreply.github.com>
Date: Mon, 7 Apr 2025 18:06:59 +0700
Subject: [PATCH 01/21] Add Jenkinsfile

---
 Jenkinsfile | 11 +++++++++++
 1 file changed, 11 insertions(+)
 create mode 100644 Jenkinsfile

diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 000000000..ffa9a908b
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,11 @@
+pipeline {
+    agent any
+
+    stages {
+        stage('Build') {
+            steps {
+                sh 'npm install'
+            }
+        }
+    }
+}

From 958a346ba3b2205319444298b3f2a3072c2abbd3 Mon Sep 17 00:00:00 2001
From: khalidnr <121994573+khalidnr@users.noreply.github.com>
Date: Mon, 7 Apr 2025 21:23:28 +0700
Subject: [PATCH 02/21] Update and rename Jenkinsfile to jenkinsfile

---
 Jenkinsfile => jenkinsfile | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
 rename Jenkinsfile => jenkinsfile (89%)

diff --git a/Jenkinsfile b/jenkinsfile
similarity index 89%
rename from Jenkinsfile
rename to jenkinsfile
index ffa9a908b..5e804812c 100644
--- a/Jenkinsfile
+++ b/jenkinsfile
@@ -1,6 +1,5 @@
 pipeline {
-    agent any
-
+    zagent any
     stages {
         stage('Build') {
             steps {

From d417f4fec14d40a456209d7ea416e91d5e4f8319 Mon Sep 17 00:00:00 2001
From: khalidnr <121994573+khalidnr@users.noreply.github.com>
Date: Mon, 7 Apr 2025 21:23:43 +0700
Subject: [PATCH 03/21] Update jenkinsfile

---
 jenkinsfile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/jenkinsfile b/jenkinsfile
index 5e804812c..c2a3d615c 100644
--- a/jenkinsfile
+++ b/jenkinsfile
@@ -1,5 +1,5 @@
 pipeline {
-    zagent any
+    agent any
     stages {
         stage('Build') {
             steps {

From 1796e18f300e2a7ff9be8e2edcb53999e5585276 Mon Sep 17 00:00:00 2001
From: khalidnr <121994573+khalidnr@users.noreply.github.com>
Date: Mon, 7 Apr 2025 21:29:29 +0700
Subject: [PATCH 04/21] Rename jenkinsfile to Jenkinsfile

---
 jenkinsfile => Jenkinsfile | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename jenkinsfile => Jenkinsfile (100%)

diff --git a/jenkinsfile b/Jenkinsfile
similarity index 100%
rename from jenkinsfile
rename to Jenkinsfile

From 26f32eeb4be0ea9a0eee067078a53e54078563c9 Mon Sep 17 00:00:00 2001
From: khalidnr <121994573+khalidnr@users.noreply.github.com>
Date: Mon, 7 Apr 2025 21:56:07 +0700
Subject: [PATCH 05/21] Delete Jenkinsfile

---
 Jenkinsfile | 10 ----------
 1 file changed, 10 deletions(-)
 delete mode 100644 Jenkinsfile

diff --git a/Jenkinsfile b/Jenkinsfile
deleted file mode 100644
index c2a3d615c..000000000
--- a/Jenkinsfile
+++ /dev/null
@@ -1,10 +0,0 @@
-pipeline {
-    agent any
-    stages {
-        stage('Build') {
-            steps {
-                sh 'npm install'
-            }
-        }
-    }
-}

From 917638cb5771307dca65a2c8c06731f4c6690e61 Mon Sep 17 00:00:00 2001
From: khalidnr <121994573+khalidnr@users.noreply.github.com>
Date: Mon, 7 Apr 2025 21:56:45 +0700
Subject: [PATCH 06/21] Add files via upload

---
 Jenkinsfile | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)
 create mode 100644 Jenkinsfile

diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 000000000..5b2e173ad
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,30 @@
+pipeline {
+    agent {
+        docker {
+            image 'node:lts-buster-slim'
+            args '-p 3000:3000'
+        }
+    }
+    environment {
+        CI = 'true'
+    }
+    stages {
+        stage('Build') {
+            steps {
+                sh 'npm install'
+            }
+        }
+        stage('Test') {
+            steps {
+                sh './jenkins/scripts/test.sh'
+            }
+        }
+        stage('Deliver') {
+            steps {
+                sh './jenkins/scripts/deliver.sh'
+                input message: 'Finished using the web site? (Click "Proceed" to continue)'
+                sh './jenkins/scripts/kill.sh'
+            }
+        }
+    }
+}

From be00e1a904c072ba88668eaf011c95fa687c0b79 Mon Sep 17 00:00:00 2001
From: khalidnr <121994573+khalidnr@users.noreply.github.com>
Date: Mon, 7 Apr 2025 21:59:07 +0700
Subject: [PATCH 07/21] Delete Jenkinsfile

---
 Jenkinsfile | 30 ------------------------------
 1 file changed, 30 deletions(-)
 delete mode 100644 Jenkinsfile

diff --git a/Jenkinsfile b/Jenkinsfile
deleted file mode 100644
index 5b2e173ad..000000000
--- a/Jenkinsfile
+++ /dev/null
@@ -1,30 +0,0 @@
-pipeline {
-    agent {
-        docker {
-            image 'node:lts-buster-slim'
-            args '-p 3000:3000'
-        }
-    }
-    environment {
-        CI = 'true'
-    }
-    stages {
-        stage('Build') {
-            steps {
-                sh 'npm install'
-            }
-        }
-        stage('Test') {
-            steps {
-                sh './jenkins/scripts/test.sh'
-            }
-        }
-        stage('Deliver') {
-            steps {
-                sh './jenkins/scripts/deliver.sh'
-                input message: 'Finished using the web site? (Click "Proceed" to continue)'
-                sh './jenkins/scripts/kill.sh'
-            }
-        }
-    }
-}

From 319544d321b3419d12b24cd326c179b4b3d11939 Mon Sep 17 00:00:00 2001
From: khalidnr <121994573+khalidnr@users.noreply.github.com>
Date: Mon, 7 Apr 2025 21:59:50 +0700
Subject: [PATCH 08/21] Add files via upload

---
 Jenkinsfile | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
 create mode 100644 Jenkinsfile

diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 000000000..edc1e07c8
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,18 @@
+pipeline {
+    agent any
+
+    stages {
+        stage('Build') {
+            steps {
+                sh 'npm install'
+            }
+        }
+
+        stage('Test') {
+            steps {
+                sh './jenkins/scripts/test.sh'
+            }
+        }
+    }
+}
+

From 40b97ef5114337037cbb8d427b087476aa8a88da Mon Sep 17 00:00:00 2001
From: khalidnr <121994573+khalidnr@users.noreply.github.com>
Date: Mon, 7 Apr 2025 22:02:21 +0700
Subject: [PATCH 09/21] Update Jenkinsfile

---
 Jenkinsfile | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index edc1e07c8..e26d6f306 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -8,11 +8,3 @@ pipeline {
             }
         }
 
-        stage('Test') {
-            steps {
-                sh './jenkins/scripts/test.sh'
-            }
-        }
-    }
-}
-

From edf735e968d7ef5ebb1a5de1dc86e59e8b7d415b Mon Sep 17 00:00:00 2001
From: khalidnr <121994573+khalidnr@users.noreply.github.com>
Date: Mon, 7 Apr 2025 22:04:50 +0700
Subject: [PATCH 10/21] Delete Jenkinsfile

---
 Jenkinsfile | 10 ----------
 1 file changed, 10 deletions(-)
 delete mode 100644 Jenkinsfile

diff --git a/Jenkinsfile b/Jenkinsfile
deleted file mode 100644
index e26d6f306..000000000
--- a/Jenkinsfile
+++ /dev/null
@@ -1,10 +0,0 @@
-pipeline {
-    agent any
-
-    stages {
-        stage('Build') {
-            steps {
-                sh 'npm install'
-            }
-        }
-

From 36b28d20ced53c2f7aaf290c38b60a67bb422c53 Mon Sep 17 00:00:00 2001
From: khalidnr <121994573+khalidnr@users.noreply.github.com>
Date: Mon, 7 Apr 2025 22:05:03 +0700
Subject: [PATCH 11/21] Add files via upload

---
 Jenkinsfile | 9 +++++++++
 1 file changed, 9 insertions(+)
 create mode 100644 Jenkinsfile

diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 000000000..ac570d95e
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,9 @@
+pipeline {
+    agent any
+
+    stages {
+        stage('Build') {
+            steps {
+                sh 'npm install'
+            }
+        }

From feb6562bd4b9eb61d601b38da8b622edafa66e18 Mon Sep 17 00:00:00 2001
From: khalidnr <121994573+khalidnr@users.noreply.github.com>
Date: Mon, 7 Apr 2025 22:06:27 +0700
Subject: [PATCH 12/21] Update Jenkinsfile

---
 Jenkinsfile | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index ac570d95e..c2a3d615c 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -1,9 +1,10 @@
 pipeline {
     agent any
-
     stages {
         stage('Build') {
             steps {
                 sh 'npm install'
             }
         }
+    }
+}

From 25b64104ad03d1440867fa96462fbfd6b74fa4e1 Mon Sep 17 00:00:00 2001
From: khalidnr <121994573+khalidnr@users.noreply.github.com>
Date: Mon, 7 Apr 2025 22:12:21 +0700
Subject: [PATCH 13/21] Update Jenkinsfile

---
 Jenkinsfile | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/Jenkinsfile b/Jenkinsfile
index c2a3d615c..3aa443397 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -1,10 +1,25 @@
 pipeline {
     agent any
+
     stages {
         stage('Build') {
             steps {
                 sh 'npm install'
             }
         }
+
+        stage('Test') {
+            steps {
+                sh './jenkins/scripts/test.sh'
+            }
+        }
+
+        stage('Deliver') {
+            steps {
+                sh './jenkins/scripts/deliver.sh'
+                input message: 'Finished using the web site? (Click "Proceed" to continue)'
+                sh './jenkins/scripts/kill.sh'
+            }
+        }
     }
 }

From 444e97bab7be4c6d8036a8b1edd18256aa7df6e0 Mon Sep 17 00:00:00 2001
From: khalidnr <121994573+khalidnr@users.noreply.github.com>
Date: Mon, 7 Apr 2025 22:15:14 +0700
Subject: [PATCH 14/21] Update Jenkinsfile

---
 Jenkinsfile | 14 --------------
 1 file changed, 14 deletions(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index 3aa443397..ffa9a908b 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -7,19 +7,5 @@ pipeline {
                 sh 'npm install'
             }
         }
-
-        stage('Test') {
-            steps {
-                sh './jenkins/scripts/test.sh'
-            }
-        }
-
-        stage('Deliver') {
-            steps {
-                sh './jenkins/scripts/deliver.sh'
-                input message: 'Finished using the web site? (Click "Proceed" to continue)'
-                sh './jenkins/scripts/kill.sh'
-            }
-        }
     }
 }

From c080eabb26370cc4d7b073337cf6cb92b896b073 Mon Sep 17 00:00:00 2001
From: khalidnr <121994573+khalidnr@users.noreply.github.com>
Date: Mon, 7 Apr 2025 22:17:32 +0700
Subject: [PATCH 15/21] Update Jenkinsfile

---
 Jenkinsfile | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/Jenkinsfile b/Jenkinsfile
index ffa9a908b..fbd0fdce5 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -7,5 +7,10 @@ pipeline {
                 sh 'npm install'
             }
         }
+        stage('Test') {
+            steps {
+                sh './jenkins/scripts/test.sh'
+            }
+        }
     }
 }

From ddf4e1922ce8ec38b83cec3315cc859e2b1eff25 Mon Sep 17 00:00:00 2001
From: khalidnr <121994573+khalidnr@users.noreply.github.com>
Date: Mon, 7 Apr 2025 22:19:40 +0700
Subject: [PATCH 16/21] Update Jenkinsfile

---
 Jenkinsfile | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/Jenkinsfile b/Jenkinsfile
index fbd0fdce5..a5224058e 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -12,5 +12,12 @@ pipeline {
                 sh './jenkins/scripts/test.sh'
             }
         }
+        stage('Deliver') {
+            steps {
+                sh './jenkins/scripts/deliver.sh'
+                input message: 'Finished using the web site? (Click "Proceed" to continue)'
+                sh './jenkins/scripts/kill.sh'
+            }
+        }
     }
 }

From dcb4d114b56e7defb5c15779edbe25186e46523d Mon Sep 17 00:00:00 2001
From: khalidnr <121994573+khalidnr@users.noreply.github.com>
Date: Mon, 7 Apr 2025 22:54:34 +0700
Subject: [PATCH 17/21] Add files via upload

"Add 'Test' stage"
---
 Jenkinsfile | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index a5224058e..8b1960f95 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -1,6 +1,5 @@
 pipeline {
     agent any
-
     stages {
         stage('Build') {
             steps {
@@ -12,12 +11,5 @@ pipeline {
                 sh './jenkins/scripts/test.sh'
             }
         }
-        stage('Deliver') {
-            steps {
-                sh './jenkins/scripts/deliver.sh'
-                input message: 'Finished using the web site? (Click "Proceed" to continue)'
-                sh './jenkins/scripts/kill.sh'
-            }
-        }
     }
 }

From e49d0a3d2367e392460cbc1cd7b98ffaa4253d35 Mon Sep 17 00:00:00 2001
From: khalidnr <121994573+khalidnr@users.noreply.github.com>
Date: Sat, 24 May 2025 13:18:18 +0700
Subject: [PATCH 18/21] Delete Jenkinsfile

---
 Jenkinsfile | 15 ---------------
 1 file changed, 15 deletions(-)
 delete mode 100644 Jenkinsfile

diff --git a/Jenkinsfile b/Jenkinsfile
deleted file mode 100644
index 8b1960f95..000000000
--- a/Jenkinsfile
+++ /dev/null
@@ -1,15 +0,0 @@
-pipeline {
-    agent any
-    stages {
-        stage('Build') {
-            steps {
-                sh 'npm install'
-            }
-        }
-        stage('Test') {
-            steps {
-                sh './jenkins/scripts/test.sh'
-            }
-        }
-    }
-}

From c6cd0608af303a2f74bcdbc8706f0460a128858d Mon Sep 17 00:00:00 2001
From: khalidnr <121994573+khalidnr@users.noreply.github.com>
Date: Sat, 24 May 2025 16:27:00 +0700
Subject: [PATCH 19/21] dd modern Jenkinsfile with enhanced configuration

---
 Jenkinsfile | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 63 insertions(+)
 create mode 100644 Jenkinsfile

diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 000000000..5f10bebbc
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,63 @@
+pipeline {
+    agent any
+    
+    tools {
+        nodejs 'NodeJS-18'
+    }
+    
+    environment {
+        CI = 'true'
+        NODE_ENV = 'test'
+    }
+    
+    options {
+        buildDiscarder(logRotator(numToKeepStr: '10'))
+        timeout(time: 30, unit: 'MINUTES')
+        timestamps()
+    }
+    
+    stages {
+        stage('Checkout') {
+            steps {
+                echo 'Checking out code...'
+                checkout scm
+            }
+        }
+        
+        stage('Install Dependencies') {
+            steps {
+                echo 'Installing dependencies...'
+                sh '''
+                    node --version
+                    npm --version
+                    npm ci --only=production
+                '''
+            }
+        }
+        
+        stage('Build') {
+            steps {
+                echo 'Building application...'
+                sh 'npm run build'
+            }
+            post {
+                always {
+                    archiveArtifacts artifacts: 'build/**/*', allowEmptyArchive: true
+                }
+            }
+        }
+    }
+    
+    post {
+        always {
+            echo 'Pipeline completed'
+            cleanWs()
+        }
+        success {
+            echo 'Pipeline succeeded!'
+        }
+        failure {
+            echo 'Pipeline failed!'
+        }
+    }
+}

From 6fd24095160dfe0f8868c6d37b140ff0a7237cdb Mon Sep 17 00:00:00 2001
From: khalidnr <121994573+khalidnr@users.noreply.github.com>
Date: Sat, 24 May 2025 16:27:54 +0700
Subject: [PATCH 20/21] dd comprehensive testing stage with code quality checks

---
 Jenkinsfile | 46 ++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 44 insertions(+), 2 deletions(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index 5f10bebbc..739947917 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -2,7 +2,7 @@ pipeline {
     agent any
     
     tools {
-        nodejs 'NodeJS-18'
+        nodejs 'NodeJS-24'
     }
     
     environment {
@@ -30,11 +30,53 @@ pipeline {
                 sh '''
                     node --version
                     npm --version
-                    npm ci --only=production
+                    npm ci
                 '''
             }
         }
         
+        stage('Code Quality & Security') {
+            parallel {
+                stage('Lint') {
+                    steps {
+                        echo 'Running ESLint...'
+                        sh 'npm run lint || true'
+                    }
+                }
+                stage('Security Audit') {
+                    steps {
+                        echo 'Running security audit...'
+                        sh 'npm audit --audit-level moderate || true'
+                    }
+                }
+            }
+        }
+        
+        stage('Test') {
+            steps {
+                echo 'Running tests...'
+                sh '''
+                    # Run tests with coverage
+                    npm test -- --coverage --watchAll=false --testResultsProcessor=jest-junit
+                '''
+            }
+            post {
+                always {
+                    // Publish test results
+                    publishTestResults testResultsPattern: 'junit.xml'
+                    // Publish coverage reports
+                    publishHTML([
+                        allowMissing: false,
+                        alwaysLinkToLastBuild: true,
+                        keepAll: true,
+                        reportDir: 'coverage/lcov-report',
+                        reportFiles: 'index.html',
+                        reportName: 'Coverage Report'
+                    ])
+                }
+            }
+        }
+        
         stage('Build') {
             steps {
                 echo 'Building application...'

From 25a779946a3d82abf5d3bfaa8543b5fcd91f51dd Mon Sep 17 00:00:00 2001
From: khalidnr <121994573+khalidnr@users.noreply.github.com>
Date: Sat, 24 May 2025 16:29:00 +0700
Subject: [PATCH 21/21] Update package.json

---
 package.json | 1 +
 1 file changed, 1 insertion(+)

diff --git a/package.json b/package.json
index 5e4d91525..e301a7036 100644
--- a/package.json
+++ b/package.json
@@ -11,6 +11,7 @@
     "start": "react-scripts start",
     "build": "react-scripts build",
     "test": "react-scripts test --env=jsdom",
+    "lint": "eslint src/",
     "eject": "react-scripts eject"
   },
   "browserslist": {
