Skip to content

Commit 7698e93

Browse files
committed
SEO optimization and particles.js fix: Updated alt text for social media images, added LocalBusiness schema.org markup for Miami/Florida targeting, restored particles.js functionality with performance fallback, and optimized script loading order
1 parent 45507f3 commit 7698e93

4 files changed

Lines changed: 380 additions & 28 deletions

File tree

about.html

Lines changed: 111 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -820,6 +820,111 @@
820820
}
821821
}
822822
</script>
823+
824+
<!-- LocalBusiness Schema for Miami/Florida -->
825+
<script type="application/ld+json">
826+
{
827+
"@context": "https://schema.org",
828+
"@type": "LocalBusiness",
829+
"name": "Patrick Araujo - Software Engineering Services",
830+
"image": "https://pklavc.github.io/images/Lavc.png",
831+
"url": "https://pklavc.github.io/about.html",
832+
"telephone": "+1-305-XXX-XXXX",
833+
"address": {
834+
"@type": "PostalAddress",
835+
"streetAddress": "Remote / Available for Miami-based projects",
836+
"addressLocality": "Miami",
837+
"addressRegion": "FL",
838+
"postalCode": "33101",
839+
"addressCountry": "US"
840+
},
841+
"geo": {
842+
"@type": "GeoCoordinates",
843+
"latitude": 25.7617,
844+
"longitude": -80.1918
845+
},
846+
"openingHoursSpecification": [
847+
{
848+
"@type": "OpeningHoursSpecification",
849+
"dayOfWeek": [
850+
"Monday",
851+
"Tuesday",
852+
"Wednesday",
853+
"Thursday",
854+
"Friday"
855+
],
856+
"opens": "09:00",
857+
"closes": "18:00"
858+
}
859+
],
860+
"sameAs": [
861+
"https://github.com/PkLavc",
862+
"https://www.linkedin.com/in/patrickajm/",
863+
"https://twitter.com/PkLavc"
864+
],
865+
"description": "Software Engineer & Data Architect specializing in Backend Systems, AI Engineering, and Intelligent Automation. Expert in Python, JavaScript, and high-scale Data Pipelines. Available for remote work and Miami/Florida-based projects.",
866+
"priceRange": "$$$",
867+
"serviceArea": {
868+
"@type": "GeoCircle",
869+
"geoMidpoint": {
870+
"@type": "GeoCoordinates",
871+
"latitude": 25.7617,
872+
"longitude": -80.1918
873+
},
874+
"geoRadius": "100000"
875+
},
876+
"availableService": [
877+
{
878+
"@type": "Service",
879+
"name": "Backend Development",
880+
"description": "Custom backend systems, APIs, and server-side applications"
881+
},
882+
{
883+
"@type": "Service",
884+
"name": "Data Engineering",
885+
"description": "Data pipelines, ETL processes, and data infrastructure"
886+
},
887+
{
888+
"@type": "Service",
889+
"name": "AI Engineering",
890+
"description": "AI workflows, machine learning integration, and intelligent automation"
891+
},
892+
{
893+
"@type": "Service",
894+
"name": "Cloud Architecture",
895+
"description": "AWS/Azure cloud solutions and infrastructure design"
896+
}
897+
],
898+
"hasOfferCatalog": {
899+
"@type": "OfferCatalog",
900+
"name": "Software Engineering Services",
901+
"itemListElement": [
902+
{
903+
"@type": "Offer",
904+
"itemOffered": {
905+
"@type": "Service",
906+
"name": "Backend Development"
907+
}
908+
},
909+
{
910+
"@type": "Offer",
911+
"itemOffered": {
912+
"@type": "Service",
913+
"name": "Data Engineering"
914+
}
915+
},
916+
{
917+
"@type": "Offer",
918+
"itemOffered": {
919+
"@type": "Service",
920+
"name": "AI Engineering"
921+
}
922+
}
923+
]
924+
}
925+
}
926+
</script>
927+
823928
<div id="breaker">
824929
</div>
825930
<div id="breaker-two">
@@ -1026,21 +1131,21 @@ <h3><img height="20" alt="GIF" src="images/Globe.gif"/> Education</h3>
10261131
<h3><img height="20" alt="GIF" src="images/link.gif"/> Contact</h3>
10271132
<div class="contact-grid">
10281133
<div class="contact-item">
1029-
<a href="https://github.com/PkLavc" target="_blank"><img alt="GitHub" height="42" src="images/github.gif"/></a>
1134+
<a href="https://github.com/PkLavc" target="_blank"><img alt="Patrick Araujo - GitHub Portfolio and Open Source Projects" height="42" src="images/github.gif"/></a>
10301135
<span class="contact-value" data-href="https://github.com/PkLavc">PkLavc</span>
10311136
<button class="copy-btn" data-copy="https://github.com/PkLavc" title="Copy to clipboard">
10321137
🗎 <span>copy</span>
10331138
</button>
10341139
</div>
10351140
<div class="contact-item">
1036-
<a href="https://www.linkedin.com/in/patrickajm/" target="_blank"><img alt="LinkedIn" height="42" src="images/linkedin.gif"/></a>
1141+
<a href="https://www.linkedin.com/in/patrickajm/" target="_blank"><img alt="Patrick Araujo - Professional LinkedIn Profile" height="42" src="images/linkedin.gif"/></a>
10371142
<span class="contact-value" data-href="https://www.linkedin.com/in/patrickajm/">patrickajm</span>
10381143
<button class="copy-btn" data-copy="https://www.linkedin.com/in/patrickajm/" title="Copy to clipboard">
10391144
🗎 <span>copy</span>
10401145
</button>
10411146
</div>
10421147
<div class="contact-item">
1043-
<a href="mailto:patrickajm@gmail.com" target="_blank"><img alt="Email" height="42" src="images/mail.gif"/></a>
1148+
<a href="mailto:patrickajm@gmail.com" target="_blank"><img alt="Contact Patrick Araujo via Email" height="42" src="images/mail.gif"/></a>
10441149
<span class="contact-value" data-href="mailto:patrickajm@gmail.com">patrickajm@gmail.com</span>
10451150
<button class="copy-btn" data-copy="patrickajm@gmail.com" title="Copy to clipboard">
10461151
🗎 <span>copy</span>
@@ -1058,10 +1163,9 @@ <h3><img height="20" alt="GIF" src="images/link.gif"/> Contact</h3>
10581163
</div>
10591164
</div>
10601165
</div>
1061-
<script src="js/jquery.min.js"></script>
1062-
<script src="js/particles.js"></script>
1063-
<script src="js/particles.min.js"></script>
1064-
<script src="js/index.js"></script>
1166+
<script src="js/jquery.min.js" defer></script>
1167+
<script src="js/particles.min.js" defer></script>
1168+
<script src="js/index.js" defer></script>
10651169

10661170
<script>
10671171
// Dynamic semester calculation

css/global.css

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,4 +146,24 @@ body{
146146
/* small helpers */
147147
.color{ color: var(--clr-primary); transition: all .4s ease; }
148148

149+
/* Particles Fallback Styles */
150+
.particles-fallback {
151+
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%) !important;
152+
}
153+
154+
.particles-container {
155+
position: absolute;
156+
top: 0;
157+
left: 0;
158+
width: 100%;
159+
height: 100%;
160+
z-index: 1;
161+
}
162+
163+
.particles-container canvas {
164+
display: block;
165+
width: 100% !important;
166+
height: 100% !important;
167+
}
168+
149169
/* End of global.css */

index.html

Lines changed: 138 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -839,6 +839,110 @@
839839
}
840840
</script>
841841

842+
<!-- LocalBusiness Schema for Miami/Florida -->
843+
<script type="application/ld+json">
844+
{
845+
"@context": "https://schema.org",
846+
"@type": "LocalBusiness",
847+
"name": "Patrick Araujo - Software Engineering Services",
848+
"image": "https://pklavc.github.io/images/Lavc.png",
849+
"url": "https://pklavc.github.io/",
850+
"telephone": "+1-305-XXX-XXXX",
851+
"address": {
852+
"@type": "PostalAddress",
853+
"streetAddress": "Remote / Available for Miami-based projects",
854+
"addressLocality": "Miami",
855+
"addressRegion": "FL",
856+
"postalCode": "33101",
857+
"addressCountry": "US"
858+
},
859+
"geo": {
860+
"@type": "GeoCoordinates",
861+
"latitude": 25.7617,
862+
"longitude": -80.1918
863+
},
864+
"openingHoursSpecification": [
865+
{
866+
"@type": "OpeningHoursSpecification",
867+
"dayOfWeek": [
868+
"Monday",
869+
"Tuesday",
870+
"Wednesday",
871+
"Thursday",
872+
"Friday"
873+
],
874+
"opens": "09:00",
875+
"closes": "18:00"
876+
}
877+
],
878+
"sameAs": [
879+
"https://github.com/PkLavc",
880+
"https://www.linkedin.com/in/patrickajm/",
881+
"https://twitter.com/PkLavc"
882+
],
883+
"description": "Software Engineer & Data Architect specializing in Backend Systems, AI Engineering, and Intelligent Automation. Expert in Python, JavaScript, and high-scale Data Pipelines. Available for remote work and Miami/Florida-based projects.",
884+
"priceRange": "$$$",
885+
"serviceArea": {
886+
"@type": "GeoCircle",
887+
"geoMidpoint": {
888+
"@type": "GeoCoordinates",
889+
"latitude": 25.7617,
890+
"longitude": -80.1918
891+
},
892+
"geoRadius": "100000"
893+
},
894+
"availableService": [
895+
{
896+
"@type": "Service",
897+
"name": "Backend Development",
898+
"description": "Custom backend systems, APIs, and server-side applications"
899+
},
900+
{
901+
"@type": "Service",
902+
"name": "Data Engineering",
903+
"description": "Data pipelines, ETL processes, and data infrastructure"
904+
},
905+
{
906+
"@type": "Service",
907+
"name": "AI Engineering",
908+
"description": "AI workflows, machine learning integration, and intelligent automation"
909+
},
910+
{
911+
"@type": "Service",
912+
"name": "Cloud Architecture",
913+
"description": "AWS/Azure cloud solutions and infrastructure design"
914+
}
915+
],
916+
"hasOfferCatalog": {
917+
"@type": "OfferCatalog",
918+
"name": "Software Engineering Services",
919+
"itemListElement": [
920+
{
921+
"@type": "Offer",
922+
"itemOffered": {
923+
"@type": "Service",
924+
"name": "Backend Development"
925+
}
926+
},
927+
{
928+
"@type": "Offer",
929+
"itemOffered": {
930+
"@type": "Service",
931+
"name": "Data Engineering"
932+
}
933+
},
934+
{
935+
"@type": "Offer",
936+
"itemOffered": {
937+
"@type": "Service",
938+
"name": "AI Engineering"
939+
}
940+
}
941+
]
942+
}
943+
}
944+
</script>
945+
842946
<!-- Work Experience Schema -->
843947
<script type="application/ld+json">
844948
{
@@ -961,11 +1065,11 @@
9611065
</div>
9621066
</div>
9631067
<div id="header">
964-
<div id="particles"></div>
1068+
<div id="particles" class="particles-container"></div>
9651069
<div class="social-media-links">
966-
<a href="https://github.com/PkLavc"><img src="images/github.gif" alt="GitHub-pic" class="social-media"></a>
967-
<a href="https://www.linkedin.com/in/patrickajm/"><img src="images/linkedin.gif" class="social-media" alt="linkedin-logo"></a>
968-
<a href="mailto:patrickajm@gmail.com"><img src="images/mail.gif" class="social-media" alt="mail"></a>
1070+
<a href="https://github.com/PkLavc"><img src="images/github.gif" alt="Patrick Araujo - GitHub Portfolio and Open Source Projects" class="social-media"></a>
1071+
<a href="https://www.linkedin.com/in/patrickajm/"><img src="images/linkedin.gif" class="social-media" alt="Patrick Araujo - Professional LinkedIn Profile"></a>
1072+
<a href="mailto:patrickajm@gmail.com"><img src="images/mail.gif" class="social-media" alt="Contact Patrick Araujo via Email"></a>
9691073
</div>
9701074
<div class="header-content" aria-label="Professional profile header">
9711075
<div class="header-content-box">
@@ -988,30 +1092,50 @@
9881092
</div>
9891093
</div>
9901094
</div>
991-
<script src="js/jquery.min.js"></script>
992-
<script src="js/particles.js"></script>
1095+
<script src="js/jquery.min.js" defer></script>
9931096
<script src="js/particles.min.js"></script>
994-
<script src="js/index.js"></script>
1097+
<script src="js/index.js" defer></script>
9951098
<!--particles script-->
9961099
<script>
9971100
particlesJS("particles", {"particles":{"number":{"value":50,"density":{"enable":true,"value_area":800}},"color":{"value":"#ffffff"},"shape":{"type":"circle","stroke":{"width":0,"color":"#000000"},"polygon":{"nb_sides":5},"image":{"src":"img/github.svg","width":100,"height":100}},"opacity":{"value":0.5,"random":false,"anim":{"enable":false,"speed":1,"opacity_min":0.1,"sync":false}},"size":{"value":3,"random":true,"anim":{"enable":false,"speed":40,"size_min":0.1,"sync":false}},"line_linked":{"enable":true,"distance":150,"color":"#ffffff","opacity":0.4,"width":1},"move":{"enable":true,"speed":6,"direction":"none","random":false,"straight":false,"out_mode":"out","bounce":false,"attract":{"enable":false,"rotateX":600,"rotateY":1200}}},"interactivity":{"detect_on":"canvas","events":{"onhover":{"enable":true,"mode":"repulse"},"onclick":{"enable":true,"mode":"push"},"resize":true},"modes":{"grab":{"distance":400,"line_linked":{"opacity":1}},"bubble":{"distance":400,"size":40,"duration":2,"opacity":8,"speed":3},"repulse":{"distance":200,"duration":0.4},"push":{"particles_nb":4},"remove":{"particles_nb":2}}},"retina_detect":true});
9981101
</script>
9991102

10001103
<script>
1001-
// Fix agressivo para forçar renderização das partículas
1104+
// Performance fallback and enhanced particles initialization
10021105
window.addEventListener('load', function() {
1003-
// Múltiplos resizes em tempos diferentes
1004-
setTimeout(function() { window.dispatchEvent(new Event('resize')); }, 100);
1005-
setTimeout(function() { window.dispatchEvent(new Event('resize')); }, 500);
1006-
setTimeout(function() { window.dispatchEvent(new Event('resize')); }, 1000);
1106+
// Add fallback class if particles fail to load
1107+
const particlesContainer = document.getElementById('particles');
1108+
const header = document.getElementById('header');
1109+
1110+
// Check if particles loaded successfully
1111+
setTimeout(function() {
1112+
const canvas = particlesContainer.querySelector('canvas');
1113+
if (!canvas || canvas.style.display === 'none') {
1114+
// Particles failed to load, apply fallback styling
1115+
header.classList.add('particles-fallback');
1116+
particlesContainer.style.background = 'linear-gradient(135deg, #1a1a2e 0%, #16213e 100%)';
1117+
}
1118+
}, 2000);
1119+
1120+
// Enhanced resize handling
1121+
let resizeTimeout;
1122+
window.addEventListener('resize', function() {
1123+
clearTimeout(resizeTimeout);
1124+
resizeTimeout = setTimeout(function() {
1125+
if (window.pJSDom && window.pJSDom.length > 0) {
1126+
window.pJSDom[0].pJS.fn.vendors.densityAutoParticles();
1127+
window.pJSDom[0].pJS.fn.particlesRefresh();
1128+
}
1129+
}, 100);
1130+
});
10071131

1008-
// Força o pJSDom a atualizar o canvas diretamente
1132+
// Force particles refresh on load
10091133
setTimeout(function() {
10101134
if (window.pJSDom && window.pJSDom.length > 0) {
10111135
window.pJSDom[0].pJS.fn.vendors.densityAutoParticles();
10121136
window.pJSDom[0].pJS.fn.particlesRefresh();
10131137
}
1014-
}, 1500);
1138+
}, 500);
10151139
});
10161140
</script>
10171141

0 commit comments

Comments
 (0)