Build and Deploy an Interactive App with React

20 lessons. Build a job-application tracker with React and Vite: components, forms, search, pagination, browser storage, routing, API requests, tests, and deployment. Includes local tasks and downloadable checkpoints.

JavaScript learners ready to build interactive web applications.

Before you start: JavaScript functions, arrays, objects, events and promises. No Python or Django required. Learn these basics in JavaScript Foundations.

20 lessons · Local project tasks and downloadable checkpoints. 2 free lessons. No account needed for free previews.

What you will learn

  • Build a job-application tracker with React, Vite, forms, filtering and pagination.
  • Validate browser data, handle request failures, and test accessible interactions.
  • Publish a static app and add an optional TypeScript component.

Build the project on your computer

Get every lesson, local project task, and project download with the $49 React course, Course access, or the Complete Bundle. The first two lessons and starter are free. This course uses your local Node.js installation.

Project downloads

Ready to put your project online? Compare beginner hosting options. Hosting is optional and purchased separately; you can complete this project locally.

← All courses and learning paths · Suggested next course: TypeScript for JavaScript Developers

Course lessons

01Understand React, the browser, and the app we will buildExplain how components turn data into interface elements and identify what runs in the browser.Free preview02Set up Node, Vite, and your first React pageInstall the pinned starter in an independent folder, run its tests, and identify the React entry point.Free preview03Write JSX that renders safe, semantic HTMLUse JSX expressions, className, and semantic elements while keeping user text escaped.Course04Pass data through reusable componentsExtract a component with explicit props and keep rendering free of data mutation.Course05Render application lists with stable keysMap records to rows using stable identifiers that survive filtering, editing, and reordering.Course06Use state and events without mutating recordsRespond to clicks with state updates and explain when to use a functional state setter.Course07Build controlled, labeled application formsConnect input values to a draft object and submit explicitly without reloading the page.Course08Validate and create a complete applicationValidate strings, dates, statuses, and URLs before committing a normalized new record.Course09Edit and remove records by stable identityImplement immutable updates and confirmed deletion without changing unrelated records.Course10Search and filter without duplicating stateDerive matching records from the source list and combine search and status conditions.Course11Paginate the filtered list and preserve contextClamp page values, slice after filtering, and keep return navigation tied to the active search.Course12Persist browser data with a versioned schemaValidate localStorage data, preserve an empty store, and avoid overwriting damaged or newer data.Course13Use Effects only for external synchronizationDistinguish event logic and derived rendering from storage synchronization and cleanup.Course14Route between pages and protect unsaved editsUse React Router links and parameters with hash-based routes, validated return paths, and a dirty-form blocker.Course15Fetch templates with loading, error, and cancellation statesFetch and validate local JSON while handling HTTP failures, retry, empty responses, and abandoned requests.Course16Test rules and user interactionsRun deterministic domain tests and component tests that protect observable learner workflows.Course17Add a TypeScript boundary without confusing types with validationType component props and status values while continuing to validate unknown runtime data.Course18Debug stale state and review generated codeIsolate state, mutation, and Effect mistakes using a reproduction and a regression test.Course19Build and deploy a static React applicationBuild static assets, verify a production preview, and explain hosting paths, hash routes, and public client variables.Course20Finish the tracker and prove its acceptance criteriaCheck the complete app against a repeatable acceptance checklist and choose a scoped independent improvement.Course