Course progress0%
Course content
150 min

Final Project: The Order Workbench

Assemble the course increments into a coherent, independently built workbench

By the end of this lesson

  • Assemble the course increments into a coherent, independently built workbench
  • Demonstrate recovery, authority boundaries and preserved business rules

Your brief

Turn the Course 02 order program into a usable, explainable browser workbench. Build it from your own lesson increments. There is no ZIP, starter application or hidden finished solution. The acceptance criteria below are the contract; your file organization may differ.

This is a learning tool with fictional customers and prices. It has a local draft editor, a remote catalogue/quote lab and a separate labelled server confirmation fixture. It does not take payment, reserve stock or create durable customer orders.

Milestone 1: A reliable local editor

Provide named customer fields, customer type, active status and at least one item with name, price and quantity. Use semantic HTML and explicit labels. Parse text before creating domain values. Reuse the pricing policy, including integer cents and overflow guards. Keep confirmed/cancelled local orders from being edited through application actions, not only disabled controls.

For the first item, the baseline premium 150.00 quote is 162.00; quantity 2 is 324.00. Standard quantity 2 is 360.00. Premium exactly 100.00 has no discount and totals 120.00. Invalid input after a valid result must not leave that result looking current.

A multi-item editor is optional. If added, use stable item IDs for editing/removal and retain validation for all items. Do not let row position silently identify a different item after deletion.

Milestone 2: A recoverable draft

Save a versioned valid draft explicitly, show success only after successful storage, and restore through validation plus recalculation. Handle missing/corrupt storage and unavailable saving without crashing. Display external-save notices without replacing unsaved fields. Explain the one-key, last-write limitation.

Milestone 3: Honest remote behavior

Run your own same-origin Node lab. Display catalogue loading, ready, empty and error states. Retry without losing draft data. Demonstrate that an older response cannot overwrite the latest request.

Add the server quote endpoint from the authority lesson. Submit IDs and quantities; the server uses its own catalogue and customer fixtures. Show the remote quote separately from the manually priced local preview. A changed browser price must not alter the authoritative catalogue price.

Add the separate server order fixture with read and confirm routes. Display its ID and revision. Check stale revision, same-key replay and unknown response outcome. Its memory resets when the server restarts. Do not label a local draft "saved to server" because this fixture was confirmed.

Milestone 4: Evidence another person can reproduce

Run domain, parser, transition, storage, adapter, race and confirmation tests. Complete a browser acceptance run for keyboard input, errors, reload, retries and narrow layout. Record exact commands and observed results; distinguish automated from manual checks.

Required handoff

Deliver your source files, package metadata, tests, README, acceptance table and decision journal. The README should include npm start, npm test, the local URL, the need to add browser modules to the server map, how to reset local storage and how to reset server memory.

The journal must contain at least five decisions with an alternative, a reason and evidence. Include authority, stale responses, invalid input, unsaved work and repeat confirmation. Also name one remaining limitation and the consequence for a real deployment.

Stop conditions

Do not mark the project finished if errors are represented as empty data, a total survives invalid input without an obsolete label, a lost response is treated as definite rejection, or a server accepts client-supplied totals. Fix the smallest broken boundary and rerun its counterexample before expanding scope.

Lesson complete?

Your progress is saved on this device.