Compare commits
13 Commits
595a1e6bc5
...
master
| 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="container">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-6 col-12">
|
<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>
|
||||||
|
|
||||||
<div class="col-lg-6 col-12 mt-5 mt-lg-0">
|
<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>
|
<h3 class="pt-2 mb-3">A little bit about Mohammed</h3>
|
||||||
|
|
||||||
<p>
|
<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
|
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,
|
in 2016, where I pursued a Bachelor's Degree in Computer Software Engineering,
|
||||||
graduating in 2021.
|
graduating in 2021.
|
||||||
<br>
|
<br>
|
||||||
<h5> BPro Story </h5>
|
<br>
|
||||||
Upon completion of my studies, I embarked on a project to develop an Enterprise Resource Planning (ERP) system. This
|
<h5> Dataline - Law Firm (Current) </h5>
|
||||||
comprehensive system encompasses seven core components: Inventory Management,
|
<strong>Frontend Developer (Full-time) | [31/08/2025 - Current] | Qatar</strong>
|
||||||
Purchasing, Sales, Customer Relationship Management (CRM), Finance, Payments, and
|
<br>
|
||||||
Resources
|
• 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>
|
||||||
<br>
|
<br>
|
||||||
<h5> Almuthafar Story </h5>
|
<h5> Easy-pay - ERP System </h5>
|
||||||
For <a href="https://www.bayantechnologies.com/"> Bayan Digital Hub </a> (Kuwaiti AWS startup, Oracle Partner ): Develop a platform for
|
<strong>Frontend Developer (Full-time) | [06/2024 - 06/2025] | Damascus</strong>
|
||||||
managing and tracking law case processes, clients, lawyers, and the administration processes, producing
|
<br>
|
||||||
the results as PDF reports, and making sure that the case processes run smoothly and
|
• Developed ERP features for reservations, invoicing, and inventory management
|
||||||
organized.
|
<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>
|
||||||
<br>
|
<br>
|
||||||
<h5> Big-dash Story </h5>
|
<h5> Big-dash - Banking System </h5>
|
||||||
Engaging in developing a comprehensive banking system ( for <a href="https://moneyout.com.tr"> Moneyout Elektronik Para ve
|
<strong>Frontend Developer (Full-time) | [09/2023 - 11/2024] | Turkey</strong>
|
||||||
Ödeme Hizmetleri A.Ş </a>) aimed at facilitating financial transactions across various branches,
|
<br>
|
||||||
incorporating digital wallet functionalities, and supporting transactions executed in
|
• Developed an enterprise banking system supporting multi-currency transactions and digital wallets
|
||||||
multiple currencies.
|
<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>
|
||||||
<br>
|
<br>
|
||||||
<h5> Easy-pay Story </h5>
|
<h5> Almuthafar - Law Office Management System </h5>
|
||||||
For <a href="https://www.facebook.com/MONALISA.SYRIA"> Monalisa restaurant in Damascus </a>, the system includes managing reservations, tables,
|
<strong>Frontend Developer (Freelance) | [03/2023 - 06/2023] | Kuwait</strong>
|
||||||
products, invoices, government tax integration, debits, and producing different types of reports like
|
<br>
|
||||||
sales and logs of payments.
|
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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</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">
|
<section class="contact section-padding" id="section_5">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row">
|
<div class="row justify-content-center">
|
||||||
<div class="col-12">
|
<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">
|
<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="" />
|
<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>
|
||||||
<h2 class="text-white ms-4 mb-0">Contact Me</h2>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-lg-8 col-12 mx-auto">
|
<div class="row justify-content-center">
|
||||||
<div class="custom-form contact-form" action="#" method="post" role="form">
|
<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="row">
|
||||||
<div class="col-lg-6 col-md-6 col-12">
|
<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>
|
||||||
|
|
||||||
<div class="col-lg-6 col-md-6 col-12">
|
<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>
|
||||||
|
|
||||||
<div class="col-12">
|
<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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -30,8 +30,8 @@
|
|||||||
<div class="profile-info-item">
|
<div class="profile-info-item">
|
||||||
<span class="profile-small-title">Email</span>
|
<span class="profile-small-title">Email</span>
|
||||||
<span class="profile-value">
|
<span class="profile-value">
|
||||||
<a href="mailto:mohammed.alyaseen.it@gmail.com" class="profile-link">
|
<a href="mailto:mohammed.o.alyaseen@gmail.com" class="profile-link">
|
||||||
<i class="bi bi-envelope-fill me-2"></i>mohammed.alyaseen.it@gmail.com
|
<i class="bi bi-envelope-fill me-2"></i>mohammed.o.alyaseen@gmail.com
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -39,7 +39,16 @@
|
|||||||
<div class="profile-info-item">
|
<div class="profile-info-item">
|
||||||
<span class="profile-small-title">Location</span>
|
<span class="profile-small-title">Location</span>
|
||||||
<span class="profile-value">
|
<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>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -64,9 +73,9 @@
|
|||||||
<div class="col-lg-6 col-12 mt-5 mt-lg-0">
|
<div class="col-lg-6 col-12 mt-5 mt-lg-0">
|
||||||
<div class="about-thumb">
|
<div class="about-thumb">
|
||||||
<div class="row">
|
<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">
|
<div class="featured-item">
|
||||||
<strong class="featured-numbers">4+</strong>
|
<strong class="featured-numbers">5+</strong>
|
||||||
<p class="featured-text">Years of Experience</p>
|
<p class="featured-text">Years of Experience</p>
|
||||||
<div class="featured-icon">
|
<div class="featured-icon">
|
||||||
<i class="bi bi-briefcase-fill"></i>
|
<i class="bi bi-briefcase-fill"></i>
|
||||||
@@ -74,7 +83,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</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">
|
<div class="featured-item">
|
||||||
<strong class="featured-numbers">5+</strong>
|
<strong class="featured-numbers">5+</strong>
|
||||||
<p class="featured-text">Happy Customers</p>
|
<p class="featured-text">Happy Customers</p>
|
||||||
@@ -94,7 +103,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</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">
|
<div class="featured-item">
|
||||||
<strong class="featured-numbers">7+</strong>
|
<strong class="featured-numbers">7+</strong>
|
||||||
<p class="featured-text">Digital Awards</p>
|
<p class="featured-text">Digital Awards</p>
|
||||||
|
|||||||
@@ -1,14 +1,94 @@
|
|||||||
<footer class="site-footer">
|
<footer class="site-footer">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-12 col-12">
|
<!-- Footer Brand & Description -->
|
||||||
<div class="copyright-text-wrap">
|
<div class="col-lg-4 col-md-6 col-12 mb-4 mb-lg-0">
|
||||||
<p class="mb-0">
|
<div class="footer-brand">
|
||||||
<span class="copyright-text">Copyright © 2024 <a href="#">Mohammed</a> Company. All rights reserved.</span>
|
<h3 class="footer-brand-name">Mohammed Al-yaseen</h3>
|
||||||
<span class="copyright-text">Design: <a href="https://templatemo.com" target="_blank">TemplateMo</a></span>
|
<p class="footer-description">
|
||||||
|
Senior Frontend Developer passionate about building exceptional user experiences
|
||||||
|
and scalable web applications.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</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>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
<span class="navbar-toggler-icon"></span>
|
<span class="navbar-toggler-icon"></span>
|
||||||
</button>
|
</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">
|
<div class="d-flex align-items-center d-lg-none">
|
||||||
<i class="navbar-icon bi-telephone-plus me-3"></i>
|
<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">
|
<section class="hero d-flex justify-content-center align-items-center" id="section_1">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-7 col-12">
|
<div class="col-lg-12 col-12">
|
||||||
<div class="hero-text">
|
<div class="hero-text">
|
||||||
<div class="hero-title-wrap d-flex align-items-center mb-4">
|
<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="" />
|
<div class="hero-image-wrapper position-relative me-4">
|
||||||
<h5 class="hero-title ms-3 mb-0">Hello friend!</h5>
|
<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>
|
</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">
|
<p class="mb-4">
|
||||||
<a class="custom-btn btn custom-link" href="#section_2">Let's begin</a>
|
<a class="custom-btn btn custom-link" href="#section_2">Let's begin</a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</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>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 320">
|
<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>
|
</svg>
|
||||||
</section>
|
</section>
|
||||||
@@ -2,21 +2,17 @@
|
|||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-8 col-md-8 col-12 ms-auto">
|
<div class="col-lg-8 col-md-8 col-12 ms-auto">
|
||||||
<div
|
<div class="section-title-wrap d-flex justify-content-center align-items-center mb-4">
|
||||||
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="" />
|
||||||
>
|
|
||||||
<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>
|
<h2 class="text-white ms-4 mb-0">Projects</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="clearfix"></div>
|
<div class="clearfix"></div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<!-- Law Office Login -->
|
||||||
<div class="col-lg-4 col-md-6 col-12">
|
<div class="col-lg-4 col-md-6 col-12">
|
||||||
<div class="projects-thumb">
|
<div class="projects-thumb">
|
||||||
<div class="projects-info">
|
<div class="projects-info">
|
||||||
@@ -34,6 +30,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Easy-pay Login -->
|
||||||
<div class="col-lg-4 col-md-6 col-12">
|
<div class="col-lg-4 col-md-6 col-12">
|
||||||
<div class="projects-thumb">
|
<div class="projects-thumb">
|
||||||
<div class="projects-info">
|
<div class="projects-info">
|
||||||
@@ -51,6 +48,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Cloths Ecommerce -->
|
||||||
<div class="col-lg-4 col-md-6 col-12">
|
<div class="col-lg-4 col-md-6 col-12">
|
||||||
<div class="projects-thumb">
|
<div class="projects-thumb">
|
||||||
<div class="projects-info">
|
<div class="projects-info">
|
||||||
@@ -68,116 +66,91 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Law Office -->
|
||||||
<div class="col-lg-4 col-md-6 col-12">
|
<div class="col-lg-4 col-md-6 col-12">
|
||||||
<div class="projects-thumb">
|
<div class="projects-thumb">
|
||||||
<div class="projects-info">
|
<div class="projects-info">
|
||||||
<small class="projects-tag">Website</small>
|
<small class="projects-tag">Website</small>
|
||||||
<h3 class="projects-title">Law Office</h3>
|
<h3 class="projects-title">Law Office</h3>
|
||||||
</div>
|
</div>
|
||||||
<a
|
<a href="images/projects/law-office-home.png" class="popup-image">
|
||||||
href="images/projects/law-office-home.png"
|
<img src="images/projects/law-office-home.png" class="projects-image img-fluid" alt="law office" />
|
||||||
class="popup-image"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
src="images/projects/law-office-home.png"
|
|
||||||
class="projects-image img-fluid"
|
|
||||||
alt="law office"
|
|
||||||
/>
|
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- SVU E-commerce -->
|
||||||
<div class="col-lg-4 col-md-6 col-12">
|
<div class="col-lg-4 col-md-6 col-12">
|
||||||
<div class="projects-thumb">
|
<div class="projects-thumb">
|
||||||
<div class="projects-info">
|
<div class="projects-info">
|
||||||
<small class="projects-tag">Website</small>
|
<small class="projects-tag">Website</small>
|
||||||
<h3 class="projects-title">SVU E-commerce</h3>
|
<h3 class="projects-title">SVU E-commerce</h3>
|
||||||
</div>
|
</div>
|
||||||
<a
|
<a href="images/projects/svu-hw.png" class="popup-image">
|
||||||
href="images/projects/svu-hw.png"
|
<img src="images/projects/svu-hw.png" class="projects-image img-fluid" alt="" />
|
||||||
class="popup-image"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
src="images/projects/svu-hw.png"
|
|
||||||
class="projects-image img-fluid"
|
|
||||||
alt=""
|
|
||||||
/>
|
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- NANS's CRM -->
|
||||||
<div class="col-lg-4 col-md-6 col-12">
|
<div class="col-lg-4 col-md-6 col-12">
|
||||||
<div class="projects-thumb">
|
<div class="projects-thumb">
|
||||||
<div class="projects-info">
|
<div class="projects-info">
|
||||||
<small class="projects-tag">Website</small>
|
<small class="projects-tag">Website</small>
|
||||||
<h3 class="projects-title">NANS's CRM</h3>
|
<h3 class="projects-title">NANS's CRM</h3>
|
||||||
</div>
|
</div>
|
||||||
<a
|
<a href="images/projects/nanas-main-dashboard.png" class="popup-image">
|
||||||
href="images/projects/nanas-main-dashboard.png"
|
<img src="images/projects/nanas-main-dashboard.png" class="projects-image img-fluid" alt="" />
|
||||||
class="popup-image"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
src="images/projects/nanas-main-dashboard.png"
|
|
||||||
class="projects-image img-fluid"
|
|
||||||
alt=""
|
|
||||||
/>
|
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Majsin's Restaurant -->
|
||||||
<div class="col-lg-4 col-md-6 col-12">
|
<div class="col-lg-4 col-md-6 col-12">
|
||||||
<div class="projects-thumb">
|
<div class="projects-thumb">
|
||||||
<div class="projects-info">
|
<div class="projects-info">
|
||||||
<small class="projects-tag">Website</small>
|
<small class="projects-tag">Website</small>
|
||||||
<h3 class="projects-title">Majsin's Restaurant</h3>
|
<h3 class="projects-title">Majsin's Restaurant</h3>
|
||||||
</div>
|
</div>
|
||||||
<a
|
<a href="images/projects/majsin-dashborad.png" class="popup-image">
|
||||||
href="images/projects/majsin-dashborad.png"
|
<img src="images/projects/majsin-dashborad.png" class="projects-image img-fluid" alt="" />
|
||||||
class="popup-image"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
src="images/projects/majsin-dashborad.png"
|
|
||||||
class="projects-image img-fluid"
|
|
||||||
alt=""
|
|
||||||
/>
|
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- BPro's ERP System -->
|
||||||
<div class="col-lg-4 col-md-6 col-12">
|
<div class="col-lg-4 col-md-6 col-12">
|
||||||
<div class="projects-thumb">
|
<div class="projects-thumb">
|
||||||
<div class="projects-info">
|
<div class="projects-info">
|
||||||
<small class="projects-tag">Website</small>
|
<small class="projects-tag">Website</small>
|
||||||
<h3 class="projects-title">BPro's ERP System</h3>
|
<h3 class="projects-title">BPro's ERP System</h3>
|
||||||
</div>
|
</div>
|
||||||
<a href="images/projects/bpro-erp.jpg" class="popup-image">
|
<a href="images/projects/bpro-erp.png" class="popup-image">
|
||||||
<img
|
<img src="images/projects/bpro-erp.png" class="projects-image img-fluid" alt="" />
|
||||||
src="images/projects/bpro-erp.jpg"
|
|
||||||
class="projects-image img-fluid"
|
|
||||||
alt=""
|
|
||||||
/>
|
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Moneyout Bank -->
|
||||||
<div class="col-lg-4 col-md-6 col-12">
|
<div class="col-lg-4 col-md-6 col-12">
|
||||||
<div class="projects-thumb">
|
<div class="projects-thumb">
|
||||||
<div class="projects-info">
|
<div class="projects-info">
|
||||||
<small class="projects-tag">Website</small>
|
<small class="projects-tag">Website</small>
|
||||||
<h3 class="projects-title">Moneyout Bank</h3>
|
<h3 class="projects-title">Moneyout Bank</h3>
|
||||||
</div>
|
</div>
|
||||||
<a
|
<a href="images/projects/moneyout.png" class="popup-image">
|
||||||
href="images/projects/moneyout.png"
|
<img src="images/projects/moneyout.png" class="projects-image img-fluid" alt="" />
|
||||||
class="popup-image"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
src="images/projects/moneyout.png"
|
|
||||||
class="projects-image img-fluid"
|
|
||||||
alt=""
|
|
||||||
/>
|
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</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>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<!-- Include Header -->
|
<!-- Header -->
|
||||||
<div id="header"></div>
|
<div id="header"></div>
|
||||||
|
|
||||||
<main>
|
<main>
|
||||||
<!-- Include Hero Section -->
|
<!-- Hero Section -->
|
||||||
<div id="hero"></div>
|
<section id="hero"></section>
|
||||||
|
|
||||||
<!-- Include About Section -->
|
<!-- About Section -->
|
||||||
<div id="about"></div>
|
<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 -->
|
<!-- Featured Section -->
|
||||||
<div id="featured"></div>
|
<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 -->
|
<!-- Projects Section -->
|
||||||
<div id="projects"></div>
|
<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 -->
|
<!-- Services Section -->
|
||||||
<div id="services"></div>
|
<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 -->
|
<!-- Contact Section -->
|
||||||
<div id="contact"></div>
|
<section id="contact"></section>
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<!-- Include Footer -->
|
<!-- Footer -->
|
||||||
<div id="footer"></div>
|
<footer id="footer"></footer>
|
||||||
|
|
||||||
<!-- JAVASCRIPT FILES -->
|
<!-- JAVASCRIPT FILES -->
|
||||||
<script src="js/jquery.min.js"></script>
|
<script src="js/jquery.min.js"></script>
|
||||||
@@ -57,19 +117,26 @@
|
|||||||
<script src="js/jquery.magnific-popup.min.js"></script>
|
<script src="js/jquery.magnific-popup.min.js"></script>
|
||||||
<script src="js/magnific-popup-options.js"></script>
|
<script src="js/magnific-popup-options.js"></script>
|
||||||
<script src="js/custom.js"></script>
|
<script src="js/custom.js"></script>
|
||||||
|
<script src="js/cat-animation.js"></script>
|
||||||
|
|
||||||
<!-- Load Components -->
|
<!-- Load Components -->
|
||||||
<script>
|
<script>
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
// Load components
|
const components = {
|
||||||
$("#header").load("components/header.html");
|
header: "components/header.html",
|
||||||
$("#hero").load("components/hero.html");
|
hero: "components/hero.html",
|
||||||
$("#about").load("components/about.html");
|
about: "components/about.html",
|
||||||
$("#featured").load("components/featured.html");
|
featured: "components/featured.html",
|
||||||
$("#services").load("components/services.html");
|
services: "components/services.html",
|
||||||
$("#projects").load("components/projects.html");
|
projects: "components/projects.html",
|
||||||
$("#contact").load("components/contact.html");
|
contact: "components/contact.html",
|
||||||
$("#footer").load("components/footer.html");
|
footer: "components/footer.html",
|
||||||
|
};
|
||||||
|
|
||||||
|
// Load all components
|
||||||
|
Object.entries(components).forEach(([id, path]) => {
|
||||||
|
$(`#${id}`).load(path);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</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) {
|
$.each(sectionArray, function (index, value) {
|
||||||
$(document).scroll(function () {
|
$(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 docScroll = $(document).scrollTop();
|
||||||
var docScroll1 = docScroll + 1;
|
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).addClass("active");
|
||||||
$(".navbar-nav .nav-item .nav-link").eq(index).removeClass("inactive");
|
$(".navbar-nav .nav-item .nav-link").eq(index).removeClass("inactive");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$(".click-scroll")
|
$(".click-scroll")
|
||||||
.eq(index)
|
.eq(index)
|
||||||
.click(function (e) {
|
.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();
|
e.preventDefault();
|
||||||
$("html, body").animate(
|
$("html, body").animate(
|
||||||
{
|
{
|
||||||
@@ -28,6 +33,7 @@ $.each(sectionArray, function (index, value) {
|
|||||||
},
|
},
|
||||||
300
|
300
|
||||||
);
|
);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -77,6 +77,8 @@
|
|||||||
const lightboxClose = document.querySelector('.lightbox-close');
|
const lightboxClose = document.querySelector('.lightbox-close');
|
||||||
const projectImages = document.querySelectorAll('.popup-image');
|
const projectImages = document.querySelectorAll('.popup-image');
|
||||||
|
|
||||||
|
// Only initialize lightbox if elements exist
|
||||||
|
if (lightbox && lightboxImage && lightboxClose && projectImages.length > 0) {
|
||||||
projectImages.forEach(image => {
|
projectImages.forEach(image => {
|
||||||
image.addEventListener('click', (e) => {
|
image.addEventListener('click', (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
@@ -109,6 +111,7 @@
|
|||||||
document.body.style.overflow = '';
|
document.body.style.overflow = '';
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// Sticky Navigation
|
// Sticky Navigation
|
||||||
$(window).on('scroll', function() {
|
$(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