Catalog

Ninety courses. Six benches.

Interface, JavaScript, TypeScript, React, and delivery are the frontend work. Practice is how you scope it, price it, and run it inside an LLC. Every course includes one call a week. Nothing is charged until after that first conversation.

90 courses · 6 benches

90 courses

  • BR-01 · Interface · Beginner

    The Box, on Purpose

    Learn the box model by building a page whose spacing you can explain.

    Box model · Margin · Padding · Display

    Read the brief

    Margin, border, padding, and display, taught by drawing the boxes the browser is already drawing. You will stop adding wrappers to fix a gap you cannot name.

    • Explain how margin, border, and padding add up
    • Choose between block, inline, and inline-block
    • Fix a collapsed margin without another wrapper

    $9.99

    3 weeks · 3 calls

  • BR-01 · Interface · Beginner

    Selectors that Hold

    Write selectors that survive a redesign, and stop fighting specificity you created.

    Selectors · Specificity · Cascade · Inheritance

    Read the brief

    Specificity, inheritance, and the cascade, practiced on a stylesheet that has already gone wrong. You will learn to win a conflict by simplifying it.

    • Predict which rule wins and say why
    • Write a selector that does not depend on a long chain
    • Reset a property without !important

    Before this: The Box, on Purpose

    $14.90

    4 weeks · 4 calls

  • BR-01 · Interface · Intermediate

    Flow, Flex, and When Flex Fails

    Use normal flow and flexbox for the layouts they are actually good at.

    Flow · Flexbox · Alignment · Wrapping

    Read the brief

    A row, a stack, a toolbar, and the case where flex starts fighting you. You will know when to stop and reach for grid instead.

    • Build a row that wraps without a media-query hack
    • Align items on the cross axis on purpose
    • Explain when flex is the wrong tool

    Before this: The Box, on Purpose

    $19.90

    4 weeks · 4 calls

  • BR-01 · Interface · Beginner

    Grid for Pages, Not Demos

    Lay out a real page: header, sidebar, and a content column that behaves.

    Grid · Template areas · Gaps · Placement

    Read the brief

    Named areas, placement, and a breakpoint that changes the page without rewriting the markup. You will build a layout you could hand to a writer.

    • Draw a page as named grid areas
    • Place an item without absolute positioning
    • Change the grid at a breakpoint without rewriting markup

    Before this: Flow, Flex, and When Flex Fails

    $29.90

    5 weeks · 5 calls

  • BR-01 · Interface · Intermediate

    Type on a Screen

    Set type for reading: measure, leading, hierarchy, and the few sizes a page needs.

    Typography · Measure · Leading · Hierarchy

    Read the brief

    A display face and a text face, a measure that stays comfortable, and a scale small enough to remember. You will stop picking font sizes by eye.

    • Set a measure that stays readable
    • Build a type scale with a handful of sizes
    • Pair a display face and a text face

    Before this: The Box, on Purpose

    $39.90

    5 weeks · 5 calls

  • BR-01 · Interface · Intermediate

    Color, Contrast, and States

    Choose colors that pass contrast, including hover, focus, and disabled.

    Color · Contrast · States · Tokens

    Read the brief

    Roles instead of hex values, and states that do not rely on color alone. You will check pairs against WCAG rather than against your monitor.

    • Check a pair against WCAG contrast
    • Design hover and focus without relying on color alone
    • Name colors as roles, not as hex values

    Before this: Type on a Screen

    $49.90

    6 weeks · 6 calls

  • BR-01 · Interface · Advanced

    Forms People Can Finish

    Labels, errors, and keyboards. A form a person can complete without guessing.

    Forms · Labels · Errors · Keyboard

    Read the brief

    Every control gets a name, every error sits next to its field, and the form works from the keyboard. Advanced, because the details are where forms fail.

    • Associate every control with a visible label
    • Show an error next to the field it belongs to
    • Complete the form from the keyboard alone

    Before this: Selectors that Hold

    $59.90

    6 weeks · 6 calls

  • BR-01 · Interface · Intermediate

    Responsive Without a Framework

    Breakpoints, container queries, and fluid space, with no utility framework required.

    Media queries · Container queries · Fluid type · Breakpoints

    Read the brief

    You will choose breakpoints from the content, and use a container query where a viewport query is the wrong question.

    • Choose a breakpoint from the content, not a device list
    • Use a container query where a viewport query is wrong
    • Let spacing scale without a pile of overrides

    Before this: Grid for Pages, Not Demos

    $69.90

    7 weeks · 7 calls

  • BR-01 · Interface · Intermediate

    Motion that Respects People

    Transitions that explain a change, and stay still when someone asks them to.

    Transitions · Reduced motion · Easing · Purpose

    Read the brief

    Animate a property that does not force layout, and honor prefers-reduced-motion as a requirement rather than a nicety.

    • Animate a property that does not force layout
    • Honor prefers-reduced-motion
    • Use motion to show where something went

    Before this: Color, Contrast, and States

    $79.90

    8 weeks · 8 calls

  • BR-01 · Interface · Advanced

    Names, Focus, and the Keyboard

    Accessible names, focus order, and the mistakes that hide a control from assistive tech.

    Accessible name · Focus · Keyboard · Semantics

    Read the brief

    You will give controls names a screen reader can announce, keep focus in visual order, and build a skip link that lands. Advanced, and it is the difference between a page that looks done and one that is.

    • Give a control a name a screen reader can announce
    • Keep focus order the same as visual order
    • Build a skip link that actually lands

    Before this: Forms People Can Finish

    $89.90

    8 weeks · 8 calls

  • BR-01 · Interface · Intermediate

    Custom Properties as a System

    Design tokens in CSS variables: themes, density, and one place a color can change.

    Custom properties · Tokens · Theming · Inheritance

    Read the brief

    A theme as custom properties on a root, an override in one subtree, and a clear line between a variable and a preprocessor constant.

    • Model a theme as custom properties on a root
    • Override a token in one subtree
    • Explain how a variable differs from a preprocessor constant

    Before this: Color, Contrast, and States

    $99.90

    9 weeks · 9 calls

  • BR-01 · Interface · Intermediate

    Component CSS that Stays

    Scope styles to a component without a framework, and keep the cascade from leaking.

    Scope · Cascade layers · Components · Naming

    Read the brief

    Cascade layers, a naming scheme that does not explode, and a third-party widget that no longer restyles your page.

    • Scope a component's CSS so it cannot leak
    • Use a cascade layer to settle third-party styles
    • Name a variant without a combinatorial class list

    Before this: Selectors that Hold

    $109.90

    10 weeks · 10 calls

  • BR-01 · Interface · Intermediate

    Debugging Layout in the Browser

    Read the box overlay, the grid inspector, and the cascade until the bug is obvious.

    DevTools · Box overlay · Cascade · Grid inspector

    Read the brief

    You will be handed broken layouts and asked to name the winning rule before you change anything. Guessing is the habit this course is trying to retire.

    • Find which rule is winning from the cascade panel
    • Measure a box instead of guessing the gap
    • Spot an overflow before it becomes a horizontal scroll

    Before this: Grid for Pages, Not Demos

    $119.90

    11 weeks · 11 calls

  • BR-01 · Interface · Intermediate

    Empty, Error, and Busy States

    The screens people actually see: nothing loaded, something failed, and the wait.

    Empty states · Errors · Loading · Content design

    Read the brief

    An empty state that says what to do, an error that names the failure, and a busy state that does not freeze the page. Twelve weeks, because these are product decisions as much as CSS.

    • Design an empty state that tells the person what to do
    • Write an error that names the failure and the next step
    • Show progress without blocking the whole page

    Before this: Forms People Can Finish

    $129.90

    12 weeks · 12 calls

  • BR-01 · Interface · Advanced

    Capstone: A Finished Interface

    One responsive, accessible interface, from a blank file to something you can hand over.

    Capstone · Responsive · Accessibility · Handoff

    Read the brief

    You choose the page. We hold the line on keyboard access, contrast, type, and a layout that works on a phone and a wide screen. You leave with notes another person could build from.

    • Ship a page that works on a phone and a wide screen
    • Pass a keyboard and contrast pass you run yourself
    • Write notes another developer can build from

    Before this: Names, Focus, and the Keyboard

    $147.90

    12 weeks · 12 calls

  • BR-02 · JavaScript · Beginner

    JavaScript, in the Browser

    Run your first script and see what the browser actually does with it.

    Fundamentals · Values · Control flow · Browser

    Read the brief

    Values, types, and control flow, written as small scripts that change a page. You finish able to read a tutorial without skipping the parts that look like noise.

    • Run JavaScript in the browser and from a file
    • Explain a value, a type, and a variable
    • Read a short script and predict what it does

    $9.99

    3 weeks · 3 calls

  • BR-02 · JavaScript · Beginner

    Values, Scope, and Functions

    Where a name is visible, and what a function remembers about the place it was made.

    Functions · Scope · Parameters · Returns

    Read the brief

    Scope, parameters, and return values, practiced until you can point at a variable and say what it holds. Closures get a proper course later; this is the ground they stand on.

    • Predict what a name refers to at any line
    • Write a function with a clear input and output
    • Find a variable that leaked out of its block

    Before this: JavaScript, in the Browser

    $14.90

    4 weeks · 4 calls

  • BR-02 · JavaScript · Intermediate

    Objects, Arrays, and Methods

    Shape data so the rest of the program stops fighting you.

    Objects · Arrays · Destructuring · Methods

    Read the brief

    Objects, arrays, destructuring, and the methods that replace most loops. You will reshape a tangled script into something you can read aloud.

    • Choose between an array, an object, and a Map
    • Replace most loops with map, filter, and reduce
    • Pull nested values out without a long chain

    Before this: Values, Scope, and Functions

    $19.90

    4 weeks · 4 calls

  • BR-02 · JavaScript · Beginner

    The DOM, No Framework

    Select, create, and update nodes with nothing but the platform.

    DOM · Nodes · Updates · No dependencies

    Read the brief

    A small interactive page and no dependencies. You will see the work a framework is doing for you, which makes the framework less mysterious later.

    • Build an interactive page with no framework
    • Create and update nodes without innerHTML soup
    • Explain what a framework saves you from doing by hand

    Before this: Objects, Arrays, and Methods

    $29.90

    5 weeks · 5 calls

  • BR-02 · JavaScript · Intermediate

    Events, and Who Handles Them

    Clicks, input, and delegation, so you are not attaching a listener to every row.

    Events · Delegation · Bubbling · Input

    Read the brief

    Bubbling, the event target, and one listener that serves a whole list. You will stop leaking listeners as a list grows.

    • Use one listener for a list that changes
    • Tell target from currentTarget
    • Remove a listener when the node goes away

    Before this: The DOM, No Framework

    $39.90

    5 weeks · 5 calls

  • BR-02 · JavaScript · Intermediate

    Promises and async/await

    Compose asynchronous work, and handle every failure on purpose.

    Promises · async/await · Errors · Concurrency

    Read the brief

    You will build a small promise so you can see what await is hiding, then add timeout, retry, and a rejection path that does not vanish.

    • Run async work in parallel when it is safe
    • Handle rejection, timeout, and cancellation
    • Explain what await is waiting on

    Before this: Events, and Who Handles Them

    $49.90

    6 weeks · 6 calls

  • BR-02 · JavaScript · Advanced

    The Event Loop, Slowly

    Why the log lines come out in that order, until it stops surprising you.

    Event loop · Microtasks · Timers · Runtime

    Read the brief

    Call stack, tasks, microtasks, and timers. Advanced, because you will hand-trace mixed snippets and check yourself in the browser until the surprises stop.

    • Predict the order of timers and promises mixed together
    • Explain why a long loop freezes the page
    • Break blocking work into chunks that keep the UI alive

    Before this: Promises and async/await

    $59.90

    6 weeks · 6 calls

  • BR-02 · JavaScript · Intermediate

    Modules and What You Ship

    ES modules, and enough of the build step to know which knob you turned.

    ES modules · Bundling · Splitting · Tooling

    Read the brief

    Imports, the module graph, and a bundle that got too big. You will split the first load without treating the bundler as weather.

    • Explain how a bundler resolves an import
    • Split a bundle so the first page stays small
    • Debug a build that produced the wrong file

    Before this: Objects, Arrays, and Methods

    $69.90

    7 weeks · 7 calls

  • BR-02 · JavaScript · Intermediate

    HTTP from the Page

    Fetch data for an interface, and show the failure when the request does not work.

    fetch · HTTP · JSON · Errors

    Read the brief

    Status codes, JSON, loading, and the empty response. You will stop treating the network as a function that always returns an array.

    • Read a status code and decide what the UI should do
    • Show loading and failure as designed states
    • Cancel a request when the person navigates away

    Before this: Promises and async/await

    $79.90

    8 weeks · 8 calls

  • BR-02 · JavaScript · Advanced

    Forms and the Platform

    Constraint validation, FormData, and a submit that does not depend on a library.

    Forms · FormData · Validation · Submit

    Read the brief

    Advanced, because the platform already does more than most forms use. You will build one that works before any script runs, then improve it.

    • Read a form with FormData
    • Use constraint validation before custom script
    • Submit without losing the person's input on failure

    Before this: Events, and Who Handles Them

    $89.90

    8 weeks · 8 calls

  • BR-02 · JavaScript · Intermediate

    Tests that Watch Behavior

    Tests that click, type, and assert, so a refactor of the internals does not break them.

    Testing · Behavior · Queries · Mocking

    Read the brief

    You will test an interface the way a person uses it, and learn what not to mock. A test that fails for a useless reason is treated as a bug.

    • Write a test that survives an internal refactor
    • Query the UI the way a person finds a control
    • Diagnose a flaky test instead of retrying it

    Before this: Promises and async/await

    $99.90

    9 weeks · 9 calls

  • BR-02 · JavaScript · Intermediate

    Closures, this, and Prototypes

    Where methods come from, and why this changes when you pass a function around.

    Closures · Prototypes · this · Classes

    Read the brief

    The prototype chain, classes, and the three ways to pin this. You will break it on purpose so the fix is a choice, not a superstition.

    • Trace a property lookup up the prototype chain
    • Say what this refers to at a call site
    • Choose a class, a factory, or a plain object

    Before this: Values, Scope, and Functions

    $109.90

    10 weeks · 10 calls

  • BR-02 · JavaScript · Intermediate

    A UI with No Framework

    A multi-screen interface built from the DOM, modules, and fetch. Nothing else.

    DOM · State · Routing · Rendering

    Read the brief

    Routing by hand, state in one place, and a render you can point at. The point is to feel the cost, so a framework later is a trade you understand.

    • Hold UI state in one place you can name
    • Render a view from that state
    • Move between two screens without a framework router

    Before this: The DOM, No Framework

    $119.90

    11 weeks · 11 calls

  • BR-02 · JavaScript · Intermediate

    Main-Thread Performance

    Find the JavaScript that makes a page feel stuck, and move it.

    Performance · Long tasks · Profiling · Scheduling

    Read the brief

    Long tasks, the performance panel, and work that does not belong on the thread painting the page. You will measure before you rewrite.

    • Find a long task in the performance panel
    • Split work so input stays responsive
    • Justify a change with a before-and-after trace

    Before this: The Event Loop, Slowly

    $129.90

    12 weeks · 12 calls

  • BR-02 · JavaScript · Advanced

    Capstone: Framework-Free UI

    One small product in the browser, with tests, failure states, and no framework.

    Capstone · DOM · Testing · Fetch

    Read the brief

    You pick the product. We cut scope until it ships: events, fetch, a form, and tests that describe what a person can do.

    • Ship an interface with no UI framework
    • Cover the critical path with behavior tests
    • Show loading and failure without a blank screen

    Before this: A UI with No Framework

    $147.90

    12 weeks · 12 calls

  • BR-03 · TypeScript · Beginner

    Your First Typed File

    Turn a JavaScript file into a typed one, and read the errors instead of silencing them.

    Annotations · Inference · Errors · Strictness

    Read the brief

    Annotations, inference, and the first time the compiler is right and you are not. You finish comfortable leaving a file stricter than you found it.

    • Add types to a small module without any
    • Read a compiler error back to the real mismatch
    • Let inference work where an annotation adds nothing

    $9.99

    3 weeks · 3 calls

  • BR-03 · TypeScript · Beginner

    Unions and Narrowing

    Model a value that can be more than one shape, and prove which one you have.

    Unions · Narrowing · Discriminants · Control flow

    Read the brief

    Unions, discriminants, and the checks that narrow them. You will stop using a cast to tell the compiler to trust you.

    • Model a value as a union instead of optional fields
    • Narrow a union with a check the compiler believes
    • Remove a cast that was hiding a real case

    Before this: Your First Typed File

    $14.90

    4 weeks · 4 calls

  • BR-03 · TypeScript · Intermediate

    Props as a Data Model

    Design a component's props so the illegal combinations cannot be passed.

    Props · Variants · Required · API design

    Read the brief

    Required, optional, and the union of variants. You will look at a props type and see the product decisions inside it.

    • Design props that reject an illegal combination
    • Choose a variant union over a pile of booleans
    • Name a callback's arguments so the caller cannot drift

    Before this: Unions and Narrowing

    $19.90

    4 weeks · 4 calls

  • BR-03 · TypeScript · Beginner

    Types for Component State

    Type the states a screen moves through: empty, loading, ready, failed.

    State · Unions · Loading · Screens

    Read the brief

    A beginner-length course on a single idea. The state object stops being a bag of flags that can all be true at once.

    • Model loading, empty, ready, and failed as a union
    • Render each state without checking three booleans
    • Make the impossible combination a type error

    Before this: Unions and Narrowing

    $29.90

    5 weeks · 5 calls

  • BR-03 · TypeScript · Intermediate

    Generics You Can Read

    Type parameters for the helpers you actually write, and the times a generic is worse.

    Generics · Constraints · Inference · Overloads

    Read the brief

    Constraints, defaults, and inference sites, taught by removing duplication. Equal time goes to the overload that would have been clearer.

    • Write a generic helper another person can call
    • Add a constraint when the body needs one
    • Prefer an overload when a generic is harder to read

    Before this: Props as a Data Model

    $39.90

    5 weeks · 5 calls

  • BR-03 · TypeScript · Intermediate

    Discriminated Unions in UI

    One field that says which variant you are in, used all the way through the render.

    Discriminated unions · Exhaustiveness · UI state · Switch

    Read the brief

    Menus, toasts, and form steps, each modeled so the render function is a switch the compiler can exhaust.

    • Model a component as an exhaustive switch
    • Add a variant without leaving a silent fall-through
    • Keep the discriminant next to the data it describes

    Before this: Types for Component State

    $49.90

    6 weeks · 6 calls

  • BR-03 · TypeScript · Advanced

    Typing the Boundary

    unknown at the edge, and a parse step before the UI ever sees the data.

    unknown · Parsing · Boundaries · Validation

    Read the brief

    Advanced. JSON, query strings, and form payloads arrive untyped no matter what your interfaces say. You will validate them and type the result, not the wish.

    • Accept external data as unknown
    • Parse it into a type the UI can trust
    • Show a failure when the payload is not the shape you hoped

    Before this: Unions and Narrowing

    $59.90

    6 weeks · 6 calls

  • BR-03 · TypeScript · Intermediate

    Utility Types in Anger

    Pick, Omit, Partial, and the mapped types behind them, used on a real props object.

    Utility types · Mapped types · Pick · Partial

    Read the brief

    You will derive a type instead of copying it, and you will notice when the utility made the API harder to read.

    • Derive a props variant with a utility type
    • Read a mapped type and say what it produces
    • Inline a utility when the name is hiding the shape

    Before this: Generics You Can Read

    $69.90

    7 weeks · 7 calls

  • BR-03 · TypeScript · Intermediate

    Context and Component Types

    Type a provider, a consumer, and the children slot without an any escape hatch.

    Context · Children · Component types · Providers

    Read the brief

    ComponentType, props of a child, and a context value that cannot be undefined by accident.

    • Type a context value so missing provider is a bug
    • Describe children more tightly than ReactNode when you can
    • Pass a component as a prop without losing its props

    Before this: Props as a Data Model

    $79.90

    8 weeks · 8 calls

  • BR-03 · TypeScript · Advanced

    Asserting Types, Not Casting

    Tests for your types, so a refactor cannot quietly loosen them.

    Assertions · Tests · Predicates · Strictness

    Read the brief

    Advanced. ExpectType-style checks and assertion functions. You will catch a type that got wider before a user catches the bug.

    • Write a type-level assertion that fails the build
    • Use a predicate to narrow, not a cast
    • Notice when a public type got wider

    Before this: Typing the Boundary

    $89.90

    8 weeks · 8 calls

  • BR-03 · TypeScript · Intermediate

    Forms with a Schema

    One schema that types the values, the errors, and the payload you send.

    Forms · Schemas · Errors · Payloads

    Read the brief

    You will stop maintaining a type, a validator, and a default object as three drifting copies of the same form.

    • Derive the value type from one schema
    • Type field errors so a missing key is a compile error
    • Submit a payload that matches the schema

    Before this: Typing the Boundary

    $99.90

    9 weeks · 9 calls

  • BR-03 · TypeScript · Intermediate

    React Types Without any

    Events, refs, and generic components, typed without reaching for any.

    React · Events · Refs · Generics

    Read the brief

    The React types people silence. You will type a change handler, a ref to a DOM node, and a list component that keeps the item type.

    • Type an event handler without any
    • Type a ref to the node you actually have
    • Write a generic list that preserves the item type

    Before this: Props as a Data Model

    $109.90

    10 weeks · 10 calls

  • BR-03 · TypeScript · Intermediate

    Module Boundaries

    What a package exports, and the internal types that should stay internal.

    Exports · Public API · Packages · Encapsulation

    Read the brief

    Public types, path exports, and a barrel file that accidentally became your API. You will draw a line and keep it.

    • Mark a type as public or internal on purpose
    • Stop a barrel file from widening your API
    • Change an internal type without a downstream break

    Before this: Utility Types in Anger

    $119.90

    11 weeks · 11 calls

  • BR-03 · TypeScript · Intermediate

    A Typed Design System

    Tokens, variants, and component props that agree with each other.

    Design system · Variants · Tokens · Props

    Read the brief

    A button, a field, and a stack, with variant names that exist in exactly one place. Twelve weeks of making the system harder to misuse.

    • Type a variant so a typo will not compile
    • Share a token type between CSS and props
    • Add a component without inventing a second naming scheme

    Before this: React Types Without any

    $129.90

    12 weeks · 12 calls

  • BR-03 · TypeScript · Advanced

    Capstone: Types that Hold

    Take a loose UI module and make the illegal states unrepresentable.

    Capstone · Unions · Boundaries · Refactor

    Read the brief

    You bring a real file, or we give you one. The capstone is the diff: fewer casts, a parsed boundary, and a state union the render trusts.

    • Replace a bag of flags with a state union
    • Parse data at the boundary instead of casting it
    • Leave a module another person can extend without any

    Before this: Typing the Boundary

    $147.90

    12 weeks · 12 calls

  • BR-04 · React · Beginner

    Components, from Scratch

    JSX, props, and a component that renders one thing you can point at.

    JSX · Props · Components · Rendering

    Read the brief

    No state yet. You will build small components, pass data in, and see a render as a function of that data.

    • Write a component as a function of its props
    • Compose two components without copying markup
    • Read a JSX tree and say what the DOM will be

    $9.99

    3 weeks · 3 calls

  • BR-04 · React · Beginner

    State Is a Snapshot

    useState, and the habit of treating state as the current value rather than a box you mutate.

    useState · Snapshots · Updates · Derived state

    Read the brief

    Updates, batching, and the bug where you read state and expect it to have changed already. You will stop storing what you can derive.

    • Update state without mutating the previous value
    • Derive a value during render instead of storing it
    • Explain why a state read can be stale

    Before this: Components, from Scratch

    $14.90

    4 weeks · 4 calls

  • BR-04 · React · Intermediate

    Rendering, and Why It Happened

    What causes a render, and how to tell a useful one from an accidental one.

    Rendering · Props · Parent state · Commits

    Read the brief

    Parent renders, state updates, and a component that rendered because its parent did. You will look at the commit rather than guessing.

    • Say why a component rendered
    • Lift state only as far as the components that need it
    • Spot a render caused by a new object identity

    Before this: State Is a Snapshot

    $19.90

    4 weeks · 4 calls

  • BR-04 · React · Beginner

    Lists, Keys, and Identity

    Keys that match identity, so a list does not reuse the wrong row's state.

    Lists · Keys · Identity · State

    Read the brief

    A beginner course on one sharp edge. Index keys, stable ids, and the input that kept another row's text.

    • Choose a key that matches the item's identity
    • Explain what breaks when the key is the index
    • Reset a row's state when the item actually changes

    Before this: State Is a Snapshot

    $29.90

    5 weeks · 5 calls

  • BR-04 · React · Intermediate

    Events and Controlled Inputs

    Clicks and fields, with state that is the source of truth for the input.

    Events · Inputs · Controlled · Forms

    Read the brief

    Controlled and uncontrolled, and the form that fights its user because both are trying to own the value.

    • Handle an event without reading the DOM afterwards
    • Make an input controlled for a reason
    • Leave an input uncontrolled when state would add nothing

    Before this: State Is a Snapshot

    $39.90

    5 weeks · 5 calls

  • BR-04 · React · Intermediate

    Composition over Flags

    Children, slots, and the component that grew a boolean for every special case.

    Composition · Children · Slots · API

    Read the brief

    You will take a component full of flags and split it into pieces that compose. The API gets smaller on purpose.

    • Replace a pile of boolean props with composition
    • Pass a slot without cloning an element
    • Keep a component's public API smaller than its internals

    Before this: Components, from Scratch

    $49.90

    6 weeks · 6 calls

  • BR-04 · React · Advanced

    Server and Client UI

    Which part of a screen can render on the server, and which part needs the client.

    Server components · Client · Boundaries · Data

    Read the brief

    Advanced. Server components, client boundaries, and the fetch that does not belong in an effect. You will draw the line before you write the file.

    • Put a client boundary at the smallest component that needs it
    • Fetch on the server when the data is ready there
    • Explain what a client component ships to the browser

    Before this: Rendering, and Why It Happened

    $59.90

    6 weeks · 6 calls

  • BR-04 · React · Intermediate

    Fetching for a Screen

    Load data for a view, and render loading and failure as part of the UI.

    Data · Loading · Errors · Race conditions

    Read the brief

    Where the request lives, what happens on retry, and the race when the person navigates mid-flight.

    • Render loading, error, and ready as separate UI
    • Ignore a response that belongs to an old screen
    • Retry without duplicating the request logic

    Before this: Events and Controlled Inputs

    $69.90

    7 weeks · 7 calls

  • BR-04 · React · Intermediate

    Sharing State on Purpose

    Context, and the alternatives, so a provider is a decision rather than a reflex.

    Context · Lifting state · Providers · Colocation

    Read the brief

    Lifting state, composition, and context for something that is truly ambient. You will remove a provider that did not need to exist.

    • Lift state to the nearest shared parent
    • Use context for a value that is genuinely ambient
    • Remove a provider that was hiding a prop

    Before this: Composition over Flags

    $79.90

    8 weeks · 8 calls

  • BR-04 · React · Advanced

    Hooks with One Job

    Extract a hook when it has one reason to exist, and a test that says what that is.

    Hooks · Extraction · Dependencies · Testing

    Read the brief

    Advanced. Naming, dependencies, and the hook that became a second component with nowhere to put markup. You will put the logic back if the hook made it worse.

    • Extract a hook that does one thing
    • Name its inputs so the call site stays honest
    • Test the behavior without mounting a whole screen

    Before this: Sharing State on Purpose

    $89.90

    8 weeks · 8 calls

  • BR-04 · React · Intermediate

    Testing React like a User

    Render, click, and assert. Tests that do not know which hook you used.

    Testing Library · Roles · Events · Async

    Read the brief

    Queries by role, user events, and the async UI. You will change the implementation and watch the test stay green for the right reason.

    • Query a component the way a person finds it
    • Assert on what changed on screen
    • Refactor a component without rewriting its test

    Before this: Events and Controlled Inputs

    $99.90

    9 weeks · 9 calls

  • BR-04 · React · Intermediate

    When Not to Memo

    memo, useMemo, and useCallback, mostly so you can take them out.

    memo · useMemo · Rendering · Measurement

    Read the brief

    Measure a slow render, then decide. You will remove memoization that was copying props and calling it performance.

    • Find a render that is actually expensive
    • Memoize a value only when identity matters
    • Delete a memo that was not earning its place

    Before this: Rendering, and Why It Happened

    $109.90

    10 weeks · 10 calls

  • BR-04 · React · Intermediate

    Accessible React

    Focus, dialogs, and names, in a component tree that re-renders.

    Accessibility · Focus · Dialogs · Names

    Read the brief

    A dialog that traps and restores focus, a button that is a button, and a live region that announces the change you just rendered.

    • Move focus when a dialog opens and restore it on close
    • Expose a name on a control you rendered
    • Announce a status change without stealing focus

    Before this: Composition over Flags

    $119.90

    11 weeks · 11 calls

  • BR-04 · React · Intermediate

    A Small Design System

    A handful of React components that share tokens, variants, and behavior.

    Design system · Variants · Tokens · Components

    Read the brief

    Button, field, stack, and dialog, documented by their props. Twelve weeks of making the next screen cheaper to build than the last.

    • Build a component API another person can use without asking
    • Share tokens between components
    • Add a variant without a one-off class name

    Before this: Composition over Flags

    $129.90

    12 weeks · 12 calls

  • BR-04 · React · Advanced

    Capstone: A React Product

    A multi-screen React interface: state, data, tests, and a dialog that works.

    Capstone · State · Testing · Accessibility

    Read the brief

    You choose the product. We hold the line on where state lives, what is tested, and whether a keyboard user can finish the main task.

    • Ship a multi-screen React interface
    • Cover the main task with tests a user could recognize
    • Explain where each piece of state lives

    Before this: Fetching for a Screen

    $147.90

    12 weeks · 12 calls

  • BR-05 · Delivery · Beginner

    How a Page Actually Loads

    HTML, CSS, and JavaScript, in the order the browser actually needs them.

    Loading · Parser · Render · Scripts

    Read the brief

    Parser, render, and the script that blocked both. A short course for people who have built pages and never watched one load.

    • Describe the path from response to first paint
    • Find a script that blocked rendering
    • Order assets so the page can paint sooner

    $9.99

    3 weeks · 3 calls

  • BR-05 · Delivery · Beginner

    CSS and JS that Fit

    Ship less on the first view, without cutting a feature to do it.

    Bundles · CSS · Splitting · First load

    Read the brief

    Unused CSS, a bundle that grew a charting library for one page, and a split you can explain. Beginner on purpose: the habit starts early.

    • Find code the first view does not need
    • Split a route so it loads with its screen
    • Say what the first load contains

    Before this: How a Page Actually Loads

    $14.90

    4 weeks · 4 calls

  • BR-05 · Delivery · Intermediate

    Images, Fonts, Late Paint

    The assets that show up late and shove the layout when they arrive.

    Images · Fonts · Layout shift · Priority

    Read the brief

    Dimensions, font loading, and a hero image that should not be the last thing on the wire. You will reserve the space before the bytes arrive.

    • Reserve space so an image does not shift the page
    • Load a font without hiding the text
    • Prioritize the image the first view actually shows

    Before this: How a Page Actually Loads

    $19.90

    4 weeks · 4 calls

  • BR-05 · Delivery · Beginner

    Measuring a Single Page

    One page, a lab trace, and a number you can compare next week.

    LCP · INP · CLS · Traces

    Read the brief

    LCP, INP, and CLS, taken on a page you control. You will learn to distrust a single anecdote and keep the trace.

    • Record a trace for a page you can reload
    • Name which metric moved and which did not
    • Compare two traces of the same flow

    Before this: How a Page Actually Loads

    $29.90

    5 weeks · 5 calls

  • BR-05 · Delivery · Intermediate

    Caching an Interface

    What the browser may reuse, and what must be fresh because the UI changed.

    Caching · Headers · Assets · Freshness

    Read the brief

    Cache headers for assets, and the data request that should not be cached the same way. You will stop cache-busting everything out of fear.

    • Cache a fingerprinted asset for a long time
    • Keep a data request fresh when the screen must be
    • Explain a stale UI as a caching choice

    Before this: CSS and JS that Fit

    $39.90

    5 weeks · 5 calls

  • BR-05 · Delivery · Intermediate

    Tokens that Survive Handoff

    Name color, space, and type once, in a form both design and code can keep.

    Tokens · Naming · Handoff · Theming

    Read the brief

    A small token set, a naming scheme, and the drift that happens when the file and the drawing disagree. You will pick the file that wins.

    • Name a token by role rather than by appearance
    • Change a theme by changing tokens
    • Point at one source when design and code disagree

    Before this: Color, Contrast, and States

    $49.90

    6 weeks · 6 calls

  • BR-05 · Delivery · Advanced

    Animation on the Compositor

    Motion that stays off the main thread, and the properties that never will.

    Animation · Compositor · Transforms · Frames

    Read the brief

    Advanced. Transform and opacity, and the height animation that forced layout on every frame. You will measure the frame, not the feeling.

    • Animate on the compositor when the effect allows it
    • Spot an animation that forces layout
    • Drop motion that costs a frame and explains nothing

    Before this: Motion that Respects People

    $59.90

    6 weeks · 6 calls

  • BR-05 · Delivery · Intermediate

    Failure States in the UI

    Offline, timeout, and the partial page. Design them before the incident.

    Failure · Offline · Partial UI · Copy

    Read the brief

    A screen that still tells the truth when the request fails, including which part succeeded. You will write the copy with the layout.

    • Show a failed request without a blank screen
    • Keep the part of the page that still loaded
    • Offer a next step that matches the failure

    Before this: Empty, Error, and Busy States

    $69.90

    7 weeks · 7 calls

  • BR-05 · Delivery · Intermediate

    Language and Locale in UI

    Strings, direction, and formats, so a second language is a file and not a rewrite.

    i18n · Locale · Direction · Copy

    Read the brief

    Externalized copy, dates and numbers that follow the locale, and a layout that survives a longer word.

    • Externalize a string instead of burying it in JSX
    • Format a date and a number for the reader's locale
    • Let a layout survive a longer translation

    Before this: Type on a Screen

    $79.90

    8 weeks · 8 calls

  • BR-05 · Delivery · Advanced

    An Audit You Can Repeat

    An accessibility pass with a list you can run again next month.

    Accessibility · Audit · Keyboard · Contrast

    Read the brief

    Advanced. Keyboard, names, contrast, and zoom, written down so the audit is a practice and not a one-time heroics. You will file issues a developer can close.

    • Run a repeatable pass on one flow
    • Write a finding that names the fix
    • Re-test the finding after the change

    Before this: Names, Focus, and the Keyboard

    $89.90

    8 weeks · 8 calls

  • BR-05 · Delivery · Intermediate

    End-to-End for One Flow

    One critical path, automated, from a clean page to a finished task.

    End-to-end · Flows · Fixtures · CI

    Read the brief

    A single end-to-end test you trust, and the fixtures that keep it from being theatre. You will not try to automate the whole product.

    • Automate one flow a person can finish
    • Isolate the test data so the run is repeatable
    • Read a failure as a product bug or a test bug

    Before this: Tests that Watch Behavior

    $99.90

    9 weeks · 9 calls

  • BR-05 · Delivery · Intermediate

    Versioning a Design System

    Ship a component change to more than one app without a surprise.

    Versions · Changesets · Breaking changes · Adoption

    Read the brief

    Versions, changesets, and a breaking change in a button that three products use. You will write the note the other teams needed.

    • Version a component package on purpose
    • Mark a breaking change before consumers hit it
    • Migrate one consumer without a flag day

    Before this: A Small Design System

    $109.90

    10 weeks · 10 calls

  • BR-05 · Delivery · Intermediate

    The Framework You Deploy

    Use one production framework as a delivery tool, not as a personality.

    Routing · Server rendering · Deploy · Boundaries

    Read the brief

    Routing, server rendering, and the client boundary, on a framework you will actually deploy. The course is about the interface that ships, not about collecting frameworks.

    • Render a page on the server when the data allows it
    • Keep client JavaScript to the part that needs it
    • Deploy the page and point at what the browser received

    Before this: Server and Client UI

    $119.90

    11 weeks · 11 calls

  • BR-05 · Delivery · Intermediate

    Watching the Frontend Live

    Errors, slow interactions, and a release you can connect to a regression.

    Errors · RUM · Releases · Regression

    Read the brief

    Client errors with enough context to reproduce, and a metric that moved after a deploy. Twelve weeks of watching a UI the way you watch a server.

    • Capture a client error you can reproduce
    • Tie a slow interaction to a release
    • Decide whether a regression is worth rolling back

    Before this: Measuring a Single Page

    $129.90

    12 weeks · 12 calls

  • BR-05 · Delivery · Advanced

    Capstone: Make a Page Fast

    Take a slow page and make it faster, with traces that show the change.

    Capstone · Performance · Traces · Shipping

    Read the brief

    You bring a page or we give you one. The capstone is a before, an after, and a written reason for each change. Hope is not a result.

    • Improve a page you measured before you touched it
    • Keep a trace for every change you keep
    • Write up what moved and what you left alone

    Before this: Measuring a Single Page

    $147.90

    12 weeks · 12 calls

  • BR-06 · Practice · Beginner

    What a Studio Sells

    Name the frontend work a client is actually buying, in language a non-engineer can use.

    Positioning · Offers · Clients · Outcomes

    Read the brief

    Interfaces, not hours of 'coding.' You will describe an engagement as an outcome a buyer can recognize, and notice when you are selling time instead.

    • Describe an offer as an outcome, not a pile of tasks
    • Tell a frontend engagement from a generalist one
    • Say no to work that is not the offer

    $9.99

    3 weeks · 3 calls

  • BR-06 · Practice · Beginner

    Scoping an Engagement

    Turn a vague interface request into a scope you could start on Monday.

    Scope · Discovery · Boundaries · Briefs

    Read the brief

    Pages, states, and the things that are out. You will write a scope a client can disagree with before the work begins, which is the point.

    • List the screens and states that are in scope
    • Write exclusions a client can see
    • Spot a request that changes the scope

    Before this: What a Studio Sells

    $14.90

    4 weeks · 4 calls

  • BR-06 · Practice · Intermediate

    Pricing Frontend Work

    Price an interface engagement from the scope, not from a number you hoped would land.

    Pricing · Scope · Risk · Revisions

    Read the brief

    Weeks, risk, and the cost of revisions. You will put a price next to a scope and be able to say what would change it.

    • Price from a written scope
    • Name the risk that moved the number
    • Change the price when the scope changes

    Before this: Scoping an Engagement

    $19.90

    4 weeks · 4 calls

  • BR-06 · Practice · Beginner

    A Statement of Work

    Write the document that says what will be delivered, by when, and what done means.

    Statement of work · Deliverables · Assumptions · Done

    Read the brief

    A beginner pass at a statement of work for a frontend engagement: deliverables, assumptions, and a definition of done a designer and a client can both read.

    • Write deliverables a client can check
    • List the assumptions the price depends on
    • Define done without a vague 'polish' line

    Before this: Scoping an Engagement

    $29.90

    5 weeks · 5 calls

  • BR-06 · Practice · Intermediate

    The Weekly Client Review

    Run the meeting where the interface is reviewed, and decisions get written down.

    Reviews · Clients · Decisions · Notes

    Read the brief

    A standing review, a short agenda, and notes that say what changed. You will stop collecting feedback in three chat threads.

    • Run a review with an agenda
    • Write down the decision, not only the comment
    • Park feedback that is a new scope

    Before this: A Statement of Work

    $39.90

    5 weeks · 5 calls

  • BR-06 · Practice · Intermediate

    Your First Contractor

    Bring a second person onto a frontend engagement without losing the thread.

    Contractors · Briefs · Review · Handoff

    Read the brief

    A brief, access, review, and the work you still own. Hiring here means a contractor on a scoped interface, not building a department.

    • Brief a contractor with the scope, not a vibe
    • Review their interface work against that brief
    • Keep client decisions in one place

    Before this: The Weekly Client Review

    $49.90

    6 weeks · 6 calls

  • BR-06 · Practice · Advanced

    An LLC, in Plain Language

    What a limited liability company is, and what it does not do, for someone opening a studio.

    LLC · Liability · Members · Entity

    Read the brief

    Members, liability, and the difference between you and the company, taught with a frontend studio as the example. This is education for people who build interfaces. It is not legal, tax, or accounting advice, and it is not a substitute for a Missouri attorney or a CPA.

    • Explain what an LLC separates from its members
    • Name what forming one does not do by itself
    • List the questions to take to an attorney before you file

    Before this: What a Studio Sells

    $59.90

    6 weeks · 6 calls

  • BR-06 · Practice · Intermediate

    The Operating Agreement

    Read an operating agreement as the rules of the company, not as paperwork to sign blind.

    Operating agreement · Ownership · Votes · Members

    Read the brief

    Ownership, votes, and what happens if a member leaves, walked through on a short agreement for a studio. This is education for people who build interfaces. It is not legal, tax, or accounting advice, and it is not a substitute for a Missouri attorney or a CPA.

    • Find who owns what in an operating agreement
    • Find how a decision gets made
    • List the clauses you would ask a lawyer to explain

    Before this: An LLC, in Plain Language

    $69.90

    7 weeks · 7 calls

  • BR-06 · Practice · Intermediate

    Who Owns the Interface

    IP, work product, and the clause that says who owns the UI when the invoice is paid.

    IP · Assignment · Contracts · Portfolio

    Read the brief

    Assignment, license, and the portfolio exception, read as part of a client contract. This is education for people who build interfaces. It is not legal, tax, or accounting advice, and it is not a substitute for a Missouri attorney or a CPA.

    • Tell an assignment from a license
    • Find the clause that transfers the interface
    • Ask for a portfolio right before the work starts

    Before this: A Statement of Work

    $79.90

    8 weeks · 8 calls

  • BR-06 · Practice · Advanced

    Invoices and the Books

    Send an invoice from the company, and keep a record that is not a folder of screenshots.

    Invoices · Books · Milestones · Records

    Read the brief

    Deposits, milestones, and a simple set of books for a studio LLC. Advanced only because the habits are exact. This is education for people who build interfaces. It is not legal, tax, or accounting advice, and it is not a substitute for a Missouri attorney or a CPA.

    • Invoice from the company, not from a personal note
    • Tie a payment to a milestone in the scope
    • Keep a record you could hand to a bookkeeper

    Before this: Pricing Frontend Work

    $89.90

    8 weeks · 8 calls

  • BR-06 · Practice · Intermediate

    Leading a Frontend Trio

    Lead three people building one interface: roles, review, and the decision you will not delegate.

    Leadership · Review · Sequencing · Decisions

    Read the brief

    A tech lead's week on a small frontend team. Critique, sequencing, and the call that is still yours when the group disagrees.

    • Split an interface across three people without collisions
    • Run a critique that changes the work
    • Name the decision you are not delegating

    Before this: Your First Contractor

    $99.90

    9 weeks · 9 calls

  • BR-06 · Practice · Intermediate

    Estimates You Can Defend

    Estimate a frontend slice in a way you can explain when it slips.

    Estimates · Ranges · Unknowns · Updates

    Read the brief

    Ranges, unknowns, and the update you send when the range was wrong. The estimate is a communication, not a promise you whisper.

    • Give a range and the assumption under it
    • Surface an unknown before it becomes a slip
    • Update the estimate in writing when the assumption breaks

    Before this: Pricing Frontend Work

    $109.90

    10 weeks · 10 calls

  • BR-06 · Practice · Intermediate

    Reviews that Change the Work

    A design and code review cadence that produces a decision, not a meeting.

    Critique · Cadence · Notes · Follow-up

    Read the brief

    Interface critique, a written note, and a follow-up that checks the change landed. Eleven weeks of making review a practice instead of a performance.

    • Run a critique with a question, not a tour
    • Write the change you expect to see
    • Check that the change landed

    Before this: The Weekly Client Review

    $119.90

    11 weeks · 11 calls

  • BR-06 · Practice · Intermediate

    When the Studio Outgrows You

    The moment the company has work you should not be the only person who can do.

    Growth · Roles · Delegation · Clients

    Read the brief

    Roles, a second lead, and the client relationship that still sits with the company. Twelve weeks on growing past the founder without pretending you are a large firm.

    • Name the work that should leave your desk
    • Hand a client relationship to the company, not to chaos
    • Write a role before you hire for a vibe

    Before this: Leading a Frontend Trio

    $129.90

    12 weeks · 12 calls

  • BR-06 · Practice · Advanced

    Capstone: Open the Studio

    A plan to open a frontend studio as an LLC: offer, scope, price, and the questions for counsel.

    Capstone · LLC · Offer · Checklist

    Read the brief

    You will leave with an offer, a sample scope, a price, a list of operating-agreement questions, and a checklist of what you will not decide alone. This is education for people who build interfaces. It is not legal, tax, or accounting advice, and it is not a substitute for a Missouri attorney or a CPA.

    • Write the offer the studio will sell
    • Attach a scope and a price to that offer
    • List the formation questions you will take to a lawyer

    Before this: An LLC, in Plain Language

    $147.90

    12 weeks · 12 calls