Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the health-check domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/yogisv5/sitesbyyogi.com/wp-includes/functions.php on line 6260
JavaScript Foundations (Course Overview) - SitesByYogi
StreetGeek Academy · Web Development Track

🎓 JavaScript Foundations: From Static to Interactive

Level: Beginner  •  Duration: ~10–12 hours

🎯 Course Goal

By the end, students will write clean, modern JavaScript (ES6+), manipulate the DOM, handle events, validate forms, fetch API data, store state locally, and enhance their portfolio site with interactive features.

🧩 Course Structure Overview

# Module Duration Key Deliverable
1 Intro to JavaScript & Setup 45m JS file linked to portfolio, console basics
2 Variables, Types & Operators 60m Type demos + mini calculator
3 Control Flow 45m Feature flag toggles on portfolio
4 Functions & Scope 60m Utilities file + pure functions
5 Arrays & Objects (ES6) 60m Data-driven project cards
6 The DOM 75m Dynamic portfolio sections (create/append/update)
7 Events & Interactivity 75m Mobile menu, modal, tabs, or accordion
8 Forms & Validation 60m Contact form validation + UX feedback
9 Fetch API, Async/Await & Storage 90m Live data widget + localStorage state
10 Final Project 2–3h Interactive, data-enhanced portfolio v1.0

📘 Detailed Module Breakdown

MODULE 1: Intro to JavaScript & Setup

Objective: Understand where JS runs, how to include it, and use dev tools.

  • Where JS runs (browser/Node), <script> placement, defer
  • Console, console.log, errors, DevTools
  • Strict mode, ES6 overview

Deliverableapp.js linked to portfolio; log site version and greet user.

MODULE 2: Variables, Types & Operators

Objective: Work with primitives, let/const, and basic expressions.

  • let, const, var (why to avoid var)
  • Types: string, number, boolean, null, undefined, bigint, symbol
  • Template literals, arithmetic, comparison, logical operators

Mini-Project ✅ Mini price calculator (subtotal, tax, total) in console + DOM printout.

MODULE 3: Control Flow

Objective: Add logic with conditionals and loops.

  • if/else, switch, truthy/falsy
  • Loops: for, while, for…of, Array.prototype.forEach
  • Guard clauses, early returns

Portfolio Task ✅ Feature flags: based on a boolean, show/hide a promo banner or beta badge.

MODULE 4: Functions & Scope

Objective: Write reusable functions; understand scope and closures.

  • Function declarations vs expressions, arrow functions
  • Parameters, defaults, rest/spread
  • Scope (global/block/function), closures (intro)

Deliverableutils.js with 3+ pure functions (e.g., formatCurrency, slugify, clamp).

MODULE 5: Arrays & Objects (ES6 Essentials)

Objective: Manipulate structured data cleanly.

  • Array methods: map, filter, reduce, find, some/every, sort
  • Objects: destructuring, shorthand properties, computed keys
  • JSON basics

Mini-Project ✅ Data-driven portfolio grid: render projects from an array of objects.

MODULE 6: The DOM (Document Object Model)

Objective: Read and update the page dynamically.

  • Querying elements, creating nodes, classList, dataset
  • Insert/update/remove; performance tips (fragments)
  • Measuring and reading attributes

Deliverable ✅ Build “Recent Projects” section entirely via JS from data; lazy add 6+ cards.

MODULE 7: Events & Interactivity

Objective: Respond to user actions.

  • addEventListener, event object, delegation
  • Keyboard and click events; accessibility tips (focus, ARIA)
  • UI patterns: mobile nav toggle, tabs, accordion, modal

Mini-Project (choose one) ✅ Mobile menu toggle with outside-click close • Tabs by category • Modal for enlarged screenshots

MODULE 8: Forms & Validation

Objective: Validate user input and give UX feedback.

  • Accessing inputs, change/input/submit events
  • HTML5 validation APIs, custom messages
  • Error states, success states, preventing submit

Deliverable ✅ Contact form validation (name, email, message); inline errors; success reset.

MODULE 9: Fetch API, Async/Await & Storage

Objective: Get data from the web and persist preferences locally.

  • fetch, responses, .json(), error handling
  • async/await, try/catch, loading states, basic retries
  • localStorage/sessionStorage for theme, menu state, filters

Mini-Projects ✅ “Latest GitHub Repos” widget • Dark Mode toggle persisted to localStorage

MODULE 10: Final Project — Interactive Portfolio v1.0

Objective: Integrate everything into your live portfolio.

  • JS-rendered sections: Projects or Testimonials from a data array
  • Interactivity: At least two patterns (e.g., mobile nav + tabs/modal/accordion)
  • Forms: Client-side validation with helpful messages
  • Async: Fetch external data (e.g., GitHub repos, public JSON placeholder)
  • State: Persist at least one preference in localStorage (e.g., dark mode)
  • Code Quality: Separate utils.js, data.js, app.js; comments + simple module pattern

Stretch Goals Debounced search • “Back to top” smooth scroll • Intersection Observer to animate cards on scroll

🧾 Course Materials

  • PDF lesson notes
  • Starter files (/js/utils.js, /js/app.js, /js/data.js)
  • Practice exercises & quizzes per module
  • Final project checklist & rubric
  • Certificate of completion

🧱 Suggested Next Courses

  • PHP Foundations (pair the front end with dynamic back ends)
  • WordPress Development Foundations
  • Modern React (or Vue) Essentials
  • APIs & AJAX Deep Dive

🧑‍🏫 Instructor Notes (Internal)

  • Encourage Chrome DevTools mastery (Elements, Console, Network)
  • Insist on semantic HTML + accessible JS interactions (focus states, ARIA)
  • Promote small, composable functions and data-driven UIs
  • Keep everything tied to the student’s portfolio site for momentum and coherence