diff --git a/README.md b/README.md index 49f4729..939c6f7 100644 --- a/README.md +++ b/README.md @@ -1,138 +1,228 @@ # LAB_HTML_CSS -# Learn the about HTML/CSS and apply your learning on 4 mini projects! -- Eatch mini project is in a seperate folder. -- Your final result should have at least 4 web mini projects (you can create more while learning!) - -## Learning plan for HTML/CSS with resources. You'll find more resources submitted to discord. - -### 1: Introduction to HTML -**Goals:** Understand the basic structure of a web page and essential HTML elements. - -1. **Basic Structure** - - Learn about HTML tags and the structure of an HTML document. - - Create your first HTML file with ``, ``, ``, and `` tags. - - Resources: MDN Web Docs - [HTML Basics](https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/HTML_basics) - -2. **Text and Formatting** - - Learn about headings (`

` to `

`), paragraphs (`

`), bold (``), and italic (``). - - Practice creating and formatting text. - - Resources: W3Schools - [HTML Elements](https://www.w3schools.com/html/html_elements.asp) - -3. **Links and Images** - - Learn how to create links (``) and add images (``). - - Understand attributes like `href` and `src`. - - Resources: W3Schools - [HTML Links](https://www.w3schools.com/html/html_links.asp), [HTML Images](https://www.w3schools.com/html/html_images.asp) - -4. **Lists and Tables** - - Learn about ordered (`

    `) and unordered (`
      `) lists, and list items (`
    • `). - - Introduction to tables (``, ``, `
      `, ``). - - Resources: MDN Web Docs - [HTML Lists](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ul), [HTML Tables](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table) - -5. **Forms and Input** - - Learn about forms (`
      `) and input elements (``, ` + + + +
      + +

      + + + + +
      + + + + + +
      + + + + + + + + + + + + + + \ No newline at end of file diff --git a/careers/cv/script.js b/careers/cv/script.js new file mode 100644 index 0000000..dd7ec0c --- /dev/null +++ b/careers/cv/script.js @@ -0,0 +1,212 @@ +// =============================== +// SEARCH CLICK +// =============================== +const search = document.querySelector(".search"); +if (search) { + search.addEventListener("click", () => { + alert("Search feature coming soon"); + }); +} + +// =============================== +// LANGUAGE TOGGLE +// =============================== +const langBtn = document.querySelector(".lang-toggle"); + +if (langBtn) { + langBtn.addEventListener("click", () => { + if (langBtn.textContent === "AR") { + langBtn.textContent = "EN"; + document.body.style.direction = "rtl"; + } else { + langBtn.textContent = "AR"; + document.body.style.direction = "ltr"; + } + }); +} + +// =============================== +// AUDIO BUTTON +// =============================== +const audioBtn = document.querySelector('[title="Play audio"]'); + +if (audioBtn) { + audioBtn.addEventListener("click", () => { + alert("Audio feature will be added later"); + }); +} + +// =============================== +// FAVORITE BUTTON +// =============================== +const starBtn = document.querySelector(".fa-star"); + +if (starBtn && starBtn.parentElement) { + starBtn.parentElement.addEventListener("click", () => { + starBtn.classList.toggle("active"); + + if (starBtn.classList.contains("active")) { + starBtn.style.color = "#facc15"; + } else { + starBtn.style.color = "white"; + } + }); +} + +// =============================== +// REFRESH BUTTON +// =============================== +const refreshBtn = document.querySelector(".fa-sync"); + +if (refreshBtn && refreshBtn.parentElement) { + refreshBtn.parentElement.addEventListener("click", () => { + location.reload(); + }); +} + +// =============================== +// FILE BUTTON +// =============================== +const fileBtn = document.querySelector(".fa-file-alt"); + +if (fileBtn && fileBtn.parentElement) { + fileBtn.parentElement.addEventListener("click", () => { + alert("Opening full article..."); + }); +} + +// =============================== +// PLUS BUTTON +// =============================== +const plusBtn = document.querySelector(".fa-plus"); + +if (plusBtn && plusBtn.parentElement) { + plusBtn.parentElement.addEventListener("click", () => { + alert("Feature coming soon"); + }); +} + +// =============================== +// CARDS NAVIGATION +// =============================== +const cards = document.querySelectorAll(".cards .card"); + +if (cards.length > 0) { + cards.forEach((card, index) => { + card.addEventListener("click", () => { + const sections = document.querySelectorAll("main section"); + + if (sections[index]) { + sections[index].scrollIntoView({ + behavior: "smooth" + }); + } + }); + }); +} + +// =============================== +// SIDEBAR BUTTONS +// =============================== +const sidebarBtns = document.querySelectorAll(".sidebar button"); + +if (sidebarBtns.length > 0) { + sidebarBtns.forEach((btn, i) => { + const actions = ["Audio", "Copy link", "Settings", "Help"]; + + btn.addEventListener("click", () => { + alert(actions[i]); + }); + }); +} + +// =============================== +// FORM (Formspree FIX) +// =============================== +const form = document.getElementById("contact-form"); +const status = document.getElementById("form-status"); + +if (form) { + form.addEventListener("submit", async (e) => { + e.preventDefault(); + + const data = new FormData(form); + + const response = await fetch(form.action, { + method: "POST", + body: data, + headers: { Accept: "application/json" } + }); + + if (response.ok) { + status.innerHTML = " Message sent successfully!"; + form.reset(); + } else { + status.innerHTML = " Something went wrong."; + } + }); +} + +// =============================== +// GITHUB SLIDER +// =============================== +document.addEventListener("DOMContentLoaded", () => { + + const username = "Atheer-Abdullah"; + const container = document.getElementById("projectsContainer"); + + if (container) { + fetch(`https://api.github.com/users/${username}/repos`) + .then(res => res.json()) + .then(data => { + + data.slice(0,6).forEach(repo => { + const card = document.createElement("div"); + card.className = "project-card"; + + card.innerHTML = ` + +

      ${repo.name}

      +

      ${repo.description || "No description"}

      + View Project + `; + + container.appendChild(card); + }); + + + container.innerHTML += container.innerHTML; + + startSlider(); + }); + } + + function startSlider() { + function animate() { + container.scrollLeft += 1; + + if (container.scrollLeft >= container.scrollWidth / 2) { + container.scrollLeft = 0; + } + + requestAnimationFrame(animate); + } + + animate(); + } + +}); +const magnetic = document.querySelector(".magnetic-text"); + +magnetic.addEventListener("mousemove", (e) => { + const rect = magnetic.getBoundingClientRect(); + + const x = e.clientX - rect.left - rect.width / 2; + const y = e.clientY - rect.top - rect.height / 2; + + magnetic.style.transform = `translate(${x * 0.2}px, ${y * 0.2}px) scale(1.05)`; +}); + +magnetic.addEventListener("mouseleave", () => { + magnetic.style.transform = "translate(0,0) scale(1)"; +}); \ No newline at end of file diff --git a/careers/cv/style.css b/careers/cv/style.css new file mode 100644 index 0000000..82fb253 --- /dev/null +++ b/careers/cv/style.css @@ -0,0 +1,504 @@ +/* General */ +body { + font-family: 'Poppins', sans-serif; + background-color: #0A0A0A; + color: #FFFFFF; + margin: 0; + padding: 0; + cursor: none; +} +body::after { + content: ""; + position: fixed; + width: 300px; + height: 300px; + background: #198754; + filter: blur(120px); + top: 20%; + left: 10%; + opacity: 0.15; + z-index: -1; +} + +/* Smooth scroll */ +html { + scroll-behavior: smooth; +} + +/* Navbar */ +.navbar { + background-color: rgba(26, 28, 31, 0.7) !important; + backdrop-filter: blur(10px); +} + +.navbar .nav-link { + color: #FFFFFF !important; + transition: 0.3s; +} + +.navbar .nav-link:hover { + color: #198754 !important; +} + +/* Hero */ +.hero { + height: 100vh; + background-color: #0A0A0A; + padding-top: 80px; +} + +.hero p { + color: #A0A0A0; +} + +.hero img { + border: 2px solid #2A2A2A; +} + +/* Sections */ +section { + padding: 50px 0; +} + +/* Titles */ +h2 { + font-weight: bold; + margin-bottom: 20px; +} + +/* Skills Section */ +.bg-dark { + background-color: #111111 !important; +} + +/* Education fix */ +.bg-light { + background-color: #F5F5F5 !important; + color: #000000 !important; +} + +/* Cards */ +.card { + background-color: #1A1A1A; + border: 1px solid #2A2A2A; + color: white; + transition: 0.3s; + border-radius: 15px; +} + +.card:hover { + transform: translateY(-5px); + border-color: #0F5132; +} + +/* Text secondary */ +.text-secondary { + color: #A0A0A0 !important; +} + +/* Buttons */ +.btn { + transition: 0.3s; +} + +.btn:hover { + transform: scale(1.05); +} + +.btn-light { + background-color: #0F5132; + color: white; + border-radius: 30px; + padding: 10px 25px; + border: none; +} + +.btn-light:hover { + background-color: #198754; +} + +.btn-outline-light { + border-radius: 30px; + padding: 10px 25px; + border: 1px solid white; +} + +.btn-outline-light:hover { + background-color: white; + color: black; +} + +/* Links */ +a { + text-decoration: none; + color: #198754; +} + +a:hover { + color: #0F5132; +} + +/* Fix spacing */ +.container { + position: relative; + z-index: 2; +} + +/* Timeline */ +.timeline-section { + background-color: #0A0A0A; +} + +.timeline { + position: relative; + max-width: 900px; + margin: auto; +} + +.timeline::after { + content: ''; + position: absolute; + width: 3px; + background-color: #0F5132; + top: 0; + bottom: 0; + left: 50%; + transform: translateX(-50%); +} + +.timeline-item { + padding: 20px 40px; + position: relative; + width: 50%; +} + +.timeline-item::after { + content: ''; + position: absolute; + width: 15px; + height: 15px; + right: -8px; + background-color: #0F5132; + border-radius: 50%; + top: 30px; + z-index: 1; +} + +.left { + left: 0; +} + +.right { + left: 50%; +} + +.right::after { + left: -8px; +} + +.content { + padding: 20px; + background-color: #1A1A1A; + border-radius: 10px; + border: 1px solid #2A2A2A; + color: white; +} + +@media screen and (max-width: 768px) { + .timeline::after { + left: 20px; + } + + .timeline-item { + width: 100%; + padding-left: 50px; + padding-right: 25px; + } + + .timeline-item::after { + left: 10px; + } + + .right { + left: 0; + } +} + +.timeline-item:first-child .content { + border-color: #198754; +} +/* PROJECTS SLIDER */ +.projects-slider { + display: flex; + gap: 20px; + overflow-x: auto; + overflow-y: hidden; + padding: 20px; + position: relative; +} + +.projects-slider::-webkit-scrollbar { + height: 6px; +} + +.projects-slider::-webkit-scrollbar-thumb { + background: #198754; + border-radius: 10px; +} + +.project-card { + min-width: 280px; + background: #1A1A1A; + border-radius: 16px; + padding: 15px; + flex-shrink: 0; + transition: 0.3s; + border: 1px solid #2A2A2A; +} + +.project-card:hover { + transform: translateY(-8px); + border-color: #198754; + box-shadow: 0 0 15px rgba(25, 135, 84, 0.3); +} + +.project-card img { + width: 100%; + height: 160px; + object-fit: cover; + border-radius: 10px; + margin-bottom: 10px; +} +.project-card h3 { + font-size: 18px; + color: #FFFFFF; +} + +.project-card p { + font-size: 14px; + color: #A0A0A0; +} + +.project-card a { + color: #198754; + font-weight: bold; +} +/* social links */ +.social-icon { + color: #198754; + text-decoration: none; + font-weight: bold; + transition: 0.3s; +} + +.social-icon:hover { + color: #0F5132; + text-shadow: 0 0 10px #198754; +} + +/* About box */ +.about-box { + background: #111; + border: 1px solid #2A2A2A; + padding: 30px; + border-radius: 15px; + max-width: 700px; +} + +/* شكل الكود */ +.code-tag { + color: #198754; + font-family: monospace; +} + +/* النص */ +.about-box p { + color: #ccc; + margin-bottom: 15px; +} + +/* Service card */ +.service-card { + background: #111; + border: 1px solid #2A2A2A; + border-radius: 15px; + transition: 0.3s; +} + +/* Hover */ +.service-card:hover { + transform: translateY(-8px); + border-color: #198754; + box-shadow: 0 0 15px rgba(25, 135, 84, 0.3); +} + +/* Text */ +.service-card h4 { + color: white; +} + +.service-card p { + color: #aaa; +} + +/* Project card */ +.project-box { + background: #111; + border-radius: 15px; + overflow: hidden; + border: 1px solid #2A2A2A; + transition: 0.3s; +} + +/* Hover */ +.project-box:hover { + transform: translateY(-10px); + border-color: #198754; + box-shadow: 0 0 20px rgba(25, 135, 84, 0.3); +} + +/* Image */ +.project-box img { + width: 100%; + height: 180px; + object-fit: cover; +} + +/* Text */ +.project-box h4 { + color: white; +} + +.project-box p { + font-size: 14px; +} + +/* Form */ +.contact-form input, +.contact-form textarea { + width: 100%; + padding: 12px; + margin-bottom: 15px; + border-radius: 8px; + border: none; + outline: none; + background: #1A1A1A; + color: white; +} + +/* Focus */ +.contact-form input:focus, +.contact-form textarea:focus { + border: 1px solid #198754; +} + +/* Button */ +.contact-form button { + border-radius: 30px; +} + +/* Placeholder */ +.contact-form input::placeholder, +.contact-form textarea::placeholder { + color: #888; +} +.custom-cursor { + width: 25px; + height: 25px; + border: 2px solid #198754; + border-radius: 50%; + position: fixed; + pointer-events: none; + + transform: translate(-50%, -50%); + + transition: transform 0.15s ease-out; + + box-shadow: 0 0 20px rgba(25, 135, 84, 0.6); + + z-index: 9999; +} +/* كل الروابط */ +a:hover { + text-shadow: 0 0 10px #198754; +} + +/* الكروت */ +.project-box:hover, +.service-card:hover { + transform: translateY(-10px) scale(1.02); + box-shadow: 0 0 25px rgba(25, 135, 84, 0.4); +} + +/* الأزرار */ +.btn:hover { + transform: scale(1.07); +} +.education-box { + max-width: 600px; + margin: auto; + text-align: left; +} + +.edu-item h4 { + font-weight: bold; + margin-bottom: 5px; +} + +.edu-item p { + margin: 0; +} + +.edu-item ul { + padding-left: 20px; + margin-top: 10px; +} + +.edu-item ul li { + margin-bottom: 5px; +} +.education-card { + background: #1A1A1A; + border: 1px solid #2A2A2A; + border-radius: 15px; + color: white; + transition: 0.3s; +} + +.education-card:hover { + transform: translateY(-5px); + border-color: #198754; +} + +.education-card h4 { + margin-bottom: 10px; +} + +.education-card ul { + padding-left: 20px; + margin: 0; +} + +.education-card ul li { + margin-bottom: 5px; +} +.navbar-nav { + display: flex; + flex-direction: row !important; + gap: 20px; +} +.magnetic-text { + display: inline-block; + transition: transform 0.2s ease; + will-change: transform; +} +.code-style { + color: #ccc; + font-family: monospace; + line-height: 1.6; +} + +.code-tag { + color: #198754; + font-family: monospace; +} \ No newline at end of file diff --git a/css/introduction/images/Atheer-profile.jpg b/css/introduction/images/Atheer-profile.jpg new file mode 100644 index 0000000..d719a59 Binary files /dev/null and b/css/introduction/images/Atheer-profile.jpg differ diff --git a/css/introduction/images/career-vision.jpg b/css/introduction/images/career-vision.jpg new file mode 100644 index 0000000..5b95d16 Binary files /dev/null and b/css/introduction/images/career-vision.jpg differ diff --git a/css/introduction/images/tuwaiq-banner.png b/css/introduction/images/tuwaiq-banner.png new file mode 100644 index 0000000..421c923 Binary files /dev/null and b/css/introduction/images/tuwaiq-banner.png differ diff --git a/css/introduction/index.html b/css/introduction/index.html new file mode 100644 index 0000000..d8f2f14 --- /dev/null +++ b/css/introduction/index.html @@ -0,0 +1,208 @@ + + + + + +Atheer - Web Development Journey + + + + + + + + + + + +

      My Learning Journey

      +

      Web Development Bootcamp – Tuwaiq Academy

      + +
      +

      Hello! My name is Atheer Alharthi.

      + +

      +I am currently participating in the +Web Development with Python Bootcamp at Tuwaiq Academy. +

      + +

      +This page documents my learning journey and the skills I am developing throughout the bootcamp. +

      +
      + +
      + +
      +

      About the Bootcamp

      +

      +The bootcamp focuses on building modern web applications using Python and web technologies. +Students learn programming fundamentals, backend development with Django, and how to build real projects. +

      +

      You can learn more about the academy here:

      +

      +Visit Tuwaiq Academy +

      +
      + +
      + +
      +

      Topics I Am Learning

      +
        +
      • Python programming fundamentals
      • +
      • Git and GitHub version control
      • +
      • Web development basics (HTML & CSS)
      • +
      • Django framework
      • +
      • Databases and ORM
      • +
      • User authentication and permissions
      • +
      +
      + +
      + +
      +

      Bootcamp Learning Path

      +
        +
      1. Python Fundamentals
      2. +
      3. Functions and Data Structures
      4. +
      5. CLI Project
      6. +
      7. Introduction to Web Development
      8. +
      9. Django Framework
      10. +
      11. Django ORM and Databases
      12. +
      13. Authentication and Authorization
      14. +
      15. Final Capstone Project
      16. +
      +
      + +
      + +
      +

      Bootcamp Schedule Overview

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      WeekTopicDescription
      1Python 101Introduction to programming concepts and Python basics.
      2Python 102Functions, data structures, and object-oriented programming.
      4Web IntroductionHow the internet works and introduction to HTML & CSS.
      5Django IntroductionBuilding web applications using Django.
      7Django ORMWorking with databases and models.
      9AuthenticationUser login systems and permissions.
      +
      + +
      + +
      +

      My Projects

      +
      +
      + +
      + +

      My Career Vision

      + +My future vision in technology + +

      + +As a Tuwaiq Academy trainee, this image reflects my aspiration to grow in the world of technology. +It represents my journey into tech and my ambition to build a meaningful career in Saudi Arabia’s rapidly growing tech industry. + +

      + +
      + + + +
      + +
      +

      Get In Touch

      +
      + + + + + + + + + + + + + +
      +
      + + + + + \ No newline at end of file diff --git a/css/introduction/script.js b/css/introduction/script.js new file mode 100644 index 0000000..1af75dc --- /dev/null +++ b/css/introduction/script.js @@ -0,0 +1,54 @@ +// SCROLL ANIMATION +const sections = document.querySelectorAll(".section"); + +window.addEventListener("scroll", () => { + sections.forEach(section => { + const top = section.getBoundingClientRect().top; + if (top < window.innerHeight - 100) { + section.classList.add("show"); + } + }); +}); + +// GITHUB PROJECTS +const username = "Atheer-Abdullah"; +const container = document.getElementById("projectsContainer"); + +fetch(`https://api.github.com/users/${username}/repos`) + .then(res => res.json()) + .then(data => { + + data.forEach(repo => { + + const card = document.createElement("div"); + card.className = "project-card"; + + card.innerHTML = ` + +

      ${repo.name}

      +

      ${repo.description || "No description"}

      + View Project + `; + + const img = card.querySelector(".project-img"); + + const testImg = new Image(); + testImg.src = `https://opengraph.githubassets.com/1/${username}/${repo.name}`; + + testImg.onload = () => { + img.src = testImg.src; + }; + + container.appendChild(card); + }); + + }); + +// AUTO SCROLL +setInterval(() => { + container.scrollLeft += 1; + + if (container.scrollLeft >= container.scrollWidth - container.clientWidth) { + container.scrollLeft = 0; + } +}, 20); \ No newline at end of file diff --git a/css/introduction/style.css b/css/introduction/style.css new file mode 100644 index 0000000..11843ab --- /dev/null +++ b/css/introduction/style.css @@ -0,0 +1,322 @@ +/*GENERAL*/ + +body{ + margin:0; + font-family:'Inter',sans-serif; + background: linear-gradient(135deg,#0f0326,#1b0640,#2c0a63); + color:#f5f3ff; + padding-top:70px; + overflow-x:hidden; +} + +/*BACKGROUND*/ + +body::before{ + content:""; + position:fixed; + top:50%; + left:10%; + transform:translateY(-50%); + width:100%; + height:550px; + background:url("images/tuwaiq-banner.png") no-repeat center/100% auto; + opacity:0.12; + pointer-events:none; + filter: drop-shadow(0 0 20px #8b5cf6); + z-index:-1; +} + +/*NAVBAR*/ + +.navbar{ + position:fixed; + top:0; + left:0; + width:100%; + display:flex; + justify-content:space-between; + align-items:center; + padding:10px 16px; + background:rgba(15,3,38,0.7); + backdrop-filter:blur(12px); + z-index:1000; +} + +.navbar h3{ + color:#c4b5fd; + margin:0; +} + +.nav-links{ + display:flex; + gap:16px; + margin-right:30px; +} + +.nav-links a{ + text-decoration:none; + color:#c4b5fd; + font-size:13px; + transition:0.3s; +} + +.nav-links a:hover{ + color:white; + text-shadow:0 0 10px #8b5cf6; +} + + +/*TITLES*/ + + +h1{ + text-align:center; + font-size:42px; + color:#c4b5fd; + margin-bottom:8px; + font-family:'Poppins', sans-serif; +} + +h2{ + text-align:center; + font-size:26px; + color:#8b5cf6; + margin-bottom:30px; + font-family:'Poppins', sans-serif; +} + + +/*TEXT*/ + + +p{ + max-width:700px; + margin:0 auto 14px; + line-height:1.7; + color:#ddd6fe; +} + +/*NAVIGATION*/ + + +ul{ + list-style:none; + padding:0; + display:flex; + justify-content:center; + gap:20px; + flex-wrap:wrap; + max-width:700px; + margin:auto; +} + +ul li a{ + color:#c4b5fd; + text-decoration:none; + padding:8px 14px; + border-radius:8px; + transition:0.3s; +} + +ul li a:hover{ + color:white; + background:rgba(255, 255, 255, 0.2); + box-shadow:0 0 10px #8b5cf6; +} +ul li{ + background:rgba(139,92,246,0.15); + padding:8px 14px; + border-radius:8px; +} + +/*IMAGE*/ + +img{ + display:block; + margin:40px auto; + width:420px; + border-radius:12px; +} + + +/*TABLE*/ + + +table{ + width:100%; + max-width:800px; + margin:30px auto; + border-collapse:collapse; +} + +/*الخلايا*/ + +th, td{ + border:1px solid #3b2b6d; + padding:14px; + text-align:left; +} + +/*الهيدر*/ + +th{ + background:#1e1248; + color:#c4b5fd; +} + +/*صفوف الجدول*/ + +tr{ + background:transparent; +} + + +/*DIVIDER*/ + +hr{ + border:1px solid #3b2b6d; + margin:40px auto; + width:80%; +} + + +/*BUTTON*/ + + +button{ + background:#6d28d9; + color:white; + padding:12px 24px; + border:none; + border-radius:6px; + cursor:pointer; +} + +button:hover{ + background:#8b5cf6; +} + + +/*CONTACT*/ + +#contact{ + width:100%; + max-width:1100px; + margin:auto; + padding:60px 40px; +} + +#contact form{ + width:100%; +} + +/*الحقول البيضاء*/ + +#contact input, +#contact textarea, +#contact select{ + width:100%; + display:block; + padding:12px; + margin-top:6px; + margin-bottom:18px; + border-radius:6px; + border:none; + background:#e5e5e5; + color:#333; + box-sizing:border-box; +} + +/*textarea*/ + +#contact textarea{ + min-height:140px; +} + +/*labels*/ + +#contact label{ + display:block; + margin-bottom:6px; + color:#c4b5fd; +} +h1, h2{ + transition: 0.3s; +} + +h1:hover{ + text-shadow: 0 0 15px #a78bfa; +} + +h2:hover{ + text-shadow: 0 0 10px #8b5cf6; +} + +/*CENTER LEARNING PATH*/ + + +ol{ + max-width:300px; + margin:0 auto; + text-align:left; +} + + +/*PROJECTS SLIDER*/ + + +.projects-slider{ + display:flex; + gap:20px; + overflow-x:auto; + padding:20px 0; + scroll-behavior:smooth; +} + +/*شكل السكرول*/ + +.projects-slider::-webkit-scrollbar{ + height:6px; +} + +.projects-slider::-webkit-scrollbar-thumb{ + background:#8b5cf6; + border-radius:10px; +} + +/*الكارد*/ + +.project-card{ + min-width:280px; + background:#14073a; + border-radius:16px; + padding:20px; + flex-shrink:0; + transition:0.3s; +} + +.project-card:hover{ + transform:translateY(-10px); + box-shadow:0 0 20px #8b5cf6; +} + +.project-card h3{ + margin-bottom:10px; +} + +.project-card p{ + font-size:13px; +} + +.project-card a{ + color:#c4b5fd; + font-size:13px; + text-decoration:none; +} +.project-card img{ + width:100%; + height:160px; + object-fit:cover; + border-radius:10px; + margin-bottom:10px; +} diff --git a/dashboard/index.html b/dashboard/index.html new file mode 100644 index 0000000..ebb68a3 --- /dev/null +++ b/dashboard/index.html @@ -0,0 +1,189 @@ + + + + + +Developer Dashboard + + + + + + + +
      + + + + + +
      +
      + + +
      + + +
      + + +
      +
      +

      Projects

      +

      12 Active Projects

      +
      +
      +

      Deployments

      +

      5 Running

      +
      +
      +

      Errors

      +

      2 Needs Fix

      +
      +
      +

      Systems

      +

      8 Connected

      +
      +
      + + +
      + +
      +

      Projects Activity

      +
      + +
      +
      + +
      +

      System Status

      +
      + +
      +
      + +
      + + +
      +

      Active Projects

      + +
      +
      +

      Portfolio Website

      +

      + Running +

      + +
      + +
      +

      E-commerce API

      +

      + Deploying +

      + +
      + +
      +

      Dashboard App

      +

      + Error +

      + +
      +
      +
      + + +
      +

      Connected Systems

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      SystemDescriptionTypeStatus
      GitHubCode hostingDev ToolConnected
      VercelDeploymentHostingRunning
      MongoDBDatabaseDBConnected
      FirebaseBackendBaaSError
      +
      + +
      +
      + +
      + + + + + + + \ No newline at end of file diff --git a/dashboard/script.js b/dashboard/script.js new file mode 100644 index 0000000..3fe83b0 --- /dev/null +++ b/dashboard/script.js @@ -0,0 +1,181 @@ +// ======================= +// DATA SOURCE +// ======================= +let projects = [ + { name: "Portfolio", status: "Running" }, + { name: "E-commerce", status: "Deploying" }, + { name: "Dashboard", status: "Error" }, + { name: "API Service", status: "Running" } +]; + +let logs = []; + +// ======================= +// CALCULATE STATS +// ======================= +function calculateStats() { + return { + total: projects.length, + running: projects.filter(p => p.status === "Running").length, + errors: projects.filter(p => p.status === "Error").length, + }; +} + +// ======================= +// UPDATE CARDS +// ======================= +function updateCards() { + const stats = calculateStats(); + + document.querySelector(".card:nth-child(1) p").textContent = + stats.total + " Active Projects"; + + document.querySelector(".card:nth-child(2) p").textContent = + stats.running + " Running"; + + document.querySelector(".card:nth-child(3) p").textContent = + stats.errors + " Needs Fix"; + + // تغيير لون كارد الأخطاء + const errorCard = document.querySelector(".card:nth-child(3)"); + errorCard.style.background = + stats.errors > 0 ? "#fee2e2" : "#dcfce7"; +} + +// ======================= +// LINE CHART +// ======================= +const lineChart = new Chart(document.getElementById("lineChart"), { + type: "line", + data: { + labels: ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"], + datasets: [{ + data: [3,5,2,8,6,7,4], + borderColor: "#6366f1", + backgroundColor: "rgba(99,102,241,0.1)", + fill: true, + tension: 0.4, + borderWidth: 2, + pointRadius: 3 + }] + }, + options: { + responsive: true, + maintainAspectRatio: false, + plugins: { legend: { display: false } } + } +}); + +// ======================= +// BAR CHART +// ======================= +const barChart = new Chart(document.getElementById("barChart"), { + type: "bar", + data: { + labels: ["Running","Deploying","Error"], + datasets: [{ + data: [0, 0, 0], + backgroundColor: ["#22c55e","#3b82f6","#ef4444"] + }] + }, + options: { + responsive: true, + maintainAspectRatio: false, + plugins: { legend: { display: false } } + } +}); + +// ======================= +// UPDATE CHARTS +// ======================= +function updateCharts() { + const running = projects.filter(p => p.status === "Running").length; + const deploying = projects.filter(p => p.status === "Deploying").length; + const error = projects.filter(p => p.status === "Error").length; + + barChart.data.datasets[0].data = [running, deploying, error]; + barChart.update(); +} + +// ======================= +// LOG SYSTEM +// ======================= +function addLog(message) { + logs.push({ + time: new Date().toLocaleTimeString(), + message + }); + + console.clear(); + console.table(logs); +} + +// ======================= +// RANDOM UPDATE +// ======================= +function randomUpdate() { + const statuses = ["Running", "Deploying", "Error"]; + + projects = projects.map(p => ({ + ...p, + status: statuses[Math.floor(Math.random() * statuses.length)] + })); + + addLog("Projects updated "); + + // تنبيه بسيط + if (projects.some(p => p.status === "Error")) { + console.log(" يوجد مشروع فيه خطأ!"); + } +} + +// ======================= +// ADD PROJECT BUTTON +// ======================= +document.querySelector(".btn").addEventListener("click", () => { + projects.push({ + name: "New Project " + (projects.length + 1), + status: "Deploying" + }); + + addLog("New project added "); + + updateCards(); + updateCharts(); +}); + +// ======================= +// SEARCH +// ======================= +document.querySelector(".search").addEventListener("input", (e) => { + const value = e.target.value.toLowerCase(); + + const filtered = projects.filter(p => + p.name.toLowerCase().includes(value) + ); + + console.log("Search result:"); + console.table(filtered); +}); + +// ======================= +// INIT +// ======================= +updateCards(); +updateCharts(); + +// ======================= +// AUTO UPDATE +// ======================= +setInterval(() => { + + randomUpdate(); + updateCards(); + updateCharts(); + + // line chart + lineChart.data.datasets[0].data.shift(); + lineChart.data.datasets[0].data.push(Math.floor(Math.random() * 10)); + lineChart.update(); + +}, 2000); \ No newline at end of file diff --git a/dashboard/style.css b/dashboard/style.css new file mode 100644 index 0000000..ea08595 --- /dev/null +++ b/dashboard/style.css @@ -0,0 +1,317 @@ +/* DARK MODE */ +body.dark { + --bg: #111827; + --card: #1f2937; + --text: #f9fafb; +} + +/* VARIABLES */ +:root { + --bg: #f5f7fb; + --card: #ffffff; + --border: #e5e7eb; + --text: #1f2937; + --muted: #6b7280; + + --green: #22c55e; + --red: #ef4444; + --blue: #3b82f6; +} + +/* RESET */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: "Poppins", sans-serif; +} + +/* BODY */ +body { + margin: 0; + background: var(--bg); +} + +/* LAYOUT */ +.layout { + display: flex; +} + +/* SIDEBAR */ +.sidebar { + width: 250px; + height: 100vh; + background: var(--card); + border-right: 1px solid var(--border); + padding: 20px; + display: flex; + flex-direction: column; + justify-content: space-between; + position: fixed; + left: 0; + top: 0; +} + +/* MAIN */ +.main { + margin-left: 250px; + padding: 30px; + width: 100%; +} + +/* LOGO */ +.logo { + font-weight: bold; + font-size: 18px; + margin-bottom: 30px; +} + +/* MENU */ +.menu { + list-style: none; +} + +.menu li { + padding: 10px; + margin-bottom: 8px; + border-radius: 10px; + cursor: pointer; + color: var(--muted); + transition: 0.2s; +} + +.menu li:hover { + background: #f1f5f9; +} + +.menu .active { + background: #eef2ff; + color: #4f46e5; + font-weight: 600; + position: relative; +} + +.menu .active::after { + content: ""; + position: absolute; + right: -10px; + top: 50%; + transform: translateY(-50%); + width: 6px; + height: 6px; + background: #f43f5e; + border-radius: 50%; +} + +/* SECTION TITLE */ +.section-title { + font-size: 12px; + color: #9ca3af; + margin: 20px 0 10px; +} + +/* PROFILE */ +.profile { + display: flex; + align-items: center; + margin-top: 15px; + padding: 10px; + border-radius: 10px; + background: #f9fafb; +} + +.avatar { + width: 35px; + height: 35px; + background: #6366f1; + border-radius: 50%; + margin-right: 10px; +} + +.name { + font-size: 14px; + font-weight: bold; +} + +/* TOP BAR */ +.topbar { + display: flex; + justify-content: space-between; + margin-bottom: 25px; +} + +.search { + width: 300px; + padding: 10px 15px; + border: 1px solid var(--border); + border-radius: 10px; +} + +.btn { + background: linear-gradient(135deg, #6366f1, #9333ea); + color: white; + padding: 10px 18px; + border: none; + border-radius: 10px; + cursor: pointer; +} + +/* STATS */ +.stats { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 20px; + margin-bottom: 30px; +} + +.card { + background: var(--card); + padding: 20px; + border-radius: 16px; + border: 1px solid var(--border); +} + +.card h3 { + font-size: 14px; + color: var(--muted); +} + +.card p { + font-size: 22px; + margin-top: 8px; + font-weight: bold; +} + +/* PROJECTS */ +.projects { + margin-bottom: 30px; +} + +.projects h2 { + margin-bottom: 15px; +} + +.project-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 20px; +} + +.project-card { + background: var(--card); + padding: 20px; + border-radius: 16px; + border: 1px solid var(--border); +} + +.status { + margin: 10px 0; + font-size: 12px; + font-weight: bold; +} + +.green { color: var(--green); } +.red { color: var(--red); } +.blue { color: var(--blue); } + +.project-card button { + margin-top: 10px; + padding: 8px 12px; + border: none; + background: #eef2ff; + border-radius: 8px; + cursor: pointer; +} + +/* PROGRESS BAR */ +.progress { + height: 6px; + background: #e5e7eb; + border-radius: 10px; + margin-top: 10px; +} + +.progress span { + display: block; + height: 100%; + background: var(--blue); + width: 70%; + border-radius: 10px; +} + +/* TABLE */ +.table { + background: var(--card); + border-radius: 16px; + border: 1px solid var(--border); + padding: 20px; +} + +.table h2 { + margin-bottom: 15px; +} + +table { + width: 100%; + border-collapse: collapse; +} + +th, td { + text-align: left; + padding: 12px; +} + +tr { + border-bottom: 1px solid var(--border); +} +.charts { + display: grid; + grid-template-columns: 1.5fr 1fr; + gap: 15px; + margin-bottom: 25px; +} + +.chart-card { + background: var(--card); + border-radius: 16px; + border: 1px solid var(--border); + padding: 16px; + + height: 280px; + display: flex; + flex-direction: column; +} +.chart-card h3 { + font-size: 14px; + margin-bottom: 10px; + color: var(--muted); +} + +.chart-card canvas { + width: 100% !important; + height: 100% !important; +} +.main { + margin-left: 250px; + padding: 30px; + width: calc(100% - 250px); +} +.container { + max-width: 1100px; + margin: 0 auto; +} +.charts { + display: grid; + grid-template-columns: 2fr 1fr; + gap: 20px; +} +.chart-box { + flex: 1; + position: relative; +} +.chart-box canvas { + position: absolute; + inset: 0; + width: 100% !important; + height: 100% !important; +} \ No newline at end of file diff --git a/html/introduction/images/career vision.jpg b/html/introduction/images/career vision.jpg new file mode 100644 index 0000000..5b95d16 Binary files /dev/null and b/html/introduction/images/career vision.jpg differ diff --git a/html/introduction/index.html b/html/introduction/index.html new file mode 100644 index 0000000..0f0b960 --- /dev/null +++ b/html/introduction/index.html @@ -0,0 +1,200 @@ + + + + +Atheer - Web Development Journey + + + + +

      My Learning Journey

      +

      Web Development Bootcamp – Tuwaiq Academy

      + +

      Hello! My name is Atheer.

      + +

      +I am currently participating in the +Web Development with Python Bootcamp at Tuwaiq Academy. +

      + +

      +This page documents my learning journey and the skills I am developing. +

      + +
      + +

      Navigation

      + + + +
      + +

      About the Bootcamp

      + +

      +The bootcamp focuses on building modern web applications using Python and web technologies. +Students learn programming fundamentals, backend development with Django, and how to build real projects. +

      + +

      You can learn more about the academy here:

      + +Visit Tuwaiq Academy + +
      + +

      Topics I Am Learning

      + +
        +
      • Python programming fundamentals
      • +
      • Git and GitHub version control
      • +
      • Web development basics (HTML & CSS)
      • +
      • Django framework
      • +
      • Databases and ORM
      • +
      • User authentication and permissions
      • +
      + +
      + +

      Bootcamp Learning Path

      + +
        +
      1. Python Fundamentals
      2. +
      3. Functions and Data Structures
      4. +
      5. CLI Project
      6. +
      7. Introduction to Web Development
      8. +
      9. Django Framework
      10. +
      11. Django ORM and Databases
      12. +
      13. Authentication and Authorization
      14. +
      15. Final Capstone Project
      16. +
      + +
      + +

      Bootcamp Schedule Overview

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      WeekTopicDescription
      1Python 101Introduction to programming concepts and Python basics.
      2Python 102Functions, data structures, and object-oriented programming.
      4Web IntroductionHow the internet works and introduction to HTML & CSS.
      5Django IntroductionBuilding web applications using Django.
      7Django ORMWorking with databases and models.
      9AuthenticationUser login systems and permissions.
      + +
      + +

      My Career Vision

      + +My future vision in technology + +

      + +As a Tuwaiq Academy trainee, this image reflects my aspiration to grow in the world of technology. +It represents my journey into tech and my ambition to build a meaningful career in Saudi Arabia’s rapidly growing tech industry. + +

      + +
      + +

      Learning Resources

      + +
        +
      • MDN Web Docs – Web development documentation.
      • +
      • FreeCodeCamp – Interactive coding lessons and projects.
      • +
      • Django Official Website – Documentation for the Django framework.
      • +
      • Satr Platform – Arabic platform for learning programming.
      • +
      • PYPL Index – Popularity ranking of programming languages.
      • +
      • Learn Git Branching – Interactive guide to understanding Git.
      • +
      • LeetCode – Coding interview preparation and algorithm challenges.
      • +
      • Codewars – Practice coding challenges and improve problem solving.
      • +
      • Exercism – Programming exercises with mentorship.
      • +
      • CodeChef – Competitive programming challenges.
      • +
      + +
      + +

      Contact / Feedback

      + +
      + + +
      + + +

      + + +
      + + +

      + + +
      + + + +

      + + +
      + + +

      + + + +
      + + + + \ No newline at end of file