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

#ModuleDurationKey Deliverable
1Intro to JavaScript & Setup45mJS file linked to portfolio, console basics
2Variables, Types & Operators60mType demos + mini calculator
3Control Flow45mFeature flag toggles on portfolio
4Functions & Scope60mUtilities file + pure functions
5Arrays & Objects (ES6)60mData-driven project cards
6The DOM75mDynamic portfolio sections (create/append/update)
7Events & Interactivity75mMobile menu, modal, tabs, or accordion
8Forms & Validation60mContact form validation + UX feedback
9Fetch API, Async/Await & Storage90mLive data widget + localStorage state
10Final Project2–3hInteractive, 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