├── README.md ├── site_current ├── files │ └── example_image.png ├── script.js ├── styles.css └── index.html └── site_backup ├── script.js ├── estilo.css └── index.html /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/high-horse/portfolio/HEAD/README.md -------------------------------------------------------------------------------- /site_current/files/example_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/high-horse/portfolio/HEAD/site_current/files/example_image.png -------------------------------------------------------------------------------- /site_backup/script.js: -------------------------------------------------------------------------------- 1 | let menuVisible = false; 2 | //Función que oculta o muestra el menu 3 | function mostrarOcultarMenu(){ 4 | if(menuVisible){ 5 | document.getElementById("nav").classList =""; 6 | menuVisible = false; 7 | }else{ 8 | document.getElementById("nav").classList ="responsive"; 9 | menuVisible = true; 10 | } 11 | } 12 | 13 | function seleccionar(){ 14 | //oculto el menu una vez que selecciono una opcion 15 | document.getElementById("nav").classList = ""; 16 | menuVisible = false; 17 | } 18 | //Funcion que aplica las animaciones de las habilidades 19 | function efectoHabilidades(){ 20 | var skills = document.getElementById("skills"); 21 | var distancia_skills = window.innerHeight - skills.getBoundingClientRect().top; 22 | if(distancia_skills >= 300){ 23 | let habilidades = document.getElementsByClassName("progreso"); 24 | habilidades[0].classList.add("javascript"); 25 | habilidades[1].classList.add("htmlcss"); 26 | habilidades[2].classList.add("photoshop"); 27 | habilidades[3].classList.add("wordpress"); 28 | habilidades[4].classList.add("drupal"); 29 | habilidades[5].classList.add("comunicacion"); 30 | habilidades[6].classList.add("trabajo"); 31 | habilidades[7].classList.add("creatividad"); 32 | habilidades[8].classList.add("dedicacion"); 33 | habilidades[9].classList.add("proyect"); 34 | } 35 | } 36 | 37 | 38 | //detecto el scrolling para aplicar la animacion de la barra de habilidades 39 | window.onscroll = function(){ 40 | efectoHabilidades(); 41 | } -------------------------------------------------------------------------------- /site_current/script.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | 3 | // Title customize 4 | var docTitle = document.title; 5 | window.addEventListener('blur', () => { 6 | document.title = "Come back 😢"; 7 | }) 8 | window.addEventListener("focus", () => { 9 | document.title = docTitle; 10 | }) 11 | 12 | // always recent date 13 | document.getElementById("currentYear").innerText = new Date().getFullYear(); 14 | 15 | 16 | 17 | //sticky header 18 | $(window).scroll(function() { 19 | if ($(this).scrollTop() > 1) { 20 | $(".header-area").addClass("sticky"); 21 | } else { 22 | $(".header-area").removeClass("sticky"); 23 | } 24 | 25 | // Update the active section in the header 26 | updateActiveSection(); 27 | }); 28 | 29 | $(".header ul li a").click(function(e) { 30 | e.preventDefault(); 31 | 32 | var target = $(this).attr("href"); 33 | 34 | if ($(target).hasClass("active-section")) { 35 | return; 36 | } 37 | 38 | if (target === "#home") { 39 | $("html, body").animate( 40 | { 41 | scrollTop: 0 42 | }, 43 | 500 44 | ); 45 | } else { 46 | var offset = $(target).offset().top - 40; 47 | 48 | $("html, body").animate( 49 | { 50 | scrollTop: offset 51 | }, 52 | 500 53 | ); 54 | } 55 | 56 | $(".header ul li a").removeClass("active"); 57 | $(this).addClass("active"); 58 | }); 59 | 60 | 61 | //Initial content revealing js 62 | ScrollReveal({ 63 | distance: "100px", 64 | duration: 2000, 65 | delay: 200 66 | }); 67 | 68 | ScrollReveal().reveal(".header a, .profile-photo, .about-content, .education", { 69 | origin: "left" 70 | }); 71 | ScrollReveal().reveal(".header ul, .profile-text, .about-skills, .internship", { 72 | origin: "right" 73 | }); 74 | ScrollReveal().reveal(".project-title, .contact-title", { 75 | origin: "top" 76 | }); 77 | ScrollReveal().reveal(".projects, .contact", { 78 | origin: "bottom" 79 | }); 80 | 81 | //contact form to excel sheet 82 | const scriptURL = 'https://script.google.com/macros/s/AKfycbzUSaaX3XmlE5m9YLOHOBrRuCh2Ohv49N9bs4bew7xPd1qlgpvXtnudDs5Xhp3jF-Fx/exec'; 83 | const form = document.forms['submitToGoogleSheet'] 84 | const msg = document.getElementById("msg") 85 | 86 | form.addEventListener('submit', e => { 87 | e.preventDefault() 88 | fetch(scriptURL, { method: 'POST', body: new FormData(form) }) 89 | .then(response => { 90 | msg.innerHTML = "Message sent successfully" 91 | setTimeout(function () { 92 | msg.innerHTML = "" 93 | }, 5000) 94 | form.reset() 95 | }) 96 | .catch(error => console.error('Error!', error.message)) 97 | }) 98 | 99 | }); 100 | 101 | function updateActiveSection() { 102 | var scrollPosition = $(window).scrollTop(); 103 | 104 | // Checking if scroll position is at the top of the page 105 | if (scrollPosition === 0) { 106 | $(".header ul li a").removeClass("active"); 107 | $(".header ul li a[href='#home']").addClass("active"); 108 | return; 109 | } 110 | 111 | // Iterate through each section and update the active class in the header 112 | $("section").each(function() { 113 | var target = $(this).attr("id"); 114 | var offset = $(this).offset().top; 115 | var height = $(this).outerHeight(); 116 | 117 | if ( 118 | scrollPosition >= offset - 40 && 119 | scrollPosition < offset + height - 40 120 | ) { 121 | $(".header ul li a").removeClass("active"); 122 | $(".header ul li a[href='#" + target + "']").addClass("active"); 123 | } 124 | }); 125 | } 126 | 127 | document.querySelector('form[name="submitToGoogleSheet"]').addEventListener('submit', function (e) { 128 | e.preventDefault(); 129 | document.getElementById('submitButton').disabled = true; 130 | // Create a FormData object from the form 131 | const formData = new FormData(e.target); 132 | 133 | fetch("https://formsubmit.co/ajax/33eed4766c087209a197e890f83d83f4", { 134 | method: "POST", 135 | body: formData 136 | }) 137 | .then(response => response.json()) 138 | .then(data => { 139 | console.log(data); 140 | // Check if the submission was successful (you may need to adjust based on the response structure) 141 | if (data.success) { 142 | alert("Form submitted successfully!"); 143 | } else { 144 | alert("Form submission failed. Please try again."); 145 | } 146 | }) 147 | .catch(error => console.log(error)) 148 | .finally(() => { 149 | // Re-enable the submit button after the response is received 150 | document.getElementById('submitButton').disabled = false; 151 | }); 152 | }); 153 | 154 | -------------------------------------------------------------------------------- /site_current/styles.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=Lexend:wght@400;500;600;700&display=swap'); 2 | 3 | *{ 4 | margin:0; 5 | padding:0; 6 | box-sizing:border-box; 7 | scroll-behavior:smooth; 8 | } 9 | a{ 10 | text-decoration: none ; 11 | color:#fff; 12 | transition:0.3s; 13 | } 14 | ul{ 15 | list-style:none; 16 | } 17 | img{ 18 | max-width: 100%; 19 | } 20 | body{ 21 | font-family: 'Lexend', sans-serif; 22 | font-size:16px; 23 | line-height:24px; 24 | background-color:#202020; 25 | } 26 | .container{ 27 | width: 1170px; 28 | margin:auto; 29 | } 30 | 31 | 32 | 33 | 34 | /*---------------------------Header---------------------------*/ 35 | 36 | .header-area{ 37 | padding:25px 0; 38 | transition: padding .3s; 39 | } 40 | 41 | .header-area.sticky { 42 | position: fixed; 43 | top: 0; 44 | left: 0; 45 | width: 100%; 46 | z-index: 99; 47 | background-color: #202020; 48 | padding: 5px; 49 | } 50 | 51 | .header{ 52 | display:flex; 53 | justify-content: space-between; 54 | align-items: center; 55 | /* padding-bottom: 2rem; */ 56 | } 57 | .logo { 58 | display: flex; 59 | align-items: center; 60 | position: relative; 61 | text-transform: uppercase; 62 | font-size: 26px; 63 | font-weight: 700; 64 | } 65 | 66 | .logo .fa-bolt { 67 | color: #fed700; 68 | font-size: 19.5px; 69 | position: absolute; 70 | top: 60%; 71 | left: 100%; 72 | transform: translate(-50%, -50%); 73 | z-index: 1; 74 | } 75 | 76 | .signature { 77 | width: 100px; 78 | height:auto; 79 | margin-right: 10px; 80 | } 81 | 82 | .header ul li:first-child { 83 | margin-right: auto; 84 | } 85 | 86 | .header ul{ 87 | display: flex; 88 | align-items: center; 89 | } 90 | .header ul li{ 91 | margin: 0 15px; 92 | } 93 | .header ul li a{ 94 | text-transform: capitalize; 95 | display: block; 96 | } 97 | .header ul li a.active{ 98 | color: #fed700; 99 | } 100 | .header ul li a:hover{ 101 | color:#fed700; 102 | } 103 | .header .menu_icon{ 104 | color:#fff; 105 | font-size: 18px; 106 | cursor: pointer; 107 | display: none; 108 | } 109 | 110 | 111 | /*---------------------------HomePage--------------------------*/ 112 | 113 | .FirstElement{ 114 | display:flex; 115 | justify-content: space-around; 116 | align-items: center; 117 | padding-top: 5rem; 118 | } 119 | 120 | .FirstElement.adjusted-padding { 121 | padding-top: 40px; 122 | } 123 | 124 | .FirstElement .profile-photo{ 125 | width: 300px; 126 | height: 300px; 127 | border-radius: 50%; 128 | overflow: hidden; 129 | border: 15px solid #444444; 130 | box-shadow: 5px 7px 25px rgba(0, 0, 0, 0.5) 131 | } 132 | profile-photo .img{ 133 | height: 100%; 134 | width: 100%; 135 | transition: 0.5s; 136 | } 137 | .FirstElement .profile-photo img:hover{ 138 | transform: scale(1.2); 139 | } 140 | .profile-text{ 141 | max-width: 750px; 142 | display: flex; 143 | flex-direction: column; 144 | } 145 | .profile-text h5{ 146 | color: #e5e5e5; 147 | font-size: 14px; 148 | } 149 | .profile-text h1{ 150 | color: #fed700; 151 | font-size: 3rem; 152 | } 153 | .profile-text p{ 154 | color:#e5e5e5; 155 | } 156 | .profile-text .social i{ 157 | color : #e5e5e5; 158 | font-size: 18px; 159 | margin-right: 10px; 160 | transition: 0.5s; 161 | } 162 | .profile-text .social i:hover{ 163 | color:#fed700; 164 | transform: rotate(360deg); 165 | } 166 | 167 | 168 | 169 | /*---------------------------About---------------------------*/ 170 | 171 | .about-area{ 172 | padding-top: 130px; 173 | background-color: #202020; 174 | } 175 | .about{ 176 | display: flex; 177 | justify-content: space-between; 178 | align-items: center; 179 | margin-bottom:50px; 180 | } 181 | .about-content{ 182 | flex-basis: 60%; 183 | } 184 | .about-content h4{ 185 | color: #fed700; 186 | font-size: 40px; 187 | line-height: 70px; 188 | text-transform: capitalize; 189 | } 190 | .about-content ul { 191 | color:#fff; 192 | text-align: justify; 193 | } 194 | 195 | .about-content ul li { 196 | list-style-type: disc; 197 | margin-bottom: 10px; 198 | } 199 | 200 | .about-skills{ 201 | flex-basis: 35%; 202 | } 203 | .about-skills ul li{ 204 | border-bottom: 1px dashed #ddd; 205 | padding-bottom: 10px; 206 | margin-bottom: 10px; 207 | color: #fff; 208 | font-size: 18px; 209 | } 210 | .about-skills ul li:last-child{ 211 | border-bottom: 0; 212 | padding-bottom: 0; 213 | margin-bottom: 0; 214 | } 215 | 216 | 217 | /*---------------------------Button---------------------------*/ 218 | 219 | .btn-group{ 220 | margin: 45px 0; 221 | } 222 | .btn-group .btn{ 223 | border-color: #d5d5d5; 224 | color: #fff; 225 | background-color: #333; 226 | padding:12px 25px; 227 | margin: 5px 0; 228 | margin-right: 7px; 229 | border-radius: 30px; 230 | border: 2px solid #e5e5e5; 231 | box-shadow: 0 10px 10px -8px rgb(0 0 0 / 78%); 232 | } 233 | .btn.active{ 234 | border-color: #fed700; 235 | } 236 | 237 | 238 | /*---------------------------Education & Internship---------------------------*/ 239 | 240 | .education-content .row{ 241 | display: flex; 242 | border-radius: 5px; 243 | height: 400px; 244 | margin-bottom: 250px; 245 | } 246 | 247 | .education-content .title{ 248 | color: #fed700; 249 | } 250 | .education-content .row .education, 251 | .education-content .row .internship 252 | { 253 | color: #e5e5e5; 254 | flex:0 0 50%; 255 | max-width: 50%; 256 | margin-top: 30px; 257 | } 258 | .education-content h3.title{ 259 | font-size:24px; 260 | margin-bottom: 30px; 261 | font-weight: 700; 262 | } 263 | .education-content .row.timeline-box{ 264 | flex:0 0 100%; 265 | max-width: 100%; 266 | } 267 | .education-content .row .timeline{ 268 | /* background-color:#e5e5e5; */ 269 | padding: 30px 15px; 270 | border: 1px solid #e5e5e5; 271 | border-radius: 10px; 272 | width: 100%; 273 | position: relative; 274 | } 275 | .education-content .row .timeline-item{ 276 | position:relative; 277 | padding-left: 37px; 278 | padding-bottom: 50px; 279 | } 280 | .education-content .row .internship .timeline-item{ 281 | position:relative; 282 | padding-left: 37px; 283 | padding-bottom: 30px; 284 | } 285 | .education-content .row .timeline-item:last-child{ 286 | padding-bottom: 0; 287 | } 288 | .education-content .row .timeline-item::before{ 289 | content: ""; 290 | width: 1px; 291 | position: absolute; 292 | height: 100%; 293 | left: 7px; 294 | top: 0; 295 | background-color: #fed700; 296 | } 297 | .education-content .row .circle-dot{ 298 | position: absolute; 299 | left: 0; 300 | top: 0; 301 | height: 15px; 302 | width: 15px; 303 | border-radius: 50%; 304 | background-color: #e5e5e5; 305 | } 306 | .education-content .row .timeline-title { 307 | font-weight: 700; 308 | font-size: 18px; 309 | margin-bottom: 12px; 310 | } 311 | .education-content .row .internship .timeline-title { 312 | font-weight: 700; 313 | font-size: 18px; 314 | margin-bottom: 8px; 315 | } 316 | .education-content .row .timeline-text{ 317 | line-height: 25px; 318 | font-size: 16px; 319 | text-align: justify; 320 | } 321 | 322 | 323 | 324 | /*---------------------------Projects---------------------------*/ 325 | .project-content{ 326 | padding: 90px 0; 327 | /* color:#fff; */ 328 | } 329 | .project-title{ 330 | margin-bottom: 60px; 331 | text-align: center; 332 | } 333 | .project-title h4{ 334 | text-transform: uppercase; 335 | font-size: 40px; 336 | line-height: 40px; 337 | color: #fed700; 338 | margin-bottom: 20px; 339 | } 340 | .project-title p{ 341 | color: #e5e5e5; 342 | } 343 | .projects{ 344 | display: flex; 345 | justify-content:space-between; 346 | flex-wrap: wrap; 347 | } 348 | .project{ 349 | /* padding: 30px 15px; */ 350 | color: #e5e5e5; 351 | border: 2px solid #e5e5e5; 352 | border-radius: 10px; 353 | width: 100%; 354 | position: relative; 355 | padding: 25px; 356 | text-align: center; 357 | flex-basis: 32%; 358 | transition: .3s; 359 | } 360 | .project i{ 361 | background-color: #fed700; 362 | width: 60px; 363 | height: 60px; 364 | color: #333; 365 | font-size: 26px; 366 | line-height: 60px; 367 | border-radius: 50%; 368 | } 369 | .project h4{ 370 | font-size: 26px; 371 | text-transform: capitalize; 372 | margin: 20px 0; 373 | } 374 | .project p{ 375 | text-align: justify; 376 | } 377 | .project:hover{ 378 | border-color: #fed700; 379 | } 380 | 381 | 382 | 383 | /*---------------------------Contact Me---------------------------*/ 384 | .contact-content{ 385 | padding: 100px 0; 386 | color: #fff; 387 | text-align: center; 388 | } 389 | .contact-content .contact-title h4{ 390 | font-size: 40px; 391 | text-transform: capitalize; 392 | color: #fed700; 393 | padding-bottom: 10px; 394 | } 395 | .contact-content .contact-title p{ 396 | padding-bottom: 20px; 397 | } 398 | .contact{ 399 | max-width: 700px; 400 | margin: auto; 401 | } 402 | .contact input,.contact textarea{ 403 | width: 100%; 404 | padding: 15px; 405 | border: 0; 406 | margin-bottom: 10px; 407 | } 408 | 409 | .contact .submit{ 410 | width: auto; 411 | background-color: #fed700; 412 | padding: 10px 40px; 413 | font-weight:bold ; 414 | font-size: 18px; 415 | } 416 | .contact .submit:hover{ 417 | transform: scale(1.1); 418 | cursor: pointer; 419 | } 420 | #msg{ 421 | color: #fff; 422 | font-size: 20px; 423 | margin-top: -8px; 424 | display: block; 425 | } 426 | 427 | 428 | 429 | 430 | 431 | 432 | /*---------------------------Footer---------------------------*/ 433 | .footer { 434 | max-width: 950px; 435 | margin: 0 auto; 436 | padding: 15px 0 26px; 437 | border-top: 1px solid rgba(255, 255, 255, 0.1); 438 | color: rgba(255, 255, 255, 0.4); 439 | display: flex; 440 | flex-direction: column; 441 | align-items: center; 442 | text-align: center; 443 | } 444 | .footer .message { 445 | font-size: 12px; 446 | color: rgba(255, 255, 255, 0.4); 447 | margin-bottom: 10px; 448 | } 449 | 450 | .copyright { 451 | font-size: 12px; 452 | } 453 | 454 | 455 | 456 | 457 | /*------------------- Responsive Design on small screen -------------------*/ 458 | 459 | /* Medium layout */ 460 | @media only screen and (min-width:1000px) and (max-width:1200px){ 461 | .container{ 462 | width: 970px; 463 | } 464 | } 465 | 466 | @media(max-width:1050px){ 467 | .FirstElement{ 468 | flex-direction: column; 469 | padding-top: 2rem; 470 | } 471 | .profile-text{ 472 | padding: 40px 0px; 473 | } 474 | } 475 | 476 | 477 | 478 | /* tablet layout */ 479 | @media only screen and (min-width:768px) and (max-width:999px){ 480 | .container{ 481 | width: 750px; 482 | } 483 | } 484 | 485 | 486 | /* Mobile Layout */ 487 | @media only screen and (max-width:767px){ 488 | .container{ 489 | width: 350px; 490 | } 491 | 492 | .header .menu_icon { 493 | display: block; 494 | } 495 | .header ul{ 496 | display: none; 497 | } 498 | .header i{ 499 | color: #e5e5e5; 500 | } 501 | 502 | .profile-text{ 503 | width: 350px; 504 | } 505 | .FirstElement .profile-text p{ 506 | text-align: justify; 507 | } 508 | .about{ 509 | flex-direction: column; 510 | flex-basis: 100%; 511 | margin-bottom: 30px; 512 | } 513 | .about-skills{ 514 | width: 100%; 515 | margin-top: 30px; 516 | } 517 | .education-content .row { 518 | flex-direction: column; 519 | height: auto; 520 | margin-bottom: 50px; 521 | } 522 | 523 | .education-content .row .education, 524 | .education-content .row .internship { 525 | flex-basis: 100%; 526 | max-width: 100%; 527 | margin-top: 30px; 528 | } 529 | .project{ 530 | flex-basis: 100%; 531 | margin-bottom: 30px; 532 | } 533 | 534 | } 535 | 536 | -------------------------------------------------------------------------------- /site_current/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 |
28 |
29 |
30 |
31 |
38 |
39 |
42 |
43 |
51 | I'm a Computer Science graduate and a passionate full-time developer. With a strong foundation in coding principles and a commitment to innovation and learning, I aim to transform complex problems into elegant, scalable solutions. My journey in the tech world is fueled by my love for creating and my desire to make a difference through technology. Welcome to my portfolio, where you can explore my projects, experiences, and the skills I've acquired along the way. Let's code, learn, and grow together!
57 | 58 |Discover my projects, where creativity meets innovation
202 |This is a simple implementation of the classic Console Games like Snake, Brick-Breaker and fun Math- games using JAVA.
209 |Quiz Application using PHP CodeIgniter, MySQL DB, JS, Jquery, Bootstrap, Ajax
216 |Implemented a real-time ChatRoom application using Rust, utilizing the Rocket framework and Tokio Runtime for seamless and concurrent communication..
222 |Get In Touch
235 |Hola, fellow creature. As I find myself perched in front of the sterile luminescence of my computer, my mind is tormented by the ineffable weight of ennui. The tick-tock of the clock serves only to mock my efforts, as I am bound to the Sisyphean task of typing and deleting.
60 |Why must we toil in this manner, day in and day out? Is this truly what we were put on this earth to do? Nay, for the human spirit yearns for something more. And yet, what is this 'more' we seek?
61 |Delusions have been shattered by the reality of existence. The constant striving, the ceaseless labor - it is all so futile. Perhaps, in the end, there is no true purpose to life. Perhaps we are but mere players in a grand and terrible spectacle, doomed to repeat the same mistakes over and over again. And yet, in this very absurdity lies the key to our freedom.
62 |So I shall continue to type and delete, to work and toil, but with a newfound sense of liberation. For in embracing the dread and the despair, we are free to find our own path, to create our own meaning. And in that, there is a glimmer of hope.
63 | 64 |Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quis, cumque repellat, tempora recusandae aliquam nemo esse natus impedit, nostrum temporibus veritatis eaque soluta aperiam id repudiandae fugiat deserunt! Explicabo, veritatis?
255 |Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quis, cumque repellat, tempora recusandae aliquam nemo esse natus impedit, nostrum temporibus veritatis eaque soluta aperiam id repudiandae fugiat deserunt! Explicabo, veritatis?
264 |Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quis, cumque repellat, tempora recusandae aliquam nemo esse natus impedit, nostrum temporibus veritatis eaque soluta aperiam id repudiandae fugiat deserunt! Explicabo, veritatis?
273 |Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quis, cumque repellat, tempora recusandae aliquam nemo esse natus impedit, nostrum temporibus veritatis eaque soluta aperiam id repudiandae fugiat deserunt! Explicabo, veritatis?
286 |Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quis, cumque repellat, tempora recusandae aliquam nemo esse natus impedit, nostrum temporibus veritatis eaque soluta aperiam id repudiandae fugiat deserunt! Explicabo, veritatis?
295 |Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quis, cumque repellat, tempora recusandae aliquam nemo esse natus impedit, nostrum temporibus veritatis eaque soluta aperiam id repudiandae fugiat deserunt! Explicabo, veritatis?
304 |
320 |
324 |
327 |
331 |
334 |
338 |
341 |
345 |
348 |
352 |
355 |
359 |
384 |