@@ -652,6 +652,28 @@ <h2 class="project-title">Syscall-Based Runtime Detection & AI Enrichment</h2>
652652 <!-- Add more projects here when you have them -->
653653 <!-- Example: Copy a project-card from above and paste here -->
654654
655+ < article class ="project-card ">
656+ < div class ="project-header ">
657+ < div >
658+ <!-- <div class="project-id"></div> -->
659+ < h2 class ="project-title "> CI/CD Automation for SIEM Applications</ h2 >
660+ </ div >
661+ < span class ="tlp-label tlp-clear "> TLP:CLEAR</ span >
662+ </ div >
663+ < p class ="project-description ">
664+ Built a fully automated CI/CD pipeline for SIEM applications delivery. Eliminated manual packaging and testing , reduced deployment time from hours to minutes.
665+ </ p >
666+ < div class ="project-tags ">
667+ < span class ="tag "> CI/CD</ span >
668+ < span class ="tag "> SIEM Engineering</ span >
669+ < span class ="tag "> Automation</ span >
670+ </ div >
671+ < div class ="project-footer ">
672+ < a href ="projects/ci-cd-automation-for-siem-applications.html " class ="project-link " target ="_blank "> Details</ a >
673+ < span class ="project-date "> 2025.04</ span >
674+ </ div >
675+ </ article >
676+
655677 </ div >
656678 </ div >
657679
@@ -665,51 +687,68 @@ <h2 class="project-title">Syscall-Based Runtime Detection & AI Enrichment</h2>
665687 </ div >
666688
667689 < script >
668- document . addEventListener ( 'DOMContentLoaded' , function ( ) {
669- // Update "Show More" button with additional project count
670- const showMoreBtn = document . getElementById ( 'showMoreBtn' ) ;
671- if ( additionalProjects . length > 0 ) {
672- showMoreBtn . textContent = `Show More Projects (${ additionalProjects . length } )` ;
673- showMoreBtn . style . display = 'inline-block' ;
674- } else {
675- showMoreBtn . style . display = 'none' ;
676- }
677-
678- // Get last update date from most recent project
679- const allProjectDates = document . querySelectorAll ( '.project-date' ) ;
680- let latestDate = '2024.01.01' ;
681-
682- allProjectDates . forEach ( dateEl => {
683- const dateText = dateEl . textContent . trim ( ) ;
684- if ( dateText > latestDate ) {
685- latestDate = dateText ;
690+ document . addEventListener ( 'DOMContentLoaded' , function ( ) {
691+ // Count main projects (only the first projects-grid, not the one inside additionalProjects)
692+ const mainProjectsGrid = document . querySelector ( '.projects-grid' ) ;
693+ const mainProjects = mainProjectsGrid . querySelectorAll ( '.project-card' ) ;
694+
695+ // Count additional (hidden) projects - THIS WAS MISSING
696+ const additionalProjects = document . querySelectorAll ( '#additionalProjects .project-card' ) ;
697+
698+ // Auto-number all projects
699+ const allProjectCards = document . querySelectorAll ( '.project-card' ) ;
700+ allProjectCards . forEach ( ( card , index ) => {
701+ const projectId = card . querySelector ( '.project-id' ) ;
702+ if ( projectId ) {
703+ const projectNumber = String ( index + 1 ) . padStart ( 3 , '0' ) ;
704+ projectId . textContent = `PROJECT-${ projectNumber } ` ;
705+ }
706+ } ) ;
707+
708+ // Update "Show More" button with additional project count
709+ const showMoreBtn = document . getElementById ( 'showMoreBtn' ) ;
710+ if ( additionalProjects . length > 0 ) {
711+ showMoreBtn . textContent = `Show More Projects (${ additionalProjects . length } )` ;
712+ showMoreBtn . style . display = 'inline-block' ;
713+ } else {
714+ showMoreBtn . style . display = 'none' ;
686715 }
687- } ) ;
688-
689- // Update status bar with latest date (only 1 status-item now)
690- const statusItems = document . querySelectorAll ( '.status-item' ) ;
691- if ( statusItems . length >= 1 ) {
692- const dateSpan = statusItems [ 0 ] . querySelector ( 'span' ) ;
693- if ( dateSpan ) {
694- dateSpan . textContent = `LAST UPDATE: ${ latestDate } ` ;
716+
717+ // Get last update date from most recent project
718+ const allProjectDates = document . querySelectorAll ( '.project-date' ) ;
719+ let latestDate = '2024.01.01' ;
720+
721+ allProjectDates . forEach ( dateEl => {
722+ const dateText = dateEl . textContent . trim ( ) ;
723+ if ( dateText > latestDate ) {
724+ latestDate = dateText ;
725+ }
726+ } ) ;
727+
728+ // Update status bar with latest date
729+ const statusItems = document . querySelectorAll ( '.status-item' ) ;
730+ if ( statusItems . length >= 1 ) {
731+ const dateSpan = statusItems [ 0 ] . querySelector ( 'span' ) ;
732+ if ( dateSpan ) {
733+ dateSpan . textContent = `LAST UPDATE: ${ latestDate } ` ;
734+ }
695735 }
696- }
697736 } ) ;
698737
699- function toggleProjects ( ) {
700- const additionalProjects = document . getElementById ( 'additionalProjects' ) ;
701- const btn = document . getElementById ( 'showMoreBtn' ) ;
702- const additionalProjectCount = document . querySelectorAll ( '#additionalProjects .project-card' ) . length ;
703-
704- additionalProjects . classList . toggle ( 'expanded' ) ;
705- btn . classList . toggle ( 'expanded' ) ;
706-
707- if ( additionalProjects . classList . contains ( 'expanded' ) ) {
708- btn . textContent = 'Show Less' ;
709- } else {
710- btn . textContent = `Show More Projects (${ additionalProjectCount } )` ;
711- }
712- }
738+ function toggleProjects ( ) {
739+ const additionalProjects = document . getElementById ( 'additionalProjects' ) ;
740+ const btn = document . getElementById ( 'showMoreBtn' ) ;
741+ const additionalProjectCount = document . querySelectorAll ( '#additionalProjects .project-card' ) . length ;
742+
743+ additionalProjects . classList . toggle ( 'expanded' ) ;
744+ btn . classList . toggle ( 'expanded' ) ;
745+
746+ if ( additionalProjects . classList . contains ( 'expanded' ) ) {
747+ btn . textContent = 'Show Less' ;
748+ } else {
749+ btn . textContent = `Show More Projects (${ additionalProjectCount } )` ;
750+ }
751+ }
713752 </ script >
714753
715754</ body >
0 commit comments