HOMEPAGE SERIES · 64 lessons

Build Your Homepage — 64 lessons

Starting with a first page deployed via GitHub + Vercel, this 5-stage full-stack series walks through HTML/CSS/JavaScript, Node.js/DB/TypeScript/React deep dives, and Git collaboration, web a11y and web security. The full path totals 5 stages, 11 modules, 64 lessons (roughly 80-120 hours), and is aimed at learners who want to go from zero to deploying a portfolio site they can actually show.

ℹ️ 64/64 lectures are fully translated. Untranslated lectures still display the Korean body with a translation-pending notice.
🚀

Stage 1 — Start

5 lessons

🎨

Stage 2 — Frontend (HTML·CSS·JS)

21 lessons

HTML Basics

EN

DOCTYPE · head/body · core tags

Learn the structure of an HTML document: DOCTYPE, head/body, and the most common tags. Build a clean foundation before styling or scripting.

Text Elements

EN

strong · em · blockquote · code · pre · sub/sup

Use the right tag for the right meaning. Master inline text elements like strong, em, code, and the typographic helpers blockquote, sub, sup.

Links and Images in Depth

EN

href · target · rel · srcset · figure/figcaption

Go beyond <a href="...">. Learn safe targets, accessible image patterns, responsive images with srcset, and figure/figcaption for captions.

Tables

EN

table · thead/tbody · colspan/rowspan · accessibility

Tables are for tabular data. Learn the correct structure (thead/tbody/tfoot), spans, and the small extras that make tables accessible.

Forms

EN

input types · label · validation · button

Forms collect user input. Learn the modern input types, the proper label-for pairing, built-in HTML validation, and the right button types.

Semantic HTML

EN

header · nav · main · article · section · aside · footer

Replace generic <div> soup with semantic elements that describe meaning. Better SEO, better accessibility, easier styling.

CSS Basics

EN

Three ways to apply · selectors · specificity

Get the fundamentals right: how CSS attaches to HTML, the main selectors, and how specificity decides which rule wins when several match.

Color & Typography

EN

color systems · web fonts · line-height

Pick colors with intent and set typography that actually reads well. Learn HSL/OKLCH, web fonts, and the rhythm of line-height and letter-spacing.

The Box Model

EN

content · padding · border · margin · box-sizing

Every element is a box made of four layers. Master padding vs margin, box-sizing: border-box, and how negative margins behave.

Backgrounds, Borders, Shadows

EN

background-image · gradients · box-shadow

Add depth and personality with backgrounds, gradients, and shadows. Use the right tool — performance and aesthetics depend on the choice.

Flexbox

EN

display:flex · justify-content · align-items · gap

Flexbox makes 1-D layout (a row or a column) intuitive. Master the container and item properties and you will solve 80% of layout problems.

CSS Grid

EN

display:grid · template · areas · auto-fit

Grid handles 2-D layout — rows and columns together. The right tool for dashboards, magazine layouts, and complex page templates.

Responsive Design

EN

viewport · media queries · mobile-first · clamp()

Build one layout that works on phones, tablets, and desktops. Use a mobile-first approach, sensible breakpoints, and fluid units like clamp() for typography.

Variables & Types

EN

let · const · primitive vs object · typeof

Declare variables properly with let and const, understand JavaScript's primitive and object types, and use typeof to inspect values.

Control Flow

EN

if · switch · for · while · ternary

Make decisions and repeat actions: if/else chains, switch, for/of/in, while, and the ternary expression for one-liners.

Functions

EN

declaration · arrow · default params · rest/spread

Master the three function forms (declaration, expression, arrow), default and rest parameters, and the spread operator.

Arrays

EN

map · filter · reduce · find · sort

Stop writing for-loops for array transformations. Use map, filter, reduce, find, and sort — the bread and butter of modern JavaScript.

Objects

EN

literal · destructuring · Object.keys · spread · shorthand

Master JavaScript's most-used data structure: objects. Learn destructuring, the shorthand syntax, Object.keys / values / entries, and immutable updates with spread.

The DOM

EN

querySelector · classList · innerHTML vs textContent

Reach into the page from JavaScript. Select elements, change content, toggle classes, and create new nodes — without external libraries.

Events

EN

click · input · submit · delegation · preventDefault

Respond to user actions: handle clicks, form input, submissions, and delegate events for dynamic lists. Stop default behaviors when needed.

Asynchronous JavaScript

EN

Promise · async/await · fetch · error handling

Stop blocking the UI. Use Promises, async/await, and fetch to talk to APIs cleanly — with proper error handling and loading states.

🛠

Stage 3 — Backend (Node·DB)

12 lessons

Node.js Basics

EN

Why Node? · install · REPL · running scripts

Run JavaScript outside the browser. Install Node, use the REPL, run scripts, and understand the runtime model and event loop at a high level.

Node.js Built-in Modules

EN

fs · path · os · http

Use Node's built-in modules: read and write files with fs, build paths safely with path, inspect the OS, and serve HTTP with the built-in http module.

npm & Packages

EN

package.json · npm install · scripts · semver

Use npm to manage dependencies, run scripts, and publish your own packages. Understand semver and lockfiles.

Express.js

EN

routing · middleware · JSON parser · static files

Build real HTTP servers fast with Express. Learn routing, middleware composition, JSON body parsing, and serving static files.

Building a REST API

EN

Resources · status codes · CRUD · CORS

Design and implement a REST API: pick correct status codes, model resources around URLs, support CRUD, and enable CORS for browser clients.

File-based Database (JSON)

EN

Persisting state · read/write JSON · race conditions

Before introducing a real database, persist data to disk as JSON. Learn the limitations (concurrency, scale) and when to graduate to SQLite/PostgreSQL.

Database Concepts

EN

Relational vs NoSQL · schema · primary key · normalization

Understand why we need databases, the difference between relational and NoSQL, and core concepts: tables, rows, columns, primary keys, and normalization.

SQL Basics

EN

SELECT · INSERT · UPDATE · DELETE · WHERE · ORDER BY

Learn the four core SQL operations (CRUD) plus filtering, sorting, and limiting. Practice on a sample SQLite database.

Advanced SQL

EN

JOIN · GROUP BY · HAVING · subqueries · indexes

Combine data across tables with JOINs, summarize with GROUP BY, filter aggregates with HAVING, and speed things up with indexes.

Node + SQLite

EN

better-sqlite3 · prepared statements · transactions

Use SQLite from Node with better-sqlite3 — a fast, synchronous, zero-config SQL database. Cover prepared statements and transactions.

Prisma ORM

EN

schema · migrate · client · type-safe queries

Stop writing raw SQL strings. Prisma gives you a schema file, automatic migrations, and a fully typed client — works with SQLite, PostgreSQL, and more.

MongoDB

EN

documents · collections · find · aggregation · Atlas

Try a NoSQL approach with MongoDB: schemaless documents, flexible queries, aggregation pipelines, and managed hosting on Atlas.

⚛️

Stage 4 — TypeScript & React

14 lessons

TypeScript Basics

EN

Why TS · install · types · tsconfig

Add static types to JavaScript with TypeScript. Set up tsc, learn the primitive types, type inference, and the most useful tsconfig flags.

Type Aliases & any/unknown/never

EN

type · any · unknown · never · narrowing

Name complex types with type aliases, understand any (escape hatch), unknown (safe any), and never (impossible). Learn type narrowing.

Interface vs Type Alias

EN

interface · extends · structural typing

When to use interface and when to use type. Learn extends, declaration merging, and how structural typing decides assignability.

Classes in TypeScript

EN

constructor · public/private · readonly · abstract

Use TypeScript's class features: access modifiers, parameter properties, readonly, and abstract classes for shared base behavior.

Generics

EN

<T> · constraints · keyof · utility types

Write reusable, type-safe abstractions with generics. Master constraints, keyof, and the built-in utility types Partial, Pick, Omit, Record.

TypeScript + React

EN

Component props · useState · useEffect · events

Type your React components properly: props, state, refs, and event handlers. Just enough TypeScript to make React feel like a proper language.

Components & useState

EN

JSX · props · function components · useState

Compose UI from reusable components. Pass data with props, manage local state with useState, and re-render automatically when state changes.

useEffect

EN

side effects · cleanup · dependencies · data fetching

Run side effects (data fetches, subscriptions, timers) outside the render cycle. Learn the dependency array, cleanup, and how to fetch data correctly.

useContext

EN

Prop drilling · Context.Provider · custom provider

Stop drilling props through layers. Use Context to share theme, auth, or i18n state — wrapped in a clean custom provider component.

useReducer

EN

Reducer pattern · dispatch · actions · when over useState

Handle complex state with useReducer — a tiny reducer function and dispatched actions. Predictable, testable, and great for multi-step state.

Custom Hooks

EN

Extracting logic · naming rules · composition

Move repeated stateful logic into reusable hook functions. Learn the naming rules, common patterns (useToggle, useFetch, useLocalStorage), and composition.

Performance

EN

memo · useMemo · useCallback · profiler

Stop unnecessary re-renders. Learn React.memo, useMemo, useCallback, and how to read the React Profiler — but only optimize when you have actually measured a problem.

Next.js App Router

EN

file-based routing · layouts · loading · error · dynamic routes

Master Next.js App Router: folders become routes, layouts wrap pages, dynamic segments handle slugs, and special files give you loading and error UI for free.

Global State Management

EN

When to reach for Zustand / Redux / Jotai · TanStack Query for server state

Decide between local state, Context, and a state library. Compare Zustand, Redux Toolkit, and Jotai briefly, and use TanStack Query for server state.

🛡

Stage 5 — Git · A11y · Security

12 lessons

Branching Strategies

EN

Trunk-based · Git Flow · feature branches · naming

Pick a branching strategy that fits team size and release cadence. Compare trunk-based with Git Flow, and adopt sane naming conventions.

Resolving Conflicts

EN

merge · rebase · conflict markers · tooling

Conflicts are part of working with others. Learn to read conflict markers, choose between merge and rebase, and use VS Code's three-way merge tool.

PR Workflow & Code Review

EN

Opening a PR · description · review etiquette

Open clear, reviewable pull requests. Write good PR descriptions, structure commits, leave actionable review comments, and respond gracefully to feedback.

Advanced Git

EN

interactive rebase · cherry-pick · reflog · bisect

Reach for the power tools when you need them: interactive rebase, cherry-pick, reflog for recovery, and bisect for hunting a regression.

Accessibility Concepts

EN

WCAG · POUR · screen readers · why it matters

Accessibility is not a nice-to-have. Learn the WCAG framework (POUR), how screen readers consume your page, and the legal/business case.

ARIA & Semantic HTML

EN

Roles · states · properties · the first rule of ARIA

ARIA exists for cases where HTML semantics fall short. Use semantic HTML first; reach for ARIA only when needed. Master the basics: role, aria-label, aria-expanded.

Accessible Forms

EN

label · fieldset · errors · keyboard · focus management

Forms are the most accessibility-critical part of your app. Pair labels properly, group with fieldset, announce errors clearly, and manage focus.

Images, Media, Color & Motion

EN

alt text · captions · contrast · prefers-reduced-motion

Make images, video, color, and animation usable for everyone. Write meaningful alt text, caption video, hit contrast ratios, and respect reduced-motion preferences.

XSS — Cross-Site Scripting

EN

Stored · reflected · DOM · escaping · CSP

XSS lets attackers inject scripts that run in your users' browsers. Learn the three flavors, how to escape output, and how Content Security Policy gives defense in depth.

CSRF & Authentication

EN

SameSite cookies · tokens · JWT · session

Protect authenticated endpoints from CSRF. Use SameSite cookies, CSRF tokens, and understand the trade-offs between session cookies and JWT tokens.

SQL Injection

EN

Prepared statements · ORM · input validation

SQL injection is decades old and still happening. Always use prepared statements, validate at boundaries, and treat ORM queries with the same care.

HTTPS, Secrets & Headers

EN

TLS · env vars · .env · CSP · HSTS · helmet

Encrypt traffic with HTTPS, keep secrets out of git, and harden HTTP responses with the right headers (CSP, HSTS, X-Frame-Options).