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.

Short lessons in the same module are combined on one page — 64 lessons across 22 pages.

ℹ️ 64/64 lessons 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 · Text Elements · Links and Images in Depth

EN

DOCTYPE · head/body · core tags · strong · em · blockquote · code · pre · sub/sup · href · target · rel · srcset · figure/figcaption

Learn the structure of an HTML document: DOCTYPE, head/body, and the most common tags. Build a clean foundation before styling or scripting. Use the right tag for the right meaning. Master inline text elements like strong, em, code, and the typographic helpers blockquote, sub, sup. Go beyond <a href="...">. Learn safe targets, accessible image patterns, responsive images with srcset, and figure/figcaption for captions.

Tables · Forms · Semantic HTML

EN

table · thead/tbody · colspan/rowspan · accessibility · input types · label · validation · button · header · nav · main · article · section · aside · footer

Tables are for tabular data. Learn the correct structure (thead/tbody/tfoot), spans, and the small extras that make tables accessible. Forms collect user input. Learn the modern input types, the proper label-for pairing, built-in HTML validation, and the right button types. Replace generic <div> soup with semantic elements that describe meaning. Better SEO, better accessibility, easier styling.

CSS Basics · Color & Typography · The Box Model · Backgrounds, Borders, Shadows

EN

Three ways to apply · selectors · specificity · color systems · web fonts · line-height · content · padding · border · margin · box-sizing · background-image · gradients · box-shadow

Get the fundamentals right: how CSS attaches to HTML, the main selectors, and how specificity decides which rule wins when several match. 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. Every element is a box made of four layers. Master padding vs margin, box-sizing: border-box, and how negative margins behave. Add depth and personality with backgrounds, gradients, and shadows. Use the right tool — performance and aesthetics depend on the choice.

Flexbox · CSS Grid · Responsive Design

EN

display:flex · justify-content · align-items · gap · display:grid · template · areas · auto-fit · viewport · media queries · mobile-first · clamp()

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. Grid handles 2-D layout — rows and columns together. The right tool for dashboards, magazine layouts, and complex page templates. 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 · Control Flow · Functions · Arrays

EN

let · const · primitive vs object · typeof · if · switch · for · while · ternary · declaration · arrow · default params · rest/spread · map · filter · reduce · find · sort

Declare variables properly with let and const, understand JavaScript's primitive and object types, and use typeof to inspect values. Make decisions and repeat actions: if/else chains, switch, for/of/in, while, and the ternary expression for one-liners. Master the three function forms (declaration, expression, arrow), default and rest parameters, and the spread operator. Stop writing for-loops for array transformations. Use map, filter, reduce, find, and sort — the bread and butter of modern JavaScript.

Objects · The DOM · Events · Asynchronous JavaScript

EN

literal · destructuring · Object.keys · spread · shorthand · querySelector · classList · innerHTML vs textContent · click · input · submit · delegation · preventDefault · Promise · async/await · fetch · error handling

Master JavaScript's most-used data structure: objects. Learn destructuring, the shorthand syntax, Object.keys / values / entries, and immutable updates with spread. Reach into the page from JavaScript. Select elements, change content, toggle classes, and create new nodes — without external libraries. Respond to user actions: handle clicks, form input, submissions, and delegate events for dynamic lists. Stop default behaviors when needed. 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 · Node.js Built-in Modules · npm & Packages · Express.js

EN

Why Node? · install · REPL · running scripts · fs · path · os · http · package.json · npm install · scripts · semver · routing · middleware · JSON parser · static files

Run JavaScript outside the browser. Install Node, use the REPL, run scripts, and understand the runtime model and event loop at a high level. 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. Use npm to manage dependencies, run scripts, and publish your own packages. Understand semver and lockfiles. Build real HTTP servers fast with Express. Learn routing, middleware composition, JSON body parsing, and serving static files.

Building a REST API · File-based Database

EN

Resources · status codes · CRUD · CORS · Persisting state · read/write JSON · race conditions

Design and implement a REST API: pick correct status codes, model resources around URLs, support CRUD, and enable CORS for browser clients. 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 · SQL Basics · Advanced SQL

EN

Relational vs NoSQL · schema · primary key · normalization · SELECT · INSERT · UPDATE · DELETE · WHERE · ORDER BY · JOIN · GROUP BY · HAVING · subqueries · indexes

Understand why we need databases, the difference between relational and NoSQL, and core concepts: tables, rows, columns, primary keys, and normalization. Learn the four core SQL operations (CRUD) plus filtering, sorting, and limiting. Practice on a sample SQLite database. Combine data across tables with JOINs, summarize with GROUP BY, filter aggregates with HAVING, and speed things up with indexes.

Node + SQLite · Prisma ORM · MongoDB

EN

better-sqlite3 · prepared statements · transactions · schema · migrate · client · type-safe queries · documents · collections · find · aggregation · Atlas

Use SQLite from Node with better-sqlite3 — a fast, synchronous, zero-config SQL database. Cover prepared statements and transactions. Stop writing raw SQL strings. Prisma gives you a schema file, automatic migrations, and a fully typed client — works with SQLite, PostgreSQL, and more. 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 · Type Aliases & any/unknown/never · Interface vs Type Alias · Classes in TypeScript

EN

Why TS · install · types · tsconfig · type · any · unknown · never · narrowing · interface · extends · structural typing · constructor · public/private · readonly · abstract

Add static types to JavaScript with TypeScript. Set up tsc, learn the primitive types, type inference, and the most useful tsconfig flags. Name complex types with type aliases, understand any (escape hatch), unknown (safe any), and never (impossible). Learn type narrowing. When to use interface and when to use type. Learn extends, declaration merging, and how structural typing decides assignability. Use TypeScript's class features: access modifiers, parameter properties, readonly, and abstract classes for shared base behavior.

Generics · TypeScript + React

EN

<T> · constraints · keyof · utility types · Component props · useState · useEffect · events

Write reusable, type-safe abstractions with generics. Master constraints, keyof, and the built-in utility types Partial, Pick, Omit, Record. Type your React components properly: props, state, refs, and event handlers. Just enough TypeScript to make React feel like a proper language.

Components & useState · useEffect · useContext · useReducer

EN

JSX · props · function components · useState · side effects · cleanup · dependencies · data fetching · Prop drilling · Context.Provider · custom provider · Reducer pattern · dispatch · actions · when over useState

Compose UI from reusable components. Pass data with props, manage local state with useState, and re-render automatically when state changes. Run side effects (data fetches, subscriptions, timers) outside the render cycle. Learn the dependency array, cleanup, and how to fetch data correctly. Stop drilling props through layers. Use Context to share theme, auth, or i18n state — wrapped in a clean custom provider component. Handle complex state with useReducer — a tiny reducer function and dispatched actions. Predictable, testable, and great for multi-step state.

Custom Hooks · Performance · Next.js App Router · Global State Management

EN

Extracting logic · naming rules · composition · memo · useMemo · useCallback · profiler · file-based routing · layouts · loading · error · dynamic routes · When to reach for Zustand / Redux / Jotai · TanStack Query for server state

Move repeated stateful logic into reusable hook functions. Learn the naming rules, common patterns (useToggle, useFetch, useLocalStorage), and composition. 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. 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. 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 · Resolving Conflicts · PR Workflow & Code Review · Advanced Git

EN

Trunk-based · Git Flow · feature branches · naming · merge · rebase · conflict markers · tooling · Opening a PR · description · review etiquette · interactive rebase · cherry-pick · reflog · bisect

Pick a branching strategy that fits team size and release cadence. Compare trunk-based with Git Flow, and adopt sane naming conventions. 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. Open clear, reviewable pull requests. Write good PR descriptions, structure commits, leave actionable review comments, and respond gracefully to feedback. Reach for the power tools when you need them: interactive rebase, cherry-pick, reflog for recovery, and bisect for hunting a regression.

Accessibility Concepts · ARIA & Semantic HTML · Accessible Forms · Images, Media, Color & Motion

EN

WCAG · POUR · screen readers · why it matters · Roles · states · properties · the first rule of ARIA · label · fieldset · errors · keyboard · focus management · alt text · captions · contrast · prefers-reduced-motion

Accessibility is not a nice-to-have. Learn the WCAG framework (POUR), how screen readers consume your page, and the legal/business case. 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. Forms are the most accessibility-critical part of your app. Pair labels properly, group with fieldset, announce errors clearly, and manage focus. 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 · CSRF & Authentication · SQL Injection · HTTPS, Secrets & Headers

EN

Stored · reflected · DOM · escaping · CSP · SameSite cookies · tokens · JWT · session · Prepared statements · ORM · input validation · TLS · env vars · .env · CSP · HSTS · helmet

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. Protect authenticated endpoints from CSRF. Use SameSite cookies, CSRF tokens, and understand the trade-offs between session cookies and JWT tokens. SQL injection is decades old and still happening. Always use prepared statements, validate at boundaries, and treat ORM queries with the same care. Encrypt traffic with HTTPS, keep secrets out of git, and harden HTTP responses with the right headers (CSP, HSTS, X-Frame-Options).