File: //proc/self/root/proc/self/root/proc/thread-self/root/home/jsaha/public_html/index.php
<?php
declare(strict_types=1);
require_once __DIR__ . '/includes/site-data.php';
require_once __DIR__ . '/includes/seo.php';
function h(string $v): string { return htmlspecialchars($v, ENT_QUOTES, 'UTF-8'); }
$year = (int)date('Y');
$homeSeoTitle = 'Jyotirmoy Saha | Software Engineer | IT, Data Science, Blockchain Expert | Professional Portfolio of Jyotirmoy Saha';
$homeSeoDescription = "Hi, I'm a dedicated and results-driven full-stack developer based in Kolkata, West Bengal. I build reliable web and software products with business impact.";
$homeSeoKeywords = 'Jyotirmoy Saha, software engineer, full-stack developer, web developer, portfolio, Kolkata, JavaScript, PHP, Laravel, React, Node.js, Python, MySQL';
?>
<!DOCTYPE html>
<html lang="en">
<head>
<?php seoRenderMeta([
'title' => $homeSeoTitle,
'description' => $homeSeoDescription,
'keywords' => $homeSeoKeywords,
]); ?>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/glightbox/dist/css/glightbox.min.css">
<link rel="stylesheet" href="assets/css/icon.css">
<link rel="stylesheet" href="assets/css/phosphoricons.css">
<link rel="stylesheet" href="assets/css/animate.css">
<link rel="stylesheet" href="assets/css/bootstrap.min.css">
<link rel="stylesheet" href="assets/css/swiper-bundle.min.css">
<link rel="stylesheet" href="assets/css/styles.css">
<style>
@media (max-width: 991.98px) {
.tz-banner1__circle {
display: none;
}
}
</style>
</head>
<body class="tz-bg-black">
<div class="tz-preloader"><span class="loader"></span></div>
<div class="tz-sidebar">
<div class="tz-sidebar1">
<div class="tz-sidebar1__thumb tz-bg-black-neutral-2">
<div class="tz-sidebar1__img-wrapper">
<img src="<?= h($profile['hero_image']); ?>" alt="<?= h($profile['name']); ?>">
<a class="tz-sidebar1__badge tz-button tz-button--effect tz-button--style1 tz-text-m" href="#contact"><span>Hire Me!</span></a>
<div class="tz-sidebar1__social">
<?php foreach ($socialLinks as $s): ?>
<a href="<?= h($s['url']); ?>" target="_blank" rel="noopener noreferrer" class="tz-sidebar1__social-link" title="<?= h($s['name']); ?>"><i class="<?= h($s['icon']); ?>"></i></a>
<?php endforeach; ?>
</div>
</div>
<div class="tz-sidebar1-content text-center">
<p class="tz-sidebar1-content__subtitle tz-text-l tz-text-white-neutral-2">Howdy! <?= h($profile['short_name']); ?></p>
<h3 class="tz-sidebar1-content__title tz-text-white"><?= h($profile['role']); ?></h3>
<div class="tz-sidebar1-content__footer">
<a class="tz-button tz-button--effect tz-button--style1 tz-text-l w-100" href="#contact"><span>Contact Me</span></a>
<a class="tz-button tz-button--effect tz-text-l w-100" href="<?= h($profile['cv_url']); ?>" rel="noopener noreferrer"><span>Download CV</span></a>
</div>
</div>
</div>
</div>
</div>
<div class="tz-menu-toggle"><button class="tz-menu-toggle__icon tz-offcanvas-btn"><i class="ph ph-list"></i></button></div>
<aside class="tz-menu-sidebar tz-menu-sidebar--right tz-mobile-menu">
<div class="tz-menu-sidebar__inner">
<div class="tz-menu-sidebar__top"><h3 class="tz-text-neutral4 tz-menu-sidebar__title"><?= h($profile['name']); ?></h3></div>
<div class="tz-menu-sidebar__nav">
<nav class="tz-menu-sidebar-links tz-main-menu"><ul>
<li><a href="#home">Home</a></li><li><a href="#about">About</a></li><li><a href="#resume">Resume</a></li>
<li><a href="#services">Services</a></li><li><a href="#skills">Skills</a></li><li><a href="#portfolio">Portfolio</a></li>
<li><a href="#awards">Awards</a></li><li><a href="#certification">Certification</a></li><li><a href="#testimonial">Testimonial</a></li>
<li><a href="#contact">Contact</a></li>
</ul></nav>
</div>
</div>
</aside>
<div class="tz-body-overlay tz-body-overlay--right"></div>
<nav class="tz-menu"><ul class="tz-menu__list" id="tz-onepage-nav">
<li class="tz-menu__item"><a href="#home" class="tz-menu__link active"><i class="ph ph-house"></i></a></li>
<li class="tz-menu__item"><a href="#about" class="tz-menu__link"><i class="ph ph-user"></i></a></li>
<li class="tz-menu__item"><a href="#resume" class="tz-menu__link"><i class="ph ph-graduation-cap"></i></a></li>
<li class="tz-menu__item"><a href="#services" class="tz-menu__link"><i class="ph ph-briefcase"></i></a></li>
<li class="tz-menu__item"><a href="#skills" class="tz-menu__link"><i class="ph ph-pen-nib-straight"></i></a></li>
<li class="tz-menu__item"><a href="#portfolio" class="tz-menu__link"><i class="ph ph-layout"></i></a></li>
<li class="tz-menu__item"><a href="#awards" class="tz-menu__link"><i class="ph ph-trophy"></i></a></li>
<li class="tz-menu__item"><a href="#certification" class="tz-menu__link"><i class="ph ph-certificate"></i></a></li>
<li class="tz-menu__item"><a href="#testimonial" class="tz-menu__link"><i class="ph ph-chat-centered-text"></i></a></li>
<li class="tz-menu__item"><a href="#contact" class="tz-menu__link"><i class="ph ph-paper-plane"></i></a></li>
</ul></nav>
<div class="tz-main-wrapper">
<div class="tz-timeline">
<div class="tz-timeline-left">
<span class="tz-timeline-left__role1 tz-text-m tz-text-white-neutral-2">Full-Stack Developer</span>
<div class="tz-timeline-left__line"></div>
<span class="tz-timeline-left__year tz-text-m tz-text-secondary"><?= $year; ?></span>
<div class="tz-timeline-left__line"></div>
<span class="tz-timeline-left__role2 tz-text-m tz-text-white-neutral-2">Front-End Developer</span>
</div>
<div class="tz-timeline-right">
<a class="tz-timeline-right__scroll tz-text-m tz-text-white-neutral-2" href="#">Scroll Down</a>
<div class="tz-timeline-right__line"></div>
<span class="tz-timeline-right__year tz-text-secondary"><?= $year; ?></span>
<div class="tz-timeline-right__line"></div>
<a class="tz-timeline-right__hire tz-text-m tz-text-white-neutral-2" href="#contact">Hire me</a>
</div>
</div>
<section class="tz-sidebar1__section tz-pt-lg-70 tz-pt-40 tz-pb-lg-70 tz-pb-40 wow fadeInLeft">
<div class="tz-sidebar1">
<div class="tz-sidebar1__thumb tz-bg-black-neutral-2">
<div class="tz-sidebar1__img-wrapper">
<img src="<?= h($profile['hero_image']); ?>" alt="<?= h($profile['name']); ?>">
<a class="tz-sidebar1__badge tz-button tz-button--effect tz-button--style1 tz-text-m" href="#contact"><span>Hire Me!</span></a>
<div class="tz-sidebar1__social">
<?php foreach ($socialLinks as $s): ?>
<a href="<?= h($s['url']); ?>" target="_blank" rel="noopener noreferrer" class="tz-sidebar1__social-link" title="<?= h($s['name']); ?>"><i class="<?= h($s['icon']); ?>"></i></a>
<?php endforeach; ?>
</div>
</div>
<div class="tz-sidebar1-content text-center">
<p class="tz-sidebar1-content__subtitle tz-text-l tz-text-white-neutral-2">Howdy! <?= h($profile['short_name']); ?></p>
<h3 class="tz-sidebar1-content__title tz-text-white"><?= h($profile['role']); ?></h3>
<div class="tz-sidebar1-content__footer">
<a class="tz-button tz-button--effect tz-button--style1 tz-text-l w-100" href="#contact"><span>Contact Me</span></a>
<a class="tz-button tz-button--effect tz-text-l w-100" href="<?= h($profile['cv_url']); ?>" rel="noopener noreferrer"><span>Download CV</span></a>
</div>
</div>
</div>
</div>
</section>
<section id="home" class="tz-banner1 tz-pt-20 tz-pb-lg-70 tz-pb-40">
<div class="tz-custom-container">
<div class="tz-section-top"><div class="tz-chip tz-text-s wow fadeInUp"><i class="ph ph-house"></i>Introduce</div></div>
<div class="tz-banner1__content">
<p class="tz-banner1__subtitle tz-text-l tz-text-white-neutral-3 wow fadeInUp">HOWDY! <span class="tz-text-primary"><i class="ph-fill ph-hand"></i></span> I'M <?= h($profile['short_name']); ?></p>
<div class="tz-banner1__title tz-display-4 tz-text-white-neutral-3 wow fadeInUp"><?= h($profile['headline']); ?></div>
<p class="tz-banner1__desc tz-text-l tz-text-white-neutral-2 mt-3 wow fadeInUp"><?= h($profile['intro']); ?></p>
<div class="tz-banner1__actions wow fadeInUp">
<a class="tz-button tz-button--effect tz-button--style1 tz-text-l" href="#contact"><span>Hire Me!</span></a>
<a class="tz-banner1__viewbtn tz-text-l tz-text-white text-decoration-underline" href="#portfolio">View My Works</a>
</div>
<img src="assets/images/arrow.svg" alt="shape1" class="tz-banner1__shape1 svg">
<a class="tz-banner1__circle" href="#portfolio">
<img src="assets/images/round-text.png" alt="Explore more" class="tz-banner1__circle-img">
<div class="tz-banner1__circle-thumb"><span class="tz-banner1__circle-icon"><i class="ph ph-arrow-down"></i></span></div>
</a>
<div class="tz-banner1__footer tz-mt-lg-60 tz-mt-30 overflow-hidden wow fadeInUp">
<div class="brand-carousel d-flex align-items-center justify-content-between">
<div class="swiper-wrapper">
<div class="swiper-slide"><img src="assets/images/strip-images/android-1175274.png" alt="Android" class="tz-banner1__footer-img"></div>
<div class="swiper-slide"><img src="assets/images/strip-images/apache.png" alt="Apache" class="tz-banner1__footer-img"></div>
<div class="swiper-slide"><img src="assets/images/strip-images/codeigniter-1175201.png" alt="CodeIgniter" class="tz-banner1__footer-img"></div>
<div class="swiper-slide"><img src="assets/images/strip-images/cplusplus-1175244.png" alt="C++" class="tz-banner1__footer-img"></div>
<div class="swiper-slide"><img src="assets/images/strip-images/django-1175187.png" alt="Django" class="tz-banner1__footer-img"></div>
<div class="swiper-slide"><img src="assets/images/strip-images/git-1175195.png" alt="Git" class="tz-banner1__footer-img"></div>
<div class="swiper-slide"><img src="assets/images/strip-images/java-1174953.png" alt="Java" class="tz-banner1__footer-img"></div>
<div class="swiper-slide"><img src="assets/images/strip-images/mysql-1174941.png" alt="MySQL" class="tz-banner1__footer-img"></div>
<div class="swiper-slide"><img src="assets/images/strip-images/postgresql-1175122.png" alt="PostgreSQL" class="tz-banner1__footer-img"></div>
<div class="swiper-slide"><img src="assets/images/strip-images/python.png" alt="Python" class="tz-banner1__footer-img"></div>
<div class="swiper-slide"><img src="assets/images/strip-images/sequelize.png" alt="Sequelize" class="tz-banner1__footer-img"></div>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="about" class="tz-about1 tz-pt-lg-70 tz-pt-40 tz-pb-lg-70 tz-pb-40">
<div class="tz-custom-container">
<div class="tz-section-top wow fadeInUp"><div class="tz-chip tz-text-s"><i class="ph ph-user"></i>About Me</div></div>
<h2 class="tz-about1__title tz-text-white-neutral-3 wow fadeInUp">Building reliable digital products with <span class="tz-text-secondary">business impact</span>.</h2>
<p class="tz-about1__subtitle tz-text-l tz-text-white-neutral-2 wow fadeInUp"><?= h($profile['about']); ?></p>
<div class="tz-about1-contact tz-text-l tz-text-white-neutral-3 tz-pt-lg-60 tz-pt-30 tz-pb-lg-60 tz-pb-30 wow fadeInUp">
<div class="tz-about1-contact__item"><span class="tz-about1-contact__label">Phone</span><span class="tz-about1-contact__separator">:</span><span class="tz-about1-contact__value"><?= h($profile['phone']); ?></span></div>
<div class="tz-about1-contact__item"><span class="tz-about1-contact__label">Email</span><span class="tz-about1-contact__separator">:</span><span class="tz-about1-contact__value"><?= h($profile['email']); ?></span></div>
<div class="tz-about1-contact__item"><span class="tz-about1-contact__label">Degree</span><span class="tz-about1-contact__separator">:</span><span class="tz-about1-contact__value"><?= h($profile['degree']); ?></span></div>
<div class="tz-about1-contact__item"><span class="tz-about1-contact__label">Experience</span><span class="tz-about1-contact__separator">:</span><span class="tz-about1-contact__value"><?= h($profile['experience']); ?></span></div>
<div class="tz-about1-contact__item"><span class="tz-about1-contact__label">Location</span><span class="tz-about1-contact__separator">:</span><span class="tz-about1-contact__value"><?= h($profile['location']); ?></span></div>
</div>
<div class="tz-about1-counter wow fadeInUp">
<?php foreach ($stats as $st): ?>
<div class="tz-about1-counter__item"><span class="tz-about1-counter__number tz-display-4 d-flex align-items-center justify-content-center"><span class="tz-cn"><?= h($st['value']); ?></span>+</span><p class="tz-about1-counter__desc"><span><?= h($st['label_top']); ?></span><br><span><?= h($st['label_bottom']); ?></span></p></div>
<?php endforeach; ?>
</div>
</div>
</section>
<section id="resume" class="tz-resume1 tz-pt-lg-70 tz-pt-40 tz-pb-lg-70 tz-pb-40">
<div class="tz-custom-container">
<div class="tz-section-top">
<div class="tz-chip tz-text-s wow fadeInUp"><i class="ph ph-graduation-cap"></i>Resume</div>
<div class="tz-section-title wow fadeInUp">
<h4 class="tz-section-title__pt1 tz-display-4 tz-text-white-neutral-3">My Education</h4>
<div class="tz-section-title__highlight tz-display-4">
<span class="tz-section-title__line"></span>
<p class="tz-section-title__pt2 tz-text-secondary">& Experience</p>
</div>
</div>
</div>
<div class="row g-4">
<div class="col-md-6">
<h3 class="tz-resume1-career__title tz-text-white-neutral-3">Experiences</h3>
<?php foreach ($experiences as $ex): ?><div class="tz-resume1-career__item tz-mb-lg-30 tz-mb-20"><p class="tz-resume1-career__date tz-text-m"><?= h($ex['period']); ?></p><h4 class="tz-resume1-career__role tz-text-white-neutral-3"><?= h($ex['role']); ?></h4><p class="tz-resume1-career__company tz-text-l tz-text-white-neutral-2"><?= h($ex['company']); ?></p></div><?php endforeach; ?>
</div>
<div class="col-md-6">
<h3 class="tz-resume1-career__title tz-text-white-neutral-3">Education</h3>
<?php foreach ($education as $ed): ?><div class="tz-resume1-career__item tz-mb-lg-30 tz-mb-20"><p class="tz-resume1-career__date tz-text-m"><?= h($ed['period']); ?></p><h4 class="tz-resume1-career__degree tz-text-white-neutral-3"><?= h($ed['title']); ?></h4><p class="tz-resume1-career__institution tz-text-l tz-text-white-neutral-2"><?= h($ed['org']); ?></p></div><?php endforeach; ?>
</div>
</div>
</div>
</section>
<section id="services" class="tz-services1 tz-pt-lg-70 tz-pt-40 tz-pb-lg-70 tz-pb-40">
<div class="tz-custom-container">
<div class="tz-section-top wow fadeInUp">
<div class="tz-chip tz-text-s"><i class="ph ph-briefcase"></i>Services</div>
<div class="tz-section-title">
<h4 class="tz-section-title__pt1 tz-display-4 tz-text-white-neutral-3">My Quality</h4>
<div class="tz-section-title__highlight tz-display-4">
<span class="tz-section-title__line"></span>
<p class="tz-section-title__pt2 tz-text-secondary">Services</p>
</div>
</div>
</div>
<div class="row g-4">
<?php foreach ($services as $srv): ?>
<div class="col-md-6"><div class="tz-services1-card wow fadeInUp">
<div class="tz-services1-card__svg"><div class="tz-services1-card__svg-shape text-light"><i class="<?= h($srv['icon']); ?>" style="font-size:30px;"></i></div></div>
<h4 class="tz-services1-card__title"><?= h($srv['title']); ?></h4>
<ul class="tz-services1-card__list tz-text-l"><?php foreach ($srv['items'] as $it): ?><li class="tz-services1-card__item"><span class="tz-services1-card__icon"><i class="ph ph-caret-double-right"></i></span><span class="tz-services1-card__text"><?= h($it); ?></span></li><?php endforeach; ?></ul>
</div></div>
<?php endforeach; ?>
</div>
</div>
</section>
<section id="skills" class="tz-skills1 tz-pt-lg-70 tz-pt-40 tz-pb-lg-70 tz-pb-40">
<div class="tz-custom-container">
<div class="tz-section-top wow fadeInUp">
<div class="tz-chip tz-text-s"><i class="ph ph-pen-nib-straight"></i>Skills</div>
<div class="tz-section-title">
<h4 class="tz-section-title__pt1 tz-display-4 tz-text-white-neutral-3">My Skills</h4>
<div class="tz-section-title__highlight tz-display-4">
<span class="tz-section-title__line"></span>
<p class="tz-section-title__pt2 tz-text-secondary">& Tools</p>
</div>
</div>
</div>
<div class="tz-skills1__wrapper">
<?php foreach ($skills as $sk): ?><div class="tz-skills1-card wow fadeInUp"><div class="tz-skills1-card__content"><h5 class="tz-skills1-card__title tz-text-white-neutral-3"><?= h($sk['name']); ?></h5><h3 class="tz-skills1-card__percentage d-flex align-items-center justify-content-center"><span class="tz-cn"><?= (int)$sk['percent']; ?></span>%</h3></div><div class="tz-skills1-card__logo"><img src="<?= h($sk['image']); ?>" alt="<?= h($sk['name']); ?>"></div></div><?php endforeach; ?>
</div>
<div class="tz-skills1-insights tz-mt-lg-60 tz-mt-30">
<div class="tz-section-top wow fadeInUp">
<div class="tz-chip tz-text-s"><i class="ph ph-lightbulb"></i>Capability Highlights</div>
<h4 class="tz-skills1-insights__title tz-text-white-neutral-3">Execution-Focused Strengths for Modern Product Teams</h4>
</div>
<div class="row g-4">
<?php foreach ($skillHighlights as $hl): ?>
<div class="col-lg-6">
<div class="tz-skills1-insight-card wow fadeInUp">
<h5 class="tz-skills1-insight-card__title"><?= h($hl['title']); ?></h5>
<p class="tz-skills1-insight-card__summary"><?= h($hl['summary']); ?></p>
<ul class="tz-skills1-insight-card__list">
<?php foreach ($hl['points'] as $point): ?>
<li class="tz-skills1-insight-card__item">
<span class="tz-skills1-insight-card__icon"><i class="ph ph-caret-double-right"></i></span>
<span><?= h($point); ?></span>
</li>
<?php endforeach; ?>
</ul>
</div>
</div>
<?php endforeach; ?>
</div>
</div>
</div>
</section>
<section id="high-quality-projects" class="tz-projectdocs tz-pt-lg-70 tz-pt-40 tz-pb-lg-70 tz-pb-40">
<div class="tz-custom-container">
<div class="tz-section-top wow fadeInUp">
<div class="tz-chip tz-text-s"><i class="ph ph-file-pdf"></i>High-Quality Projects</div>
<div class="tz-section-title">
<h4 class="tz-section-title__pt1 tz-display-4 tz-text-white-neutral-3">AI-Driven, High-Impact Project</h4>
<div class="tz-section-title__highlight tz-display-4">
<span class="tz-section-title__line"></span>
<p class="tz-section-title__pt2 tz-text-secondary">Overviews</p>
</div>
</div>
</div>
<div class="tz-projectdocs-grid">
<?php foreach ($highQualityProjects as $doc): ?>
<article class="tz-projectdocs-card wow fadeInUp">
<div class="tz-projectdocs-card__preview">
<canvas class="tz-projectdocs-card__canvas pdf-cover-canvas" data-pdf="<?= h($doc['pdf']); ?>" data-page="1" aria-label="<?= h($doc['title']); ?> preview"></canvas>
</div>
<div class="tz-projectdocs-card__content">
<h5 class="tz-projectdocs-card__title"><?= h($doc['title']); ?></h5>
<p class="tz-projectdocs-card__desc"><?= h($doc['description']); ?></p>
<a class="tz-button tz-button--effect tz-button--style2 tz-text-m" href="<?= h($doc['pdf']); ?>">
<span>Open Doc</span>
</a>
</div>
</article>
<?php endforeach; ?>
</div>
</div>
</section>
<section id="portfolio" class="tz-portfolio1 tz-pt-lg-70 tz-pt-40 tz-pb-lg-70 tz-pb-40">
<div class="tz-custom-container">
<div class="tz-section-top">
<div class="tz-chip tz-text-s wow fadeInUp"><i class="ph ph-layout"></i>Portfolio</div>
<div class="tz-section-title wow fadeInUp">
<h4 class="tz-section-title__pt1 tz-display-4 tz-text-white-neutral-3">My Recent</h4>
<div class="tz-section-title__highlight tz-display-4 wow fadeInUp">
<span class="tz-section-title__line"></span>
<p class="tz-section-title__pt2 tz-text-secondary">Works</p>
</div>
</div>
</div>
<div class="row g-4">
<?php foreach ($portfolioItems as $p): ?><div class="col-sm-6"><div class="tz-portfolio1-card wow fadeInUp"><a class="tz-portfolio1-card__link" href="portfolio-details/?slug=<?= urlencode($p['slug']); ?>"><div class="tz-portfolio1-card__arrow"><i class="ph ph-arrow-up-right"></i></div><img class="tz-portfolio1-card__mask1" src="<?= h($p['cover']); ?>" alt="<?= h($p['title']); ?>"><div class="tz-portfolio1-card__content"><span class="tz-portfolio1-card__title tz-text-s tz-text-white-neutral-2"><?= h($p['category']); ?></span><h4 class="tz-portfolio1-card__subtitle tz-text-white"><?= h($p['title']); ?></h4><p class="tz-text-s tz-text-white-neutral-2 m-0"><?= h($p['summary']); ?></p></div></a></div></div><?php endforeach; ?>
</div>
</div>
</section>
<section id="awards" class="tz-portfolio1 tz-pt-lg-70 tz-pt-40 tz-pb-lg-70 tz-pb-40">
<div class="tz-custom-container">
<div class="tz-section-top wow fadeInUp">
<div class="tz-chip tz-text-s"><i class="ph ph-trophy"></i>Awards</div>
<div class="tz-section-title">
<h4 class="tz-section-title__pt1 tz-display-4 tz-text-white-neutral-3">Awards &</h4>
<div class="tz-section-title__highlight tz-display-4">
<span class="tz-section-title__line"></span>
<p class="tz-section-title__pt2 tz-text-secondary">Achievements</p>
</div>
</div>
</div>
<div class="row g-4">
<?php foreach ($achievements as $a): ?><div class="col-md-6"><div class="tz-portfolio1-card wow fadeInUp"><a class="tz-portfolio1-card__link glightbox-awards" href="<?= h($a['image']); ?>" data-gallery="awards-gallery" data-glightbox="title: <?= h($a['title']); ?>"><div class="tz-portfolio1-card__arrow"><i class="ph ph-arrow-up-right"></i></div><img class="tz-portfolio1-card__mask1" src="<?= h($a['image']); ?>" alt="<?= h($a['title']); ?>"><div class="tz-portfolio1-card__content"><h4 class="tz-portfolio1-card__subtitle tz-text-white"><?= h($a['title']); ?></h4></div></a></div></div><?php endforeach; ?>
</div>
</div>
</section>
<section id="certification" class="tz-portfolio1 tz-pt-lg-70 tz-pt-40 tz-pb-lg-70 tz-pb-40">
<div class="tz-custom-container">
<div class="tz-section-top wow fadeInUp">
<div class="tz-chip tz-text-s"><i class="ph ph-certificate"></i>Certification</div>
<div class="tz-section-title">
<h4 class="tz-section-title__pt1 tz-display-4 tz-text-white-neutral-3">Professional</h4>
<div class="tz-section-title__highlight tz-display-4">
<span class="tz-section-title__line"></span>
<p class="tz-section-title__pt2 tz-text-secondary">Certification</p>
</div>
</div>
</div>
<div class="row g-4">
<?php foreach ($certifications as $c): ?><div class="col-md-4"><div class="tz-portfolio1-card wow fadeInUp"><a class="tz-portfolio1-card__link glightbox-certs" href="<?= h($c['image']); ?>" data-gallery="certification-gallery" data-glightbox="title: <?= h($c['title']); ?>"><div class="tz-portfolio1-card__arrow"><i class="ph ph-arrow-up-right"></i></div><img class="tz-portfolio1-card__mask1" src="<?= h($c['image']); ?>" alt="<?= h($c['title']); ?>"><div class="tz-portfolio1-card__content"><h4 class="tz-portfolio1-card__subtitle tz-text-white"><?= h($c['title']); ?></h4></div></a></div></div><?php endforeach; ?>
</div>
</div>
</section>
<section id="testimonial" class="tz-testimonial1 tz-pt-lg-70 tz-pt-40 tz-pb-lg-70 tz-pb-40">
<div class="tz-custom-container">
<div class="tz-section-top">
<div class="tz-chip tz-text-s wow fadeInUp"><i class="ph ph-chat-centered-text"></i>Testimonial</div>
<div class="tz-section-title wow fadeInUp">
<h4 class="tz-section-title__pt1 tz-display-4 tz-text-white-neutral-3">Here's What</h4>
<div class="tz-section-title__highlight tz-display-4">
<span class="tz-section-title__line"></span>
<p class="tz-section-title__pt2 tz-text-secondary">My Clients Say</p>
</div>
</div>
</div>
<div class="swiper tz-testimonial1__slider wow fadeInUp"><div class="swiper-wrapper">
<?php foreach ($testimonials as $t): ?><div class="swiper-slide"><div class="tz-testimonial1-card"><div class="tz-testimonial1-card__header"><img src="<?= h($t['image']); ?>" alt="<?= h($t['name']); ?>" class="tz-testimonial1-card__avatar"><div class="tz-testimonial1-card__info"><h4 class="tz-testimonial1-card__name"><?= h($t['name']); ?></h4><p class="tz-testimonial1-card__meta tz-text-s m-0"><?= h($t['meta']); ?></p></div></div><p class="tz-testimonial1-card__text tz-text-l"><?= h($t['text']); ?></p></div></div><?php endforeach; ?>
</div><div class="tz-testimonial1__toggle"><button class="tz-testimonial1__prev"><i class="ph ph-caret-left"></i></button><div class="swiper-pagination"></div><button class="tz-testimonial1__next"><i class="ph ph-caret-right"></i></button></div></div>
</div>
</section>
<section id="contact" class="tz-contact1 tz-pt-lg-70 tz-pt-40 tz-pb-lg-70 tz-pb-40">
<div class="tz-custom-container">
<div class="tz-section-top">
<div class="tz-chip tz-text-s wow fadeInUp"><i class="ph ph-paper-plane"></i>Contact</div>
<div class="tz-section-title wow fadeInUp">
<h4 class="tz-section-title__pt1 tz-display-4 tz-text-white-neutral-3">Get in</h4>
<div class="tz-section-title__highlight tz-display-4">
<span class="tz-section-title__line"></span>
<p class="tz-section-title__pt2 tz-text-secondary">Touch</p>
</div>
</div>
</div>
<p class="tz-text-l tz-text-white-neutral-2 mb-4">Please fill this form to contact me. Or email at <a href="mailto:<?= h($profile['email']); ?>" class="tz-text-secondary"><?= h($profile['email']); ?></a>.</p>
<div class="tz-contact1-form"><form id="contactForm" class="row g-4" action="contact-submit.php" method="post">
<div class="col-md-12"><div class="form-group wow fadeInUp"><label class="tz-text-l" for="name">Name *</label><input type="text" class="form-control" id="name" name="name" required></div></div>
<div class="col-md-6"><div class="form-group wow fadeInUp"><label class="tz-text-l" for="email">Email *</label><input type="email" class="form-control" id="email" name="email" required></div></div>
<div class="col-md-6"><div class="form-group wow fadeInUp"><label class="tz-text-l" for="mobile">Mobile</label><input type="text" class="form-control" id="mobile" name="mobile"></div></div>
<div class="col-md-12"><div class="form-group wow fadeInUp"><label class="tz-text-l" for="subject">Subject *</label><input type="text" class="form-control" id="subject" name="subject" required></div></div>
<div class="col-md-12"><div class="form-group wow fadeInUp"><label class="tz-text-l" for="cmessage">Message *</label><textarea class="form-control" id="cmessage" name="cmessage" rows="5" required></textarea></div></div>
<div class="col-12"><button type="submit" id="contactSubmitBtn" class="tz-button tz-button--effect tz-button--style2 tz-text-l wow fadeInUp"><span>Submit Now</span></button></div>
<div class="col-12"><p id="contactFormMessage" class="tz-text-l m-0" style="display:none;"></p></div>
</form></div>
</div>
</section>
<section class="tz-pt-40 tz-pb-40"><div class="tz-custom-container text-center">
<!-- <div class="tz-sidebar1__social mb-3"><?php foreach ($socialLinks as $s): ?><a href="<?= h($s['url']); ?>" target="_blank" class="tz-sidebar1__social-link" rel="noopener noreferrer"><i class="<?= h($s['icon']); ?>"></i></a><?php endforeach; ?></div> -->
<p class="tz-text-white-neutral-2 m-0">© <?= $year; ?> <?= h($profile['name']); ?>. All Rights Reserved.</p>
</div></section>
</div>
<script src="assets/js/jquery-3.7.1.min.js"></script>
<script src="assets/js/bootstrap.bundle.min.js"></script>
<script src="assets/js/swiper-bundle.min.js"></script>
<script src="assets/js/wow.min.js"></script>
<script src="assets/js/onepageNav.js"></script>
<script src="assets/js/counterup.min.js"></script>
<script src="assets/js/main.js"></script>
<script src="https://cdn.jsdelivr.net/npm/glightbox/dist/js/glightbox.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.16.105/pdf.min.js"></script>
<script>
if (typeof GLightbox !== 'undefined') {
GLightbox({ selector: '.glightbox-awards' });
GLightbox({ selector: '.glightbox-certs' });
}
function equalizeProjectCards() {
var cards = Array.prototype.slice.call(
document.querySelectorAll('.tz-projectdocs-grid .tz-projectdocs-card')
);
if (!cards.length) return;
cards.forEach(function (card) {
card.style.minHeight = '0px';
});
var tallest = 0;
cards.forEach(function (card) {
tallest = Math.max(tallest, card.offsetHeight);
});
cards.forEach(function (card) {
card.style.minHeight = tallest + 'px';
});
}
if (typeof pdfjsLib !== 'undefined') {
pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.16.105/pdf.worker.min.js';
document.querySelectorAll('.pdf-cover-canvas').forEach(async function (canvasEl) {
var pdfPath = canvasEl.getAttribute('data-pdf');
var pageNo = Number(canvasEl.getAttribute('data-page') || '1');
if (!pdfPath) return;
try {
var loadingTask = pdfjsLib.getDocument(pdfPath);
var pdfDoc = await loadingTask.promise;
var page = await pdfDoc.getPage(pageNo);
var firstViewport = page.getViewport({ scale: 1 });
var maxWidth = 820;
var scale = maxWidth / firstViewport.width;
var viewport = page.getViewport({ scale: scale });
var context = canvasEl.getContext('2d');
canvasEl.width = viewport.width;
canvasEl.height = viewport.height;
await page.render({
canvasContext: context,
viewport: viewport
}).promise;
equalizeProjectCards();
} catch (error) {
canvasEl.style.display = 'none';
equalizeProjectCards();
}
});
}
equalizeProjectCards();
var projectCardResizeTimer = null;
window.addEventListener('resize', function () {
if (projectCardResizeTimer) {
clearTimeout(projectCardResizeTimer);
}
projectCardResizeTimer = setTimeout(equalizeProjectCards, 120);
});
</script>
</body>
</html>