Compare commits
13 Commits
595a1e6bc5
...
mohammed
| Author | SHA1 | Date | |
|---|---|---|---|
| 2985df3d43 | |||
| e6f4178346 | |||
| c6762deb08 | |||
|
|
4cb683581a | ||
|
|
4b0cc378f9 | ||
|
|
6e3339083c | ||
|
|
94d5eac08c | ||
|
|
72bcd414b6 | ||
|
|
47603a3ebe | ||
|
|
9fbd81bc25 | ||
|
|
9807e9dcc9 | ||
|
|
0576243aca | ||
|
|
9a0d5aa7d5 |
@@ -2,7 +2,7 @@
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-6 col-12">
|
||||
<img src="images/DreamShaper_v7_A_group_of_people_from_different_backgrounds_an_2.jpg" class="about-image img-fluid" alt="" />
|
||||
<img src="images/DreamShaper_v7_A_group_of_people_from_different_backgrounds_an_2.jpg" class="about-image img-fluid object-fit-cover" alt="" />
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6 col-12 mt-5 mt-lg-0">
|
||||
@@ -15,36 +15,68 @@
|
||||
<h3 class="pt-2 mb-3">A little bit about Mohammed</h3>
|
||||
|
||||
<p>
|
||||
👋 Greetings I'm Mohammed, a dedicated software engineer with a passion for creating innovative solutions.
|
||||
👋 Greetings! I'm Mohammed, a Results-oriented Senior Frontend Engineer with 5+ years of experience building enterprise-scale web applications (Banking, ERP, Legal), specializing in React, Next.js, Angular, and TypeScript.
|
||||
<br>
|
||||
<br>
|
||||
My journey in the field of Information Technology began at the Arab International University
|
||||
in 2016, where I pursued a Bachelor's Degree in Computer Software Engineering,
|
||||
graduating in 2021.
|
||||
<br>
|
||||
<h5> BPro Story </h5>
|
||||
Upon completion of my studies, I embarked on a project to develop an Enterprise Resource Planning (ERP) system. This
|
||||
comprehensive system encompasses seven core components: Inventory Management,
|
||||
Purchasing, Sales, Customer Relationship Management (CRM), Finance, Payments, and
|
||||
Resources
|
||||
<br>
|
||||
<h5> Dataline - Law Firm (Current) </h5>
|
||||
<strong>Frontend Developer (Full-time) | [31/08/2025 - Current] | Qatar</strong>
|
||||
<br>
|
||||
• Led the design and development of a full-scale law firm management system
|
||||
<br>
|
||||
• Built interactive dashboards, reusable CRUD templates, and automated reporting
|
||||
<br>
|
||||
• Implemented Azure AD authentication using MSAL
|
||||
<br>
|
||||
• Integrated Microsoft 365 services (SharePoint, Microsoft Graph)
|
||||
<br>
|
||||
• Designed role-based access control for sensitive legal data
|
||||
<br>
|
||||
• Managed CI/CD and production deployment using Firebase Hosting
|
||||
<br>
|
||||
<a href="https://dataline-qa.com/" target="_blank">Website: dataline-qa.com</a>
|
||||
<br>
|
||||
<br>
|
||||
<h5> Almuthafar Story </h5>
|
||||
For <a href="https://www.bayantechnologies.com/"> Bayan Digital Hub </a> (Kuwaiti AWS startup, Oracle Partner ): Develop a platform for
|
||||
managing and tracking law case processes, clients, lawyers, and the administration processes, producing
|
||||
the results as PDF reports, and making sure that the case processes run smoothly and
|
||||
organized.
|
||||
<h5> Easy-pay - ERP System </h5>
|
||||
<strong>Frontend Developer (Full-time) | [06/2024 - 06/2025] | Damascus</strong>
|
||||
<br>
|
||||
• Developed ERP features for reservations, invoicing, and inventory management
|
||||
<br>
|
||||
• Implemented government tax integration and financial reporting
|
||||
<br>
|
||||
• Built dashboards for sales, inventory, payments, and accounting logs
|
||||
<br>
|
||||
• Collaborated with backend teams to ensure data accuracy and consistency
|
||||
<br>
|
||||
<br>
|
||||
<h5> Big-dash Story </h5>
|
||||
Engaging in developing a comprehensive banking system ( for <a href="https://moneyout.com.tr"> Moneyout Elektronik Para ve
|
||||
Ödeme Hizmetleri A.Ş </a>) aimed at facilitating financial transactions across various branches,
|
||||
incorporating digital wallet functionalities, and supporting transactions executed in
|
||||
multiple currencies.
|
||||
<h5> Big-dash - Banking System </h5>
|
||||
<strong>Frontend Developer (Full-time) | [09/2023 - 11/2024] | Turkey</strong>
|
||||
<br>
|
||||
• Developed an enterprise banking system supporting multi-currency transactions and digital wallets
|
||||
<br>
|
||||
• Built user-friendly interfaces using Angular and Angular Material
|
||||
<br>
|
||||
• Managed complex application state using NgRx
|
||||
<br>
|
||||
• Implemented theme customization and reusable UI components
|
||||
<br>
|
||||
<a href="https://big-dash.tu" target="_blank">Website: big-dash.tu</a>
|
||||
<br>
|
||||
<br>
|
||||
<h5> Easy-pay Story </h5>
|
||||
For <a href="https://www.facebook.com/MONALISA.SYRIA"> Monalisa restaurant in Damascus </a>, the system includes managing reservations, tables,
|
||||
products, invoices, government tax integration, debits, and producing different types of reports like
|
||||
sales and logs of payments.
|
||||
<h5> Almuthafar - Law Office Management System </h5>
|
||||
<strong>Frontend Developer (Freelance) | [03/2023 - 06/2023] | Kuwait</strong>
|
||||
<br>
|
||||
For <a href="https://almuthafargroup.com/" target="_blank">Bayan Digital Hub</a> (Kuwaiti AWS startup, Oracle Partner): Developed a platform for managing and tracking law case processes, clients, lawyers, and the administration processes, producing the results as PDF reports, and making sure that the case processes run smoothly and organized.
|
||||
<br>
|
||||
<br>
|
||||
<h5> BPro - ERP System </h5>
|
||||
<strong>Frontend Developer (Full-time) | [03/2021 - 10/2023] | Dubai, UAE</strong>
|
||||
<br>
|
||||
Developed an Enterprise Resource Planning (ERP) system encompassing seven core components: Inventory Management, Purchasing, Sales, Customer Relationship Management (CRM), Finance, Payments, and Resources. Responsibilities included designing intuitive interfaces using the Antd UI library, ensuring secure financial calculations through Big.js library, and end-to-end testing utilizing Cypress.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
1
components/ad-placements.html
Normal file
1
components/ad-placements.html
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
37
components/ads.html
Normal file
37
components/ads.html
Normal file
@@ -0,0 +1,37 @@
|
||||
<!-- Vertical Ad Banner -->
|
||||
<div class="vertical-ad-banner">
|
||||
<div class="ad-content">
|
||||
<div class="ad-icon">
|
||||
<i class="bi bi-rocket-takeoff"></i>
|
||||
</div>
|
||||
<h4>Company</h4>
|
||||
<p>Transform Your Business with Our Solutions</p>
|
||||
<a href="#" class="ad-link">Explore Now <i class="bi bi-arrow-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Horizontal Ad Banner -->
|
||||
<div class="horizontal-ad-banner">
|
||||
<div class="ad-content">
|
||||
<div class="ad-icon">
|
||||
<i class="bi bi-graph-up-arrow"></i>
|
||||
</div>
|
||||
<div class="ad-text">
|
||||
<h4>Boost Your Growth</h4>
|
||||
<p>Partner with Company for Digital Excellence</p>
|
||||
</div>
|
||||
<a href="#" class="ad-link">Get Started <i class="bi bi-arrow-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Feature Ad Banner -->
|
||||
<div class="feature-ad-banner">
|
||||
<div class="ad-content">
|
||||
<div class="ad-icon">
|
||||
<i class="bi bi-shield-check"></i>
|
||||
</div>
|
||||
<h4>Secure Solutions</h4>
|
||||
<p>Trusted by Industry Leaders</p>
|
||||
<a href="#" class="ad-link">Learn More <i class="bi bi-arrow-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,29 +1,136 @@
|
||||
<section class="contact section-padding" id="section_5">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-lg-8 col-md-10 col-12 text-center">
|
||||
<div class="section-title-wrap d-flex justify-content-center align-items-center mb-5">
|
||||
<img src="images/happy-bearded-young-man.jpg" class="avatar-image img-fluid" alt="" />
|
||||
|
||||
<h2 class="text-white ms-4 mb-0">Contact Me</h2>
|
||||
<img src="images/white-desk-work-study-aesthetics.jpg" class="avatar-image img-fluid" alt="" />
|
||||
<h2 class="text-white ms-4 mb-0">Get In Touch</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-8 col-12 mx-auto">
|
||||
<div class="custom-form contact-form" action="#" method="post" role="form">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-lg-12 col-md-12 col-12">
|
||||
<div class="contact-wrapper">
|
||||
<div class="row">
|
||||
<!-- Contact Info Cards -->
|
||||
<div class="col-lg-4 col-md-12 col-12">
|
||||
<div class="contact-info-cards">
|
||||
<div class="contact-info-card">
|
||||
<div class="contact-info-icon">
|
||||
<i class="bi bi-geo-alt"></i>
|
||||
</div>
|
||||
<div class="contact-info-content">
|
||||
<h4>Location</h4>
|
||||
<p>Damascus, Syria</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="contact-info-card">
|
||||
<div class="contact-info-icon">
|
||||
<i class="bi bi-envelope"></i>
|
||||
</div>
|
||||
<div class="contact-info-content">
|
||||
<h4>Email</h4>
|
||||
<p><a href="mailto:mohammed.o.alyaseen@gmail.com">mohammed.o.alyaseen@gmail.com</a></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="contact-info-card">
|
||||
<div class="contact-info-icon">
|
||||
<i class="bi bi-telephone"></i>
|
||||
</div>
|
||||
<div class="contact-info-content">
|
||||
<h4>Phone</h4>
|
||||
<p><a href="tel:+963-962-469-482">+963-962-469-482</a></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="contact-info-card">
|
||||
<div class="contact-info-icon">
|
||||
<i class="bi bi-person"></i>
|
||||
</div>
|
||||
<div class="contact-info-content">
|
||||
<h4>Name</h4>
|
||||
<p>Mohammed Al-yaseen</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Company Ad -->
|
||||
<!-- <div class="tech-masters-ad">
|
||||
<div class="ad-content">
|
||||
<div class="ad-icon">
|
||||
<i class="bi bi-cpu"></i>
|
||||
</div>
|
||||
<h4>Company</h4>
|
||||
<p>Your Trusted Partner in Digital Innovation</p>
|
||||
<a href="#" class="ad-link">Learn More <i class="bi bi-arrow-right"></i></a>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<div class="contact-social">
|
||||
<h4>Follow Me</h4>
|
||||
<div class="social-icon">
|
||||
<ul class="list-inline">
|
||||
<li class="list-inline-item">
|
||||
<a href="https://www.linkedin.com/in/mohammed-al-yaseen-79b056161/" class="social-icon-link" target="_blank">
|
||||
<i class="bi bi-linkedin"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="list-inline-item">
|
||||
<a href="https://github.com/mohammed-alyaseen" class="social-icon-link" target="_blank">
|
||||
<i class="bi bi-github"></i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Contact Form -->
|
||||
<div class="col-lg-8 col-md-12 col-12">
|
||||
<div class="contact-form">
|
||||
<h3 class="form-title">Send Me a Message</h3>
|
||||
<form class="custom-form" action="#" method="post" role="form">
|
||||
<div class="row">
|
||||
<div class="col-lg-6 col-md-6 col-12">
|
||||
<input type="text" name="name" id="name" class="form-control" placeholder="Name" required="" />
|
||||
<div class="form-floating">
|
||||
<input type="text" name="name" id="name" class="form-control" placeholder="Name" required />
|
||||
<label for="name">Name</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6 col-md-6 col-12">
|
||||
<input type="email" name="email" id="email" pattern="[^ @]*@[^ @]*" class="form-control" placeholder="Email" required="" />
|
||||
<div class="form-floating">
|
||||
<input type="email" name="email" id="email" class="form-control" placeholder="Email" required />
|
||||
<label for="email">Email</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<textarea name="message" rows="6" class="form-control" id="message" placeholder="Message"></textarea>
|
||||
<div class="form-floating">
|
||||
<input type="text" name="subject" id="subject" class="form-control" placeholder="Subject" required />
|
||||
<label for="subject">Subject</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="form-control">Send Message</button>
|
||||
<div class="col-12">
|
||||
<div class="form-floating">
|
||||
<textarea name="message" id="message" class="form-control" placeholder="Message" required></textarea>
|
||||
<label for="message">Message</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<button type="submit" class="custom-btn custom-border-btn">
|
||||
<span>Send Message</span>
|
||||
<i class="bi bi-arrow-right"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -30,8 +30,8 @@
|
||||
<div class="profile-info-item">
|
||||
<span class="profile-small-title">Email</span>
|
||||
<span class="profile-value">
|
||||
<a href="mailto:mohammed.alyaseen.it@gmail.com" class="profile-link">
|
||||
<i class="bi bi-envelope-fill me-2"></i>mohammed.alyaseen.it@gmail.com
|
||||
<a href="mailto:mohammed.o.alyaseen@gmail.com" class="profile-link">
|
||||
<i class="bi bi-envelope-fill me-2"></i>mohammed.o.alyaseen@gmail.com
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
@@ -39,7 +39,16 @@
|
||||
<div class="profile-info-item">
|
||||
<span class="profile-small-title">Location</span>
|
||||
<span class="profile-value">
|
||||
<i class="bi bi-geo-alt-fill me-2"></i>Istanbul, Turkey
|
||||
<i class="bi bi-geo-alt-fill me-2"></i>Damascus, Syria
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="profile-info-item">
|
||||
<span class="profile-small-title">Website</span>
|
||||
<span class="profile-value">
|
||||
<a href="https://tech-masters.guru/portfolio/mohammed-alyaseen" class="profile-link" target="_blank">
|
||||
<i class="bi bi-globe me-2"></i>tech-masters.guru/portfolio/mohammed-alyaseen
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -64,9 +73,9 @@
|
||||
<div class="col-lg-6 col-12 mt-5 mt-lg-0">
|
||||
<div class="about-thumb">
|
||||
<div class="row">
|
||||
<div class="col-lg-6 col-6 featured-border-bottom py-3">
|
||||
<div class="col-lg-6 col-6 featured-border-bottom pb-4">
|
||||
<div class="featured-item">
|
||||
<strong class="featured-numbers">4+</strong>
|
||||
<strong class="featured-numbers">5+</strong>
|
||||
<p class="featured-text">Years of Experience</p>
|
||||
<div class="featured-icon">
|
||||
<i class="bi bi-briefcase-fill"></i>
|
||||
@@ -74,7 +83,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6 col-6 featured-border-start featured-border-bottom ps-5 py-3">
|
||||
<div class="col-lg-6 col-6 featured-border-start featured-border-bottom pb-4">
|
||||
<div class="featured-item">
|
||||
<strong class="featured-numbers">5+</strong>
|
||||
<p class="featured-text">Happy Customers</p>
|
||||
@@ -94,7 +103,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6 col-6 featured-border-start ps-5 pt-4">
|
||||
<div class="col-lg-6 col-6 featured-border-start pt-4">
|
||||
<div class="featured-item">
|
||||
<strong class="featured-numbers">7+</strong>
|
||||
<p class="featured-text">Digital Awards</p>
|
||||
|
||||
@@ -1,14 +1,94 @@
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12 col-12">
|
||||
<div class="copyright-text-wrap">
|
||||
<p class="mb-0">
|
||||
<span class="copyright-text">Copyright © 2024 <a href="#">Mohammed</a> Company. All rights reserved.</span>
|
||||
<span class="copyright-text">Design: <a href="https://templatemo.com" target="_blank">TemplateMo</a></span>
|
||||
<!-- Footer Brand & Description -->
|
||||
<div class="col-lg-4 col-md-6 col-12 mb-4 mb-lg-0">
|
||||
<div class="footer-brand">
|
||||
<h3 class="footer-brand-name">Mohammed Al-yaseen</h3>
|
||||
<p class="footer-description">
|
||||
Senior Frontend Developer passionate about building exceptional user experiences
|
||||
and scalable web applications.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Quick Links -->
|
||||
<div class="col-lg-2 col-md-6 col-12 mb-4 mb-lg-0">
|
||||
<h4 class="footer-heading">Quick Links</h4>
|
||||
<ul class="footer-menu">
|
||||
<li class="footer-menu-item">
|
||||
<a href="#section_1" class="footer-menu-link click-scroll">Home</a>
|
||||
</li>
|
||||
<li class="footer-menu-item">
|
||||
<a href="#section_2" class="footer-menu-link click-scroll">About</a>
|
||||
</li>
|
||||
<li class="footer-menu-item">
|
||||
<a href="#section_3" class="footer-menu-link click-scroll">Services</a>
|
||||
</li>
|
||||
<li class="footer-menu-item">
|
||||
<a href="#section_4" class="footer-menu-link click-scroll">Projects</a>
|
||||
</li>
|
||||
<li class="footer-menu-item">
|
||||
<a href="#section_5" class="footer-menu-link click-scroll">Contact</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- Contact Info -->
|
||||
<div class="col-lg-3 col-md-6 col-12 mb-4 mb-lg-0">
|
||||
<h4 class="footer-heading">Get In Touch</h4>
|
||||
<ul class="footer-contact">
|
||||
<li class="footer-contact-item">
|
||||
<i class="bi bi-envelope-fill"></i>
|
||||
<a href="mailto:mohammed.o.alyaseen@gmail.com">mohammed.o.alyaseen@gmail.com</a>
|
||||
</li>
|
||||
<li class="footer-contact-item">
|
||||
<i class="bi bi-telephone-fill"></i>
|
||||
<a href="tel:+963-962-469-482">+963-962-469-482</a>
|
||||
</li>
|
||||
<li class="footer-contact-item">
|
||||
<i class="bi bi-geo-alt-fill"></i>
|
||||
<span>Damascus, Syria</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- Social Media -->
|
||||
<div class="col-lg-3 col-md-6 col-12">
|
||||
<h4 class="footer-heading">Follow Me</h4>
|
||||
<div class="footer-social">
|
||||
<ul class="social-icon">
|
||||
<li class="social-icon-item">
|
||||
<a href="https://www.linkedin.com/in/mohammed-al-yaseen-79b056161/"
|
||||
class="social-icon-link"
|
||||
target="_blank"
|
||||
aria-label="LinkedIn">
|
||||
<i class="bi bi-linkedin"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="social-icon-item">
|
||||
<a href="https://github.com/mohammed-alyaseen"
|
||||
class="social-icon-link"
|
||||
target="_blank"
|
||||
aria-label="GitHub">
|
||||
<i class="bi bi-github"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="social-icon-item">
|
||||
<a href="https://www.facebook.com/profile.php?id=100010330412662"
|
||||
class="social-icon-link"
|
||||
target="_blank"
|
||||
aria-label="Facebook">
|
||||
<i class="bi bi-facebook"></i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Copyright -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
@@ -20,7 +20,7 @@
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<a href="index.html" class="navbar-brand mx-auto mx-lg-0">First</a>
|
||||
<a href="index.html" class="navbar-brand mx-auto mx-lg-0">M</a>
|
||||
|
||||
<div class="d-flex align-items-center d-lg-none">
|
||||
<i class="navbar-icon bi-telephone-plus me-3"></i>
|
||||
|
||||
@@ -1,27 +1,25 @@
|
||||
<section class="hero d-flex justify-content-center align-items-center" id="section_1">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-7 col-12">
|
||||
<div class="col-lg-12 col-12">
|
||||
<div class="hero-text">
|
||||
<div class="hero-title-wrap d-flex align-items-center mb-4">
|
||||
<img src="images/happy-bearded-young-man.jpg" class="avatar-image avatar-image-large img-fluid" alt="" />
|
||||
<h5 class="hero-title ms-3 mb-0">Hello friend!</h5>
|
||||
<div class="hero-image-wrapper position-relative me-4">
|
||||
<img src="images/happy-bearded-young-man.jpg" class="hero-image img-fluid object-fit-cover" alt="" />
|
||||
</div>
|
||||
<h5 class="hero-title mb-0">Hello friend!</h5>
|
||||
</div>
|
||||
|
||||
<h2 class="mb-4">I'm available for freelance work.</h2>
|
||||
<h2 class="mb-4">Senior Frontend Engineer with 5+ years of experience</h2>
|
||||
<p class="mb-4">
|
||||
<a class="custom-btn btn custom-link" href="#section_2">Let's begin</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-5 col-12 position-relative">
|
||||
<img src="images/National Geographic on Instagram Photo by Stephe.jpg" class="hero-image img-fluid" alt="" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 320">
|
||||
<path fill="#535da1" fill-opacity="1" d="M0,160L24,160C48,160,96,160,144,138.7C192,117,240,75,288,64C336,53,384,75,432,106.7C480,139,528,181,576,208C624,235,672,245,720,240C768,235,816,213,864,186.7C912,160,960,128,1008,133.3C1056,139,1104,181,1152,202.7C1200,224,1248,224,1296,197.3C1344,171,1392,117,1416,90.7L1440,64L1440,0L1416,0C1392,0,1344,0,1296,0C1248,0,1200,0,1152,0C1104,0,1056,0,1008,0C960,0,912,0,864,0C816,0,768,0,720,0C672,0,624,0,576,0C528,0,480,0,432,0C384,0,336,0,288,0C240,0,192,0,144,0C96,0,48,0,24,0L0,0Z"></path>
|
||||
<path fill="#6c757d" fill-opacity="1" d="M0,160L24,160C48,160,96,160,144,138.7C192,117,240,75,288,64C336,53,384,75,432,106.7C480,139,528,181,576,208C624,235,672,245,720,240C768,235,816,213,864,186.7C912,160,960,128,1008,133.3C1056,139,1104,181,1152,202.7C1200,224,1248,224,1296,197.3C1344,171,1392,117,1416,90.7L1440,64L1440,0L1416,0C1392,0,1344,0,1296,0C1248,0,1200,0,1152,0C1104,0,1056,0,1008,0C960,0,912,0,864,0C816,0,768,0,720,0C672,0,624,0,576,0C528,0,480,0,432,0C384,0,336,0,288,0C240,0,192,0,144,0C96,0,48,0,24,0L0,0Z"></path>
|
||||
</svg>
|
||||
</section>
|
||||
@@ -2,21 +2,17 @@
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-md-8 col-12 ms-auto">
|
||||
<div
|
||||
class="section-title-wrap d-flex justify-content-center align-items-center mb-4"
|
||||
>
|
||||
<img
|
||||
src="images/white-desk-work-study-aesthetics.jpg"
|
||||
class="avatar-image img-fluid"
|
||||
alt=""
|
||||
/>
|
||||
|
||||
<div class="section-title-wrap d-flex justify-content-center align-items-center mb-4">
|
||||
<img src="images/white-desk-work-study-aesthetics.jpg" class="avatar-image img-fluid" alt="" />
|
||||
<h2 class="text-white ms-4 mb-0">Projects</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="clearfix"></div>
|
||||
|
||||
<div class="row">
|
||||
<!-- Law Office Login -->
|
||||
<div class="col-lg-4 col-md-6 col-12">
|
||||
<div class="projects-thumb">
|
||||
<div class="projects-info">
|
||||
@@ -34,6 +30,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Easy-pay Login -->
|
||||
<div class="col-lg-4 col-md-6 col-12">
|
||||
<div class="projects-thumb">
|
||||
<div class="projects-info">
|
||||
@@ -51,6 +48,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Cloths Ecommerce -->
|
||||
<div class="col-lg-4 col-md-6 col-12">
|
||||
<div class="projects-thumb">
|
||||
<div class="projects-info">
|
||||
@@ -68,116 +66,91 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Law Office -->
|
||||
<div class="col-lg-4 col-md-6 col-12">
|
||||
<div class="projects-thumb">
|
||||
<div class="projects-info">
|
||||
<small class="projects-tag">Website</small>
|
||||
<h3 class="projects-title">Law Office</h3>
|
||||
</div>
|
||||
<a
|
||||
href="images/projects/law-office-home.png"
|
||||
class="popup-image"
|
||||
>
|
||||
<img
|
||||
src="images/projects/law-office-home.png"
|
||||
class="projects-image img-fluid"
|
||||
alt="law office"
|
||||
/>
|
||||
<a href="images/projects/law-office-home.png" class="popup-image">
|
||||
<img src="images/projects/law-office-home.png" class="projects-image img-fluid" alt="law office" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- SVU E-commerce -->
|
||||
<div class="col-lg-4 col-md-6 col-12">
|
||||
<div class="projects-thumb">
|
||||
<div class="projects-info">
|
||||
<small class="projects-tag">Website</small>
|
||||
<h3 class="projects-title">SVU E-commerce</h3>
|
||||
</div>
|
||||
<a
|
||||
href="images/projects/svu-hw.png"
|
||||
class="popup-image"
|
||||
>
|
||||
<img
|
||||
src="images/projects/svu-hw.png"
|
||||
class="projects-image img-fluid"
|
||||
alt=""
|
||||
/>
|
||||
<a href="images/projects/svu-hw.png" class="popup-image">
|
||||
<img src="images/projects/svu-hw.png" class="projects-image img-fluid" alt="" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- NANS's CRM -->
|
||||
<div class="col-lg-4 col-md-6 col-12">
|
||||
<div class="projects-thumb">
|
||||
<div class="projects-info">
|
||||
<small class="projects-tag">Website</small>
|
||||
<h3 class="projects-title">NANS's CRM</h3>
|
||||
</div>
|
||||
<a
|
||||
href="images/projects/nanas-main-dashboard.png"
|
||||
class="popup-image"
|
||||
>
|
||||
<img
|
||||
src="images/projects/nanas-main-dashboard.png"
|
||||
class="projects-image img-fluid"
|
||||
alt=""
|
||||
/>
|
||||
<a href="images/projects/nanas-main-dashboard.png" class="popup-image">
|
||||
<img src="images/projects/nanas-main-dashboard.png" class="projects-image img-fluid" alt="" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Majsin's Restaurant -->
|
||||
<div class="col-lg-4 col-md-6 col-12">
|
||||
<div class="projects-thumb">
|
||||
<div class="projects-info">
|
||||
<small class="projects-tag">Website</small>
|
||||
<h3 class="projects-title">Majsin's Restaurant</h3>
|
||||
</div>
|
||||
<a
|
||||
href="images/projects/majsin-dashborad.png"
|
||||
class="popup-image"
|
||||
>
|
||||
<img
|
||||
src="images/projects/majsin-dashborad.png"
|
||||
class="projects-image img-fluid"
|
||||
alt=""
|
||||
/>
|
||||
<a href="images/projects/majsin-dashborad.png" class="popup-image">
|
||||
<img src="images/projects/majsin-dashborad.png" class="projects-image img-fluid" alt="" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- BPro's ERP System -->
|
||||
<div class="col-lg-4 col-md-6 col-12">
|
||||
<div class="projects-thumb">
|
||||
<div class="projects-info">
|
||||
<small class="projects-tag">Website</small>
|
||||
<h3 class="projects-title">BPro's ERP System</h3>
|
||||
</div>
|
||||
<a href="images/projects/bpro-erp.jpg" class="popup-image">
|
||||
<img
|
||||
src="images/projects/bpro-erp.jpg"
|
||||
class="projects-image img-fluid"
|
||||
alt=""
|
||||
/>
|
||||
<a href="images/projects/bpro-erp.png" class="popup-image">
|
||||
<img src="images/projects/bpro-erp.png" class="projects-image img-fluid" alt="" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Moneyout Bank -->
|
||||
<div class="col-lg-4 col-md-6 col-12">
|
||||
<div class="projects-thumb">
|
||||
<div class="projects-info">
|
||||
<small class="projects-tag">Website</small>
|
||||
<h3 class="projects-title">Moneyout Bank</h3>
|
||||
</div>
|
||||
<a
|
||||
href="images/projects/moneyout.png"
|
||||
class="popup-image"
|
||||
>
|
||||
<img
|
||||
src="images/projects/moneyout.png"
|
||||
class="projects-image img-fluid"
|
||||
alt=""
|
||||
/>
|
||||
<a href="images/projects/moneyout.png" class="popup-image">
|
||||
<img src="images/projects/moneyout.png" class="projects-image img-fluid" alt="" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Lightbox -->
|
||||
<div class="lightbox">
|
||||
<div class="lightbox-content">
|
||||
<img src="" alt="" class="lightbox-image">
|
||||
<span class="lightbox-close">×</span>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
Before Width: | Height: | Size: 226 KiB After Width: | Height: | Size: 1.7 MiB |
|
Before Width: | Height: | Size: 2.1 MiB After Width: | Height: | Size: 2.1 MiB |
115
index.html
115
index.html
@@ -23,31 +23,91 @@
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- Include Header -->
|
||||
<!-- Header -->
|
||||
<div id="header"></div>
|
||||
|
||||
<main>
|
||||
<!-- Include Hero Section -->
|
||||
<div id="hero"></div>
|
||||
<!-- Hero Section -->
|
||||
<section id="hero"></section>
|
||||
|
||||
<!-- Include About Section -->
|
||||
<div id="about"></div>
|
||||
<!-- About Section -->
|
||||
<section id="about"></section>
|
||||
<!-- <aside class="about-ad">
|
||||
<div class="horizontal-ad-banner">
|
||||
<div class="ad-content">
|
||||
<div class="ad-icon">
|
||||
<i class="bi bi-graph-up-arrow"></i>
|
||||
</div>
|
||||
<div class="ad-text">
|
||||
<h4>Boost Your Growth</h4>
|
||||
<p>Partner with Company for Digital Excellence</p>
|
||||
</div>
|
||||
<a href="#" class="ad-link"
|
||||
>Get Started <i class="bi bi-arrow-right"></i
|
||||
></a>
|
||||
</div>
|
||||
</div>
|
||||
</aside> -->
|
||||
|
||||
<!-- Include Featured Section -->
|
||||
<div id="featured"></div>
|
||||
<!-- Featured Section -->
|
||||
<section id="featured"></section>
|
||||
<!-- <aside class="featured-ad">
|
||||
<div class="feature-ad-banner">
|
||||
<div class="ad-content">
|
||||
<div class="ad-icon">
|
||||
<i class="bi bi-shield-check"></i>
|
||||
</div>
|
||||
<h4>Secure Solutions</h4>
|
||||
<p>Trusted by Industry Leaders</p>
|
||||
<a href="#" class="ad-link"
|
||||
>Learn More <i class="bi bi-arrow-right"></i
|
||||
></a>
|
||||
</div>
|
||||
</div>
|
||||
</aside> -->
|
||||
|
||||
<!-- Include Projects Section -->
|
||||
<div id="projects"></div>
|
||||
<!-- Projects Section -->
|
||||
<section id="projects"></section>
|
||||
<!-- <aside class="projects-ad">
|
||||
<div class="horizontal-ad-banner">
|
||||
<div class="ad-content">
|
||||
<div class="ad-icon">
|
||||
<i class="bi bi-lightning-charge"></i>
|
||||
</div>
|
||||
<div class="ad-text">
|
||||
<h4>Fast Development</h4>
|
||||
<p>Accelerate Your Project Timeline</p>
|
||||
</div>
|
||||
<a href="#" class="ad-link"
|
||||
>Start Now <i class="bi bi-arrow-right"></i
|
||||
></a>
|
||||
</div>
|
||||
</div>
|
||||
</aside> -->
|
||||
|
||||
<!-- Include Services Section -->
|
||||
<div id="services"></div>
|
||||
<!-- Services Section -->
|
||||
<section id="services"></section>
|
||||
<!-- <aside class="services-ad">
|
||||
<div class="feature-ad-banner">
|
||||
<div class="ad-content">
|
||||
<div class="ad-icon">
|
||||
<i class="bi bi-gear"></i>
|
||||
</div>
|
||||
<h4>Premium Services</h4>
|
||||
<p>Expert Solutions for Your Business</p>
|
||||
<a href="#" class="ad-link"
|
||||
>Discover More <i class="bi bi-arrow-right"></i
|
||||
></a>
|
||||
</div>
|
||||
</div>
|
||||
</aside> -->
|
||||
|
||||
<!-- Include Contact Section -->
|
||||
<div id="contact"></div>
|
||||
<!-- Contact Section -->
|
||||
<section id="contact"></section>
|
||||
</main>
|
||||
|
||||
<!-- Include Footer -->
|
||||
<div id="footer"></div>
|
||||
<!-- Footer -->
|
||||
<footer id="footer"></footer>
|
||||
|
||||
<!-- JAVASCRIPT FILES -->
|
||||
<script src="js/jquery.min.js"></script>
|
||||
@@ -57,19 +117,26 @@
|
||||
<script src="js/jquery.magnific-popup.min.js"></script>
|
||||
<script src="js/magnific-popup-options.js"></script>
|
||||
<script src="js/custom.js"></script>
|
||||
<script src="js/cat-animation.js"></script>
|
||||
|
||||
<!-- Load Components -->
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
// Load components
|
||||
$("#header").load("components/header.html");
|
||||
$("#hero").load("components/hero.html");
|
||||
$("#about").load("components/about.html");
|
||||
$("#featured").load("components/featured.html");
|
||||
$("#services").load("components/services.html");
|
||||
$("#projects").load("components/projects.html");
|
||||
$("#contact").load("components/contact.html");
|
||||
$("#footer").load("components/footer.html");
|
||||
const components = {
|
||||
header: "components/header.html",
|
||||
hero: "components/hero.html",
|
||||
about: "components/about.html",
|
||||
featured: "components/featured.html",
|
||||
services: "components/services.html",
|
||||
projects: "components/projects.html",
|
||||
contact: "components/contact.html",
|
||||
footer: "components/footer.html",
|
||||
};
|
||||
|
||||
// Load all components
|
||||
Object.entries(components).forEach(([id, path]) => {
|
||||
$(`#${id}`).load(path);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
279
js/cat-animation.js
Normal file
279
js/cat-animation.js
Normal file
@@ -0,0 +1,279 @@
|
||||
class Cat {
|
||||
constructor(canvas, x, y, scale = 1, color = 'default') {
|
||||
this.canvas = canvas;
|
||||
this.ctx = canvas.getContext('2d');
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.scale = scale;
|
||||
this.color = color;
|
||||
this.direction = 1;
|
||||
this.speed = 2;
|
||||
this.frame = 0;
|
||||
this.frameCount = 8;
|
||||
this.frameWidth = 64;
|
||||
this.frameHeight = 64;
|
||||
this.isPaused = false;
|
||||
this.pauseTimer = 0;
|
||||
this.pauseDuration = 0;
|
||||
this.pawPrints = [];
|
||||
this.lastPawPrint = 0;
|
||||
this.lastMeow = 0;
|
||||
this.meowCooldown = 3000; // 3 seconds between meows
|
||||
|
||||
// Initialize sounds with error handling
|
||||
this.sounds = {
|
||||
meow: null,
|
||||
purr: null,
|
||||
paw: null
|
||||
};
|
||||
|
||||
// Create audio elements with error handling
|
||||
try {
|
||||
this.sounds.meow = new Audio('sounds/meow.wav');
|
||||
|
||||
// Set volume for each sound
|
||||
this.sounds.meow.volume = 0.05;
|
||||
this.sounds.paw.volume = 0;
|
||||
|
||||
// Add error handling for each sound
|
||||
Object.entries(this.sounds).forEach(([key, sound]) => {
|
||||
if (sound) {
|
||||
sound.addEventListener('error', (e) => {
|
||||
console.warn(`Error loading ${key} sound:`, e);
|
||||
});
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn('Error initializing sounds:', error);
|
||||
}
|
||||
}
|
||||
|
||||
playSound(soundName) {
|
||||
try {
|
||||
const sound = this.sounds[soundName];
|
||||
if (sound) {
|
||||
sound.currentTime = 0;
|
||||
sound.play().catch(error => {
|
||||
console.warn(`Error playing ${soundName} sound:`, error);
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
console.warn(`Error playing ${soundName} sound:`, error);
|
||||
}
|
||||
}
|
||||
|
||||
update() {
|
||||
if (this.isPaused) {
|
||||
this.pauseTimer++;
|
||||
if (this.pauseTimer >= this.pauseDuration) {
|
||||
this.isPaused = false;
|
||||
this.pauseTimer = 0;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// Random pause and meow
|
||||
if (Math.random() < 0.005) {
|
||||
this.isPaused = true;
|
||||
this.pauseDuration = Math.random() * 100 + 100;
|
||||
|
||||
// Random meow during pause
|
||||
if (Date.now() - this.lastMeow > this.meowCooldown) {
|
||||
this.playSound('meow');
|
||||
this.lastMeow = Date.now();
|
||||
}
|
||||
}
|
||||
|
||||
// Update position
|
||||
this.x += this.speed * this.direction;
|
||||
|
||||
// Change direction at edges
|
||||
if (this.x >= this.canvas.width - this.frameWidth * this.scale) {
|
||||
this.direction = -1;
|
||||
this.playSound('paw');
|
||||
} else if (this.x <= 0) {
|
||||
this.direction = 1;
|
||||
this.playSound('paw');
|
||||
}
|
||||
|
||||
// Update animation frame
|
||||
this.frame = (this.frame + 0.2) % this.frameCount;
|
||||
|
||||
// Add paw prints with sound
|
||||
if (Date.now() - this.lastPawPrint > 200) {
|
||||
this.addPawPrint();
|
||||
this.lastPawPrint = Date.now();
|
||||
// Play paw sound occasionally
|
||||
if (Math.random() < 0.3) {
|
||||
this.playSound('paw');
|
||||
}
|
||||
}
|
||||
|
||||
// Update paw prints
|
||||
this.pawPrints = this.pawPrints.filter(print => {
|
||||
print.opacity -= 0.02;
|
||||
return print.opacity > 0;
|
||||
});
|
||||
}
|
||||
|
||||
draw() {
|
||||
// Draw paw prints
|
||||
this.pawPrints.forEach(print => {
|
||||
this.ctx.globalAlpha = print.opacity;
|
||||
this.ctx.fillStyle = '#000';
|
||||
this.ctx.beginPath();
|
||||
this.ctx.arc(print.x, print.y, 3, 0, Math.PI * 2);
|
||||
this.ctx.fill();
|
||||
});
|
||||
this.ctx.globalAlpha = 1;
|
||||
|
||||
// Draw cat
|
||||
this.ctx.save();
|
||||
this.ctx.translate(this.x, this.y);
|
||||
this.ctx.scale(this.direction * this.scale, this.scale);
|
||||
|
||||
// Draw cat body
|
||||
this.ctx.fillStyle = this.color === 'default' ? '#666' :
|
||||
this.color === 'orange' ? '#FFA500' : '#000';
|
||||
|
||||
// Body
|
||||
this.ctx.beginPath();
|
||||
this.ctx.ellipse(32, 40, 20, 15, 0, 0, Math.PI * 2);
|
||||
this.ctx.fill();
|
||||
|
||||
// Head
|
||||
this.ctx.beginPath();
|
||||
this.ctx.arc(15, 35, 12, 0, Math.PI * 2);
|
||||
this.ctx.fill();
|
||||
|
||||
// Ears
|
||||
this.ctx.beginPath();
|
||||
this.ctx.moveTo(8, 28);
|
||||
this.ctx.lineTo(5, 20);
|
||||
this.ctx.lineTo(12, 28);
|
||||
this.ctx.fill();
|
||||
|
||||
this.ctx.beginPath();
|
||||
this.ctx.moveTo(22, 28);
|
||||
this.ctx.lineTo(25, 20);
|
||||
this.ctx.lineTo(18, 28);
|
||||
this.ctx.fill();
|
||||
|
||||
// Tail
|
||||
this.ctx.beginPath();
|
||||
this.ctx.moveTo(52, 40);
|
||||
this.ctx.quadraticCurveTo(60, 30, 65, 40);
|
||||
this.ctx.strokeStyle = this.ctx.fillStyle;
|
||||
this.ctx.lineWidth = 4;
|
||||
this.ctx.stroke();
|
||||
|
||||
// Legs (animated)
|
||||
const legOffset = Math.sin(this.frame * 0.5) * 5;
|
||||
this.ctx.beginPath();
|
||||
this.ctx.moveTo(25, 55);
|
||||
this.ctx.lineTo(25, 55 + legOffset);
|
||||
this.ctx.moveTo(35, 55);
|
||||
this.ctx.lineTo(35, 55 - legOffset);
|
||||
this.ctx.moveTo(45, 55);
|
||||
this.ctx.lineTo(45, 55 + legOffset);
|
||||
this.ctx.strokeStyle = this.ctx.fillStyle;
|
||||
this.ctx.lineWidth = 3;
|
||||
this.ctx.stroke();
|
||||
|
||||
this.ctx.restore();
|
||||
}
|
||||
|
||||
addPawPrint() {
|
||||
const offset = this.direction === 1 ? 20 : -20;
|
||||
this.pawPrints.push({
|
||||
x: this.x + offset,
|
||||
y: this.y + this.frameHeight * this.scale - 5,
|
||||
opacity: 0.5
|
||||
});
|
||||
}
|
||||
|
||||
isPointInside(x, y) {
|
||||
return x >= this.x &&
|
||||
x <= this.x + this.frameWidth * this.scale &&
|
||||
y >= this.y &&
|
||||
y <= this.y + this.frameHeight * this.scale;
|
||||
}
|
||||
|
||||
interact(x, y) {
|
||||
if (this.isPointInside(x, y)) {
|
||||
this.isPaused = true;
|
||||
this.pauseDuration = 100;
|
||||
|
||||
// Play purr sound when petted
|
||||
this.playSound('purr');
|
||||
|
||||
// Occasionally meow when petted
|
||||
if (Math.random() < 0.3 && Date.now() - this.lastMeow > this.meowCooldown) {
|
||||
this.playSound('meow');
|
||||
this.lastMeow = Date.now();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Initialize cat animation
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const container = document.createElement('div');
|
||||
container.id = 'cat-container';
|
||||
container.style.cssText = `
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100px;
|
||||
pointer-events: none;
|
||||
z-index: 9999;
|
||||
`;
|
||||
document.body.appendChild(container);
|
||||
|
||||
const canvas = document.createElement('canvas');
|
||||
canvas.width = window.innerWidth;
|
||||
canvas.height = 100;
|
||||
container.appendChild(canvas);
|
||||
|
||||
const ctx = canvas.getContext('2d');
|
||||
const cats = [
|
||||
new Cat(canvas, 0, 20, 1, 'default'),
|
||||
new Cat(canvas, 200, 10, 0.8, 'orange'),
|
||||
new Cat(canvas, 400, 30, 1.2, 'black')
|
||||
];
|
||||
|
||||
// Handle window resize
|
||||
window.addEventListener('resize', () => {
|
||||
canvas.width = window.innerWidth;
|
||||
});
|
||||
|
||||
// Handle mouse interaction
|
||||
canvas.style.pointerEvents = 'auto';
|
||||
canvas.addEventListener('click', (e) => {
|
||||
const rect = canvas.getBoundingClientRect();
|
||||
const x = e.clientX - rect.left;
|
||||
const y = e.clientY - rect.top;
|
||||
|
||||
cats.forEach(cat => {
|
||||
cat.interact(x, y);
|
||||
});
|
||||
});
|
||||
|
||||
// Animation loop
|
||||
function animate() {
|
||||
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
||||
|
||||
cats.forEach(cat => {
|
||||
cat.update();
|
||||
cat.draw();
|
||||
});
|
||||
|
||||
requestAnimationFrame(animate);
|
||||
}
|
||||
|
||||
animate();
|
||||
});
|
||||
@@ -5,7 +5,9 @@ var sectionArray = [1, 2, 3, 4, 5];
|
||||
|
||||
$.each(sectionArray, function (index, value) {
|
||||
$(document).scroll(function () {
|
||||
var offsetSection = $("#" + "section_" + value).offset().top - 90;
|
||||
var section = $("#" + "section_" + value);
|
||||
if (section.length) { // Check if section exists
|
||||
var offsetSection = section.offset().top - 90;
|
||||
var docScroll = $(document).scrollTop();
|
||||
var docScroll1 = docScroll + 1;
|
||||
|
||||
@@ -15,12 +17,15 @@ $.each(sectionArray, function (index, value) {
|
||||
$(".navbar-nav .nav-item .nav-link").eq(index).addClass("active");
|
||||
$(".navbar-nav .nav-item .nav-link").eq(index).removeClass("inactive");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$(".click-scroll")
|
||||
.eq(index)
|
||||
.click(function (e) {
|
||||
var offsetClick = $("#" + "section_" + value).offset().top - 90;
|
||||
var section = $("#" + "section_" + value);
|
||||
if (section.length) { // Check if section exists
|
||||
var offsetClick = section.offset().top - 90;
|
||||
e.preventDefault();
|
||||
$("html, body").animate(
|
||||
{
|
||||
@@ -28,6 +33,7 @@ $.each(sectionArray, function (index, value) {
|
||||
},
|
||||
300
|
||||
);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -77,6 +77,8 @@
|
||||
const lightboxClose = document.querySelector('.lightbox-close');
|
||||
const projectImages = document.querySelectorAll('.popup-image');
|
||||
|
||||
// Only initialize lightbox if elements exist
|
||||
if (lightbox && lightboxImage && lightboxClose && projectImages.length > 0) {
|
||||
projectImages.forEach(image => {
|
||||
image.addEventListener('click', (e) => {
|
||||
e.preventDefault();
|
||||
@@ -109,6 +111,7 @@
|
||||
document.body.style.overflow = '';
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Sticky Navigation
|
||||
$(window).on('scroll', function() {
|
||||
|
||||
BIN
sounds/meow.wav
Normal file
BIN
sounds/meow.wav
Normal file
Binary file not shown.
1
sounds/paw.mp3
Normal file
1
sounds/paw.mp3
Normal file
@@ -0,0 +1 @@
|
||||
404: Not Found
|
||||
BIN
sounds/paw.wav
Normal file
BIN
sounds/paw.wav
Normal file
Binary file not shown.
Reference in New Issue
Block a user